Skip to content

Commit

Permalink
Change: Adjust release workflow for new release process
Browse files Browse the repository at this point in the history
The gvmd repository will use semantic versioning similar to the scanner
repos in near future too. Therefore adjust the release workflow to
support this versioning.
  • Loading branch information
bjoernricks committed Jun 9, 2023
1 parent f10fb52 commit 0e9787b
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 30 deletions.
31 changes: 17 additions & 14 deletions .github/workflows/container.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ name: Container Image Builds

on:
push:
branches: [main, stable, oldstable]
branches:
- main
tags: ["v*"]
pull_request:
branches: [main, stable, oldstable]
branches:
- main
workflow_dispatch:
repository_dispatch:

jobs:
images:
Expand All @@ -16,6 +17,8 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
- uses: greenbone/actions/is-latest-tag@v2
id: latest
- name: Setup container meta information
id: meta
uses: docker/metadata-action@v4
Expand All @@ -26,20 +29,20 @@ jobs:
org.opencontainers.image.base.name=debian/stable-slim
flavor: latest=false # no latest container tag for git tags
tags: |
# use container tag for git tags
type=match,pattern=v(.*),group=1
# use latest for latest tag from stable branch
type=raw,value=latest,enable=${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'v22.4') }}
# use stable for latest 22.4 tag
type=raw,value=stable,enable=${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'v22.4') }}
# use oldstable for latest 21.4 tag
type=raw,value=oldstable,enable=${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'v21.4') }}
# use version, major.minor and major for tags
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
# use edge for default branch
type=edge
# use branch-sha otherwise for pushes to branches other then main (will not be uploaded)
type=raw,value={{branch}}-{{sha}},enable=${{ github.ref_type == 'branch' && github.event_name == 'push' && github.ref_name != 'main' }}
# use pr-$PR_ID for pull requests (will not be uploaded)
# set label for non-published pull request builds
type=ref,event=pr
# when a new git tag is created set stable and a latest tags
type=raw,value=latest,enable=${{ steps.latest.outputs.is-latest-tag == 'true' }}
type=raw,value=stable,enable=${{ steps.latest.outputs.is-latest-tag == 'true' }}
- name: Login to Docker Registry
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
Expand Down
52 changes: 36 additions & 16 deletions .github/workflows/release-pontos.yml
Original file line number Diff line number Diff line change
@@ -1,34 +1,54 @@
name: Release gvmd with pontos
name: Release gvmd

on:
pull_request:
types: [closed]
workflow_dispatch:
inputs:
release-type:
type: choice
description: What kind of release do you want to do (pontos --release-type argument)?
options:
- patch
- minor
- major
release-version:
type: string
description: Set an explicit version, that will overwrite release-type. Fails if version is not compliant.

jobs:
build-and-release:
name: Create a new release with pontos
# If the event is a workflow_dispatch or the label 'make release' is set and PR is closed because of a merge
if: (github.event_name == 'workflow_dispatch') || (contains( github.event.pull_request.labels.*.name, 'make release') && github.event.pull_request.merged == true)
runs-on: "ubuntu-latest"
name: Create a new release
# If the event is a workflow_dispatch or on of the labels 'pre release',
# 'patch release', 'minor release' or 'major release' is set and PR is
# closed because of a merge
# NOTE: priority of set labes will be alpha > release-candidate > patch > minor > major,
# so if 'major' and 'patch' labes are set, it will create a patch release.
if: |
( github.event_name == 'workflow_dispatch') || (
( contains(github.event.pull_request.labels.*.name, 'alpha release') ||
contains(github.event.pull_request.labels.*.name, 'rc release') ||
contains(github.event.pull_request.labels.*.name, 'patch release') ||
contains(github.event.pull_request.labels.*.name, 'minor release') ||
contains(github.event.pull_request.labels.*.name, 'major release')) &&
github.event.pull_request.merged == true )
runs-on: 'ubuntu-latest'
steps:
- name: Setting the Reference
run: |
if [[ "${{ github.event_name }}" = "workflow_dispatch" ]]; then
echo "RELEASE_REF=${{ github.ref_name }}" >> $GITHUB_ENV
else
echo "RELEASE_REF=${{ github.base_ref }}" >> $GITHUB_ENV
fi
- name: Selecting the Release type
id: release-type
uses: greenbone/actions/release-type@v2
with:
release-type-input: ${{ inputs.release-type }}
- name: Release with release action
uses: greenbone/actions/release@v2
with:
python-version: "3.10"
conventional-commits: true
github-user: ${{ secrets.GREENBONE_BOT }}
github-user-mail: ${{ secrets.GREENBONE_BOT_MAIL }}
github-user-token: ${{ secrets.GREENBONE_BOT_TOKEN }}
gpg-key: ${{ secrets.GPG_KEY }}
gpg-fingerprint: ${{ secrets.GPG_FINGERPRINT }}
gpg-passphrase: ${{ secrets.GPG_PASSPHRASE }}
strategy: calendar
ref: ${{ env.RELEASE_REF }}
release-type: ${{ steps.release-type.outputs.release-type }}
release-version: ${{ inputs.release-version }}
ref: ${{ steps.release-type.outputs.release-ref }}
versioning-scheme: "semver"

0 comments on commit 0e9787b

Please sign in to comment.