Release-1: Create PR for master #155
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Release-1: Create PR for master" | |
env: | |
GIT_USERNAME: "DefectDojo release bot" | |
GIT_EMAIL: "[email protected]" | |
on: | |
workflow_dispatch: | |
inputs: | |
# the actual branch that can be chosen on the UI is made irrelevant by further steps | |
# because someone will forget one day to change it. | |
from_branch: | |
description: "Select branch to release from ('release/x.y.z'. If `dev` is entered, a new release branch will be created from `dev`)" | |
required: true | |
release_number: | |
description: "Release version (x.y.z format)" | |
required: true | |
jobs: | |
create_pr: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout from_branch branch | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.inputs.from_branch }} | |
- name: Create release branch | |
if: ${{ !startsWith(github.event.inputs.from_branch, 'release/') }} | |
run: | | |
echo "NEW_BRANCH=release/${{ github.event.inputs.release_number }}" >> $GITHUB_ENV | |
- name: Use existing release branch | |
if: startsWith(github.event.inputs.from_branch, 'release/') | |
run: | | |
echo "NEW_BRANCH=${{ github.event.inputs.from_branch }}" >> $GITHUB_ENV | |
- name: Configure git | |
run: | | |
git config --global user.name "${{ env.GIT_USERNAME }}" | |
git config --global user.email "${{ env.GIT_EMAIL }}" | |
- name: Push branch | |
if: "!startsWith('${{ github.event.inputs.from_branch }}', 'release/')" | |
run: git push origin HEAD:${NEW_BRANCH} | |
- name: Checkout release branch | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.NEW_BRANCH }} | |
- name: Update version numbers in key files | |
run: | | |
sed -ri 's/__version__ = ".*"/__version__ = "${{ github.event.inputs.release_number }}"/' dojo/__init__.py | |
sed -ri 's/"version": ".*"/"version": "${{ github.event.inputs.release_number }}"/' components/package.json | |
sed -ri 's/appVersion: ".*"/appVersion: "${{ github.event.inputs.release_number }}"/' helm/defectdojo/Chart.yaml | |
if grep "\-dev" helm/defectdojo/Chart.yaml; then | |
echo "x.y.z-dev found in Chart.yaml, probably releasing a new minor version" | |
echo "removing the -dev suffix" | |
sed -e "s/\-dev//" -i helm/defectdojo/Chart.yaml | |
else | |
echo "x.y.z without -dev found in Chart.yaml, probably releasing a new bug fix version" | |
CURRENT_CHART_VERSION=$(grep -oP 'version: (\K\S*)?' helm/defectdojo/Chart.yaml | head -1) | |
NEW_CHART_VERSION=$(echo "version: $CURRENT_CHART_VERSION" | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{$NF=sprintf("%0*d", length($NF), ($NF+1)); print}') | |
echo "bumping the chart version from $CURRENT_CHART_VERSION to $NEW_CHART_VERSION" | |
sed -ri "0,/version/s/version: \S+/$NEW_CHART_VERSION/" helm/defectdojo/Chart.yaml | |
fi | |
- name: Check version numbers | |
run: | | |
grep -H version dojo/__init__.py | |
grep -H version components/package.json | |
grep -H appVersion helm/defectdojo/Chart.yaml | |
grep -H version helm/defectdojo/Chart.yaml | |
- name: Push version changes | |
uses: stefanzweifel/[email protected] | |
with: | |
commit_user_name: "${{ env.GIT_USERNAME }}" | |
commit_user_email: "${{ env.GIT_EMAIL }}" | |
commit_author: "${{ env.GIT_USERNAME }} <${{ env.GIT_EMAIL }}>" | |
commit_message: "Update versions in application files" | |
branch: ${{ env.NEW_BRANCH }} | |
- id: set-repo-org | |
run: echo "repoorg=${GITHUB_REPOSITORY%%/*}" >> $GITHUB_ENV | |
- name: Create Pull Request | |
env: | |
REPO_ORG: ${{ env.repoorg }} | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
github.rest.pulls.create({ | |
owner: '${{ env.REPO_ORG }}', | |
repo: 'django-DefectDojo', | |
title: 'Release: Merge release into master from: ${{ env.NEW_BRANCH }}', | |
body: `Release triggered by \`${ process.env.GITHUB_ACTOR }\``, | |
head: '${{ env.NEW_BRANCH }}', | |
base: 'master' | |
}) |