Skip to content
This repository has been archived by the owner on Dec 21, 2023. It is now read-only.

Commit

Permalink
ci: Introduce release automation (#4587)
Browse files Browse the repository at this point in the history
  • Loading branch information
mowies committed Sep 27, 2021
1 parent 91b933a commit fe69ded
Show file tree
Hide file tree
Showing 18 changed files with 315 additions and 111 deletions.
23 changes: 23 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!-- Please use this template for your pull request. -->
<!-- Please use the sections that you need and delete other sections -->

## This PR
<!-- add the description of the PR here -->

- adds this new feature

### Related Issues
<!-- add here the GitHub issue that this PR resolves if applicable -->

Fixes #1234523

### Notes
<!-- any additional notes for this PR -->

### Follow-up Tasks
<!-- anything that is related to this PR but not done here should be noted under this section -->
<!-- if there is a need for a new issue, please link it here -->

### How to test
<!-- if applicable, add testing instructions under this section -->

13 changes: 13 additions & 0 deletions .github/semantic.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
titleOnly: true
types:
- feat # A new feature
- fix # A bug fix
- build # Changes that affect the build system or external dependencies
- chore # Other changes that don't modify src or test files
- ci # Changes to our CI configuration files and scripts
- docs # Documentation only changes
- perf # A code change that improves performance
- refactor # A code change that neither fixes a bug nor adds a feature
- revert # Reverts a previous commit
- style # Changes that do not affect the meaning of the code
- test # Adding missing tests or correcting existing tests
63 changes: 63 additions & 0 deletions .github/workflows/pre-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Pre-Release
on:
workflow_dispatch:
env:
NODE_VERSION: 14
KEPTN_BOT_NAME: "Keptn Bot"
KEPTN_BOT_EMAIL: "keptn-bot <[email protected]>"
RELEASE_NOTES_FILE: "RELEASE-BODY.md"
PRERELEASE_KEYWORD: "next"
defaults:
run:
shell: bash
jobs:
pre-release:
name: Pre-Release
runs-on: ubuntu-20.04
steps:
- name: Checkout repo
uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}

- name: Configure Git
env:
KEPTN_BOT_NAME: ${{ env.KEPTN_BOT_NAME }}
KEPTN_BOT_EMAIL: ${{ env.KEPTN_BOT_EMAIL }}
run: |
git config user.name "$KEPTN_BOT_NAME"
git config user.email "$KEPTN_BOT_EMAIL"
- name: Prepare GitHub Release Notes
run: |
npx standard-version@^9.3.1 --prerelease "${{ env.PRERELEASE_KEYWORD }}" -i "${{ env.RELEASE_NOTES_FILE }}" --skip.commit --skip.tag --header ""
- name: Enhance Release Notes with Build Metadata
run: |
echo "#### Build Information" >> "${{ env.RELEASE_NOTES_FILE }}"
echo "" >> "${{ env.RELEASE_NOTES_FILE }}"
echo "**GitHub Actions Run:** $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" >> "${{ env.RELEASE_NOTES_FILE }}"
- name: Create pre-release package
id: create-release-package
env:
GITHUB_TOKEN: ${{ secrets.KEPTN_BOT_TOKEN }}
run: |
echo "🚀 Creating pre-release package now..."
npx standard-version@^9.3.1 --prerelease "${{ env.PRERELEASE_KEYWORD }}" --skip.commit --skip.changelog
echo "::set-output name=tag-name::$(git describe --tags --abbrev=0)"
echo "⚡️ Pushing changes to remote repository..."
git push --follow-tags
- name: Create GitHub Release
env:
GITHUB_TOKEN: ${{ secrets.KEPTN_BOT_TOKEN }}
RELEASE_TAG: ${{ steps.create-release-package.outputs.tag-name }}
run: |
gh release create "$RELEASE_TAG" --prerelease --notes-file "${{ env.RELEASE_NOTES_FILE }}" --title "$RELEASE_TAG"
79 changes: 79 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: Release
on:
workflow_dispatch:
env:
NODE_VERSION: 14
KEPTN_BOT_NAME: "Keptn Bot"
KEPTN_BOT_EMAIL: "keptn-bot <[email protected]>"
RELEASE_NOTES_FILE: "RELEASE-BODY.md"
defaults:
run:
shell: bash
jobs:
release:
name: "Release"
runs-on: ubuntu-20.04
steps:
- name: Checkout repo
uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}

- name: Configure Git
env:
KEPTN_BOT_NAME: ${{ env.KEPTN_BOT_NAME }}
KEPTN_BOT_EMAIL: ${{ env.KEPTN_BOT_EMAIL }}
run: |
git config user.name "$KEPTN_BOT_NAME"
git config user.email "$KEPTN_BOT_EMAIL"
- name: Prepare GitHub Release Notes
run: |
# Delete pre-release tags to be able to generate a changelog from last 'real' release
# This is a workaround for a known limitation of standard-version
# Reference: https://github.com/conventional-changelog/standard-version/issues/203#issuecomment-872415140
git tag -l | grep -vE '^v(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$' | xargs git tag -d
npx standard-version@^9.3.1 -i "${{ env.RELEASE_NOTES_FILE }}" --skip.commit --skip.tag --header ""
- name: Temporarily disable "include administrators" branch protection
uses: benjefferies/branch-protection-bot@6d0ac2b2d9bfd39794b017f8241adb7da7f0ab98 # [email protected]
with:
access_token: ${{ secrets.KEPTN_BOT_TOKEN }}
branch: ${{ github.event.repository.default_branch }}
enforce_admins: false

- name: Create release package
id: create-release-package
env:
GITHUB_TOKEN: ${{ secrets.KEPTN_BOT_TOKEN }}
run: |
echo "🚀 Creating release package now..."
npx standard-version@^9.3.1
echo "::set-output name=tag-name::$(git describe --tags --abbrev=0)"
echo "Fetching previously deleted old tags..."
git fetch origin --tags -f
echo "⚡️ Pushing changes to remote repository..."
git push --follow-tags
- name: Enable "include administrators" branch protection
uses: benjefferies/branch-protection-bot@6d0ac2b2d9bfd39794b017f8241adb7da7f0ab98 # [email protected]
if: always() # Force to always run this step to ensure "include administrators" is always turned back on
with:
access_token: ${{ secrets.KEPTN_BOT_TOKEN }}
branch: ${{ github.event.repository.default_branch }}
enforce_admins: true

- name: Create GitHub Release
env:
GITHUB_TOKEN: ${{ secrets.KEPTN_BOT_TOKEN }}
RELEASE_TAG: ${{ steps.create-release-package.outputs.tag-name }}
run: |
gh release create "$RELEASE_TAG" --draft --notes-file "${{ env.RELEASE_NOTES_FILE }}" --title "$RELEASE_TAG"
52 changes: 52 additions & 0 deletions .versionrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"preMajor": true,
"scripts": {
"postchangelog": "./gh-actions-scripts/post-changelog-actions.sh"
},
"types": [
{
"type": "feat",
"section": "Features"
},
{
"type": "fix",
"section": "Bug Fixes"
},
{
"type": "chore",
"section": "Other"
},
{
"type": "docs",
"section": "Docs"
},
{
"type": "perf",
"section": "Performance"
},
{
"type": "build",
"hidden": true
},
{
"type": "ci",
"hidden": true
},
{
"type": "refactor",
"section": "Refactoring"
},
{
"type": "revert",
"hidden": true
},
{
"type": "style",
"hidden": true
},
{
"type": "test",
"hidden": true
}
]
}
57 changes: 57 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Changelog

## [0.9.0](https://github.com/keptn/examples/compare/0.8.4...0.9.0)

This release has been created to keep the version of the examples in sync with the Keptn release version.

## [0.8.4](https://github.com/keptn/examples/compare/0.8.3...0.8.4)

### Bug Fixes

- Updated Istio Ingress API Version from `networking.k8s.io/v1beta1` to `networking.k8s.io/v1` #174

## [0.8.3](https://github.com/keptn/examples/compare/0.8.2...0.8.3)

### Features

- Added SLO and shipyard files and for Dynatrace self healing example #165
- Added time frame for evaluation of remediation action (part of [#4079](https://github.com/keptn/keptn/issues/4079))

### Fixed issues

- Improve output of `configure-istio.sh` script #157

## [0.8.2](https://github.com/keptn/examples/compare/0.8.1...0.8.2)

This release has been created to keep the version of the examples in sync with the Keptn release version.

## [0.8.1](https://github.com/keptn/examples/compare/0.8.0...0.8.1)

This release has been created to keep the version of the examples in sync with the Keptn release version.

## [0.8.0](https://github.com/keptn/examples/compare/0.7.3...0.8.0)

Note: Update of License file [#151](https://github.com/keptn/examples/issues/151)

### Features

- Update of Shipyard files according to new specification [#143](https://github.com/keptn/examples/issues/143)
- Deleted obsolete installation scripts for Dynatrace OneAgent
- Updated Istio configuration scripts

### Fixed issues

- Fixed SLI Config for Prometheus [#152](https://github.com/keptn/examples/issues/152)


## [0.7.3](https://github.com/keptn/examples/compare/0.7.2...0.7.3)

### Bug Fixes

- Set URL of Dynatrace OneAgent Operator in OpenShift script to: `release-0.8` instead of `master`

## 0.7.2

### Features

- Added install script for the Dynatrace OneAgent on OpenShift
57 changes: 15 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,63 +10,36 @@ Maintained examples are updated with every [Keptn release](https://github.com/ke

### Carts

|Name | Version | Description |
------------- | ------------- | ------------ |
| **onboard-carts** | [0.9.0](https://github.com/keptn/examples/tree/release-0.9.0) | This example allows to demonstrate the [Keptn tutorials](https://tutorials.keptn.sh). |
| **onboard-carts** | [0.8.4](https://github.com/keptn/examples/tree/release-0.8.4) | This example allows to demonstrate the [Keptn tutorials](https://tutorials.keptn.sh). |
| **onboard-carts** | [0.8.3](https://github.com/keptn/examples/tree/release-0.8.3) | This example allows to demonstrate the [Keptn tutorials](https://tutorials.keptn.sh). |
| **onboard-carts** | [0.8.2](https://github.com/keptn/examples/tree/release-0.8.2) | This example allows to demonstrate the [Keptn tutorials](https://tutorials.keptn.sh). |
| **onboard-carts** | [0.8.1](https://github.com/keptn/examples/tree/release-0.8.1) | This example allows to demonstrate the [Keptn tutorials](https://tutorials.keptn.sh). |
| **onboard-carts** | [0.8.0](https://github.com/keptn/examples/tree/release-0.8.0) | This example allows to demonstrate the [Keptn tutorials](https://tutorials.keptn.sh). |
| **onboard-carts** | [0.8.0-alpha](https://github.com/keptn/examples/tree/release-0.8.0-alpha) | Examples for Keptn 0.8.0-alpha, no tutorial available yet. |
| **onboard-carts** | [0.7.3](https://github.com/keptn/examples/tree/release-0.7.3) | This example allows to demonstrate the [Keptn tutorials](https://tutorials.keptn.sh). |
| **onboard-carts** | [0.7.2](https://github.com/keptn/examples/tree/release-0.7.2) | This example allows to demonstrate the [Keptn tutorials](https://tutorials.keptn.sh). |
| **onboard-carts** | [0.7.1](https://github.com/keptn/examples/tree/release-0.7.1) | This example allows to demonstrate the [Keptn tutorials](https://tutorials.keptn.sh). |
| **onboard-carts** | [0.7.0](https://github.com/keptn/examples/tree/release-0.7.0) | This example allows to demonstrate the [Keptn tutorials](https://tutorials.keptn.sh). |
| **onboard-carts** | [0.6.2](https://github.com/keptn/examples/tree/release-0.6.2) | This example allows to demonstrate the [Keptn use cases](https://keptn.sh/docs/0.6.0/usecases/). |
| **onboard-carts** | [0.6.1](https://github.com/keptn/examples/tree/release-0.6.1) | This example allows to demonstrate the [Keptn use cases](https://keptn.sh/docs/0.6.0/usecases/). |
| **onboard-carts** | [0.6.0](https://github.com/keptn/examples/tree/release-0.6.0) | This example allows to demonstrate the [Keptn use cases](https://keptn.sh/docs/0.6.0/usecases/). |
| **onboard-carts** | [0.5.0](https://github.com/keptn/examples/tree/release-0.5.0) | This example allows to demonstrate the [Keptn use cases](https://keptn.sh/docs/0.5.0/usecases/). |
This example allows to demonstrate the [Keptn tutorials](https://tutorials.keptn.sh).

You can find the source code of the carts microservice at https://github.com/keptn-sockshop/carts

#### Load Generator for Carts

The following commands will set up a basic load generator for the carts microservice that generates traffic in **all three stages**:

* Keptn 0.7.x, 0.8.x and 0.9.x:
* Basic (Background traffic)
```console
kubectl apply -f https://raw.githubusercontent.com/keptn/examples/release-0.8.2/load-generation/cartsloadgen/deploy/cartsloadgen-base.yaml
```
* More traffic
```console
kubectl apply -f https://raw.githubusercontent.com/keptn/examples/release-0.8.2/load-generation/cartsloadgen/deploy/cartsloadgen-fast.yaml
```
* Faulty item in cart (generates cpu usage)
```console
kubectl apply -f https://raw.githubusercontent.com/keptn/examples/release-0.8.2/load-generation/cartsloadgen/deploy/cartsloadgen-faulty.yaml
```
* Basic (Background traffic)
```console
kubectl apply -f https://raw.githubusercontent.com/keptn/examples/master/load-generation/cartsloadgen/deploy/cartsloadgen-base.yaml
```
* More traffic
```console
kubectl apply -f https://raw.githubusercontent.com/keptn/examples/master/load-generation/cartsloadgen/deploy/cartsloadgen-fast.yaml
```
* Faulty item in cart (generates cpu usage)
```console
kubectl apply -f https://raw.githubusercontent.com/keptn/examples/master/load-generation/cartsloadgen/deploy/cartsloadgen-faulty.yaml
```

### Unleash

|Name | Version | Description |
------------- | ------------- | ------------ |
| **unleash-server** | [0.9.x](https://github.com/keptn/examples/tree/release-0.9.0) | This example allows to demonstrate the [Self-healing with Feature Flags tutorials](https://tutorials.keptn.sh). |
| **unleash-server** | [0.8.x](https://github.com/keptn/examples/tree/release-0.8.4) | This example allows to demonstrate the [Self-healing with Feature Flags tutorials](https://tutorials.keptn.sh). |
| **unleash-server** | [0.7.x](https://github.com/keptn/examples/tree/release-0.7.3) | This example allows to demonstrate the [Self-healing with Feature Flags tutorials](https://tutorials.keptn.sh). |
| **unleash-server** | [0.6.x](https://github.com/keptn/examples/tree/release-0.6.2) | This example allows to demonstrate the [Self-healing with Feature Flags usecase](https://keptn.sh/docs/0.6.0/usecases/self-healing-with-keptn/dynatrace-unleash/). |
This example allows to demonstrate the [Self-healing with Feature Flags tutorials](https://tutorials.keptn.sh).

You can find the source of the unleash service at https://github.com/keptn-sockshop/unleash-server

### Simplenodeservice

|Name | Version | Description |
------------- | ------------- | ------------ |
| **simplenode** | [0.9.x](https://github.com/keptn/examples/tree/release-0.9.0) | This example is used for some of the [Keptn tutorials](https://tutorials.keptn.sh) |
| **simplenode** | [0.8.x](https://github.com/keptn/examples/tree/release-0.8.4) | This example is used for some of the [Keptn tutorials](https://tutorials.keptn.sh) |
| **simplenode** | [0.7.x](https://github.com/keptn/examples/tree/release-0.7.3) | This example is used for some of the [Keptn tutorials](https://tutorials.keptn.sh) |
| **simplenode** | [0.6.x](https://github.com/keptn/examples/tree/release-0.6.2) | This example is used for some of the [Keptn tutorials](https://tutorials.keptn.sh) |
This example is used for some of the [Keptn tutorials](https://tutorials.keptn.sh).

More information about this simple node.js based example application can be found here: [Simplenodeservice README](./simplenodeservice/README.md)

Expand Down
13 changes: 13 additions & 0 deletions gh-actions-scripts/post-changelog-actions.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash

echo "Removing sign-off messages from changelog..."
for file in {CHANGELOG,RELEASE-BODY}.md; do
if [ -f "$file" ]; then
echo "Replacing content in $file"
# Reference: https://stackoverflow.com/a/1252191
sed -e ':a' -e 'N' -e '$!ba' -e 's/\nSigned-off-by: .* <.*@.*>\n/ /g' "$file" > tmp
mv tmp "$file"
else
echo "Not replacing anything since $file does not exist."
fi
done
5 changes: 0 additions & 5 deletions releasenotes/releasenotes_V0.7.2.md

This file was deleted.

5 changes: 0 additions & 5 deletions releasenotes/releasenotes_V0.7.3.md

This file was deleted.

Loading

0 comments on commit fe69ded

Please sign in to comment.