Using main and develop imposes a complicated release process with Gitflow etc. To simplify our release process we move our development to the main branch skipping develop.
138 lines
4.0 KiB
YAML
138 lines
4.0 KiB
YAML
name: "Release Pipeline"
|
|
on:
|
|
push:
|
|
tags:
|
|
- v*
|
|
jobs:
|
|
release:
|
|
if: github.repository == 'WebGoat/WebGoat'
|
|
name: Release WebGoat
|
|
runs-on: ubuntu-latest
|
|
environment:
|
|
name: release
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Set up JDK 17
|
|
uses: actions/setup-java@v3
|
|
with:
|
|
distribution: 'zulu'
|
|
java-version: 17
|
|
architecture: x64
|
|
|
|
- name: Cache Maven packages
|
|
uses: actions/cache@v3.2.3
|
|
with:
|
|
path: ~/.m2
|
|
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-m2
|
|
|
|
- name: "Set labels for ${{ github.ref }}"
|
|
run: |
|
|
echo "WEBGOAT_TAG_VERSION=${{ github.ref_name }}" >> $GITHUB_ENV
|
|
WEBGOAT_MAVEN_VERSION=${{ github.ref_name }}
|
|
echo "WEBGOAT_MAVEN_VERSION=${WEBGOAT_MAVEN_VERSION:1}" >> $GITHUB_ENV
|
|
- name: Build with Maven
|
|
run: |
|
|
mvn --no-transfer-progress versions:set -DnewVersion=${{ env.WEBGOAT_MAVEN_VERSION }}
|
|
mvn --no-transfer-progress install -DskipTests
|
|
|
|
- name: "Create release"
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
draft: false
|
|
files: |
|
|
target/webgoat-${{ env.WEBGOAT_MAVEN_VERSION }}.jar
|
|
body: |
|
|
## Version ${{ steps.tag.outputs.tag }}
|
|
|
|
### New functionality
|
|
|
|
- test
|
|
|
|
### Bug fixes
|
|
|
|
- [#743 - Character encoding errors](https://github.com/WebGoat/WebGoat/issues/743)
|
|
|
|
Full change log: https://github.com/WebGoat/WebGoat/compare/${{ steps.tag.outputs.tag }}...${{ steps.tag.outputs.tag }}
|
|
|
|
|
|
## Contributors
|
|
|
|
Special thanks to the following contributors providing us with a pull request:
|
|
|
|
- Person 1
|
|
- Person 2
|
|
|
|
And everyone who provided feedback through Github.
|
|
|
|
|
|
Team WebGoat
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: "Set up QEMU"
|
|
uses: docker/setup-qemu-action@v2.1.0
|
|
with:
|
|
platforms: all
|
|
|
|
- name: "Set up Docker Buildx"
|
|
uses: docker/setup-buildx-action@v2
|
|
|
|
- name: "Login to dockerhub"
|
|
uses: docker/login-action@v2.1.0
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: "Build and push"
|
|
uses: docker/build-push-action@v3.2.0
|
|
with:
|
|
context: ./
|
|
file: ./Dockerfile
|
|
push: true
|
|
platforms: linux/amd64, linux/arm64, linux/arm/v7
|
|
tags: |
|
|
webgoat/webgoat:${{ env.WEBGOAT_TAG_VERSION }}
|
|
webgoat/webgoat:latest
|
|
build-args: |
|
|
webgoat_version=${{ env.WEBGOAT_MAVEN_VERSION }}
|
|
|
|
- name: "Image digest"
|
|
run: echo ${{ steps.docker_build.outputs.digest }}
|
|
new_version:
|
|
if: github.repository == 'WebGoat/WebGoat'
|
|
name: Update to next SNAPSHOT version
|
|
needs: [ release ]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Set up JDK 17
|
|
uses: actions/setup-java@v3
|
|
with:
|
|
java-version: 17
|
|
architecture: x64
|
|
|
|
- name: Set version to next snapshot
|
|
run: |
|
|
mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion}-SNAPSHOT versions:commit
|
|
|
|
- name: Push the changes to new branch
|
|
uses: devops-infra/action-commit-push@v0.9.2
|
|
with:
|
|
github_token: "${{ secrets.GITHUB_TOKEN }}"
|
|
add_timestamp: true
|
|
commit_message: "Updating to the new development version"
|
|
force: false
|
|
|
|
- name: Create PR
|
|
uses: devops-infra/action-pull-request@v0.5.3
|
|
with:
|
|
github_token: "${{ secrets.GITHUB_TOKEN }}"
|
|
title: ${{ github.event.commits[0].message }}
|
|
target_branch: main
|
|
|