Skip to content

Commit 339874b

Browse files
releases: publish nightly builds of dev (#12137)
* GHA: nightly dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * cleanup * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build * nightly-dev build
1 parent 38700b5 commit 339874b

10 files changed

+228
-60
lines changed

.github/workflows/release-1-create-pr.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,25 @@ jobs:
2525
- name: Checkout from_branch branch
2626
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
2727
with:
28-
ref: ${{ github.event.inputs.from_branch }}
28+
ref: ${{ inputs.from_branch }}
2929

3030
- name: Create release branch
31-
if: ${{ !startsWith(github.event.inputs.from_branch, 'release/') }}
31+
if: ${{ !startsWith(inputs.from_branch, 'release/') }}
3232
run: |
33-
echo "NEW_BRANCH=release/${{ github.event.inputs.release_number }}" >> $GITHUB_ENV
33+
echo "NEW_BRANCH=release/${{ inputs.release_number }}" >> $GITHUB_ENV
3434
3535
- name: Use existing release branch
36-
if: startsWith(github.event.inputs.from_branch, 'release/')
36+
if: startsWith(inputs.from_branch, 'release/')
3737
run: |
38-
echo "NEW_BRANCH=${{ github.event.inputs.from_branch }}" >> $GITHUB_ENV
38+
echo "NEW_BRANCH=${{ inputs.from_branch }}" >> $GITHUB_ENV
3939
4040
- name: Configure git
4141
run: |
4242
git config --global user.name "${{ env.GIT_USERNAME }}"
4343
git config --global user.email "${{ env.GIT_EMAIL }}"
4444
4545
- name: Push branch
46-
if: "!startsWith('${{ github.event.inputs.from_branch }}', 'release/')"
46+
if: "!startsWith('${{ inputs.from_branch }}', 'release/')"
4747
run: git push origin HEAD:${NEW_BRANCH}
4848

4949
- name: Checkout release branch
@@ -53,9 +53,9 @@ jobs:
5353

5454
- name: Update version numbers in key files
5555
run: |
56-
sed -ri 's/__version__ = ".*"/__version__ = "${{ github.event.inputs.release_number }}"/' dojo/__init__.py
57-
sed -ri 's/"version": ".*"/"version": "${{ github.event.inputs.release_number }}"/' components/package.json
58-
sed -ri 's/appVersion: ".*"/appVersion: "${{ github.event.inputs.release_number }}"/' helm/defectdojo/Chart.yaml
56+
sed -ri 's/__version__ = ".*"/__version__ = "${{ inputs.release_number }}"/' dojo/__init__.py
57+
sed -ri 's/"version": ".*"/"version": "${{ inputs.release_number }}"/' components/package.json
58+
sed -ri 's/appVersion: ".*"/appVersion: "${{ inputs.release_number }}"/' helm/defectdojo/Chart.yaml
5959
6060
if grep "\-dev" helm/defectdojo/Chart.yaml; then
6161
echo "x.y.z-dev found in Chart.yaml, probably releasing a new minor version"

.github/workflows/release-2-tag-docker-push.yml

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ on:
1010
# the actual branch that can be chosen on the UI is made irrelevant by further steps
1111
# because someone will forget one day to change it.
1212
release_number:
13+
type: string
1314
description: 'Release version (x.y.z format)'
1415
required: true
1516

@@ -27,41 +28,51 @@ jobs:
2728
git config --global user.name "${{ env.GIT_USERNAME }}"
2829
git config --global user.email "${{ env.GIT_EMAIL }}"
2930
30-
- name: Create new tag ${{ github.event.inputs.release_number }}
31+
- name: Create new tag ${{ inputs.release_number }}
3132
# at this point, the PR from the 1st workflow is merged into master.
3233
run: |
33-
git tag -a ${{ github.event.inputs.release_number }} -m "[bot] release ${{ github.event.inputs.release_number }}"
34-
git push origin ${{ github.event.inputs.release_number }}
35-
36-
release-helm-chart:
37-
needs: tag
38-
uses: ./.github/workflows/release-x-manual-helm-chart.yml
39-
with:
40-
release_number: ${{ github.event.inputs.release_number }}
41-
secrets: inherit
34+
git tag -a ${{ inputs.release_number }} -m "[bot] release ${{ inputs.release_number }}"
35+
git push origin ${{ inputs.release_number }}
4236
4337
publish-docker-containers:
38+
needs: tag
4439
strategy:
45-
matrix:
40+
matrix:
4641
platform: ['linux/amd64', 'linux/arm64']
47-
fail-fast: false
48-
needs: tag
42+
fail-fast: false
4943
uses: ./.github/workflows/release-x-manual-docker-containers.yml
5044
with:
51-
release_number: ${{ github.event.inputs.release_number }}
45+
release_number: ${{ inputs.release_number }}
5246
platform: ${{ matrix.platform }}
5347
secrets: inherit
5448

5549
publish-container-digests:
5650
needs: publish-docker-containers
5751
uses: ./.github/workflows/release-x-manual-merge-container-digests.yml
5852
with:
59-
release_number: ${{ github.event.inputs.release_number }}
53+
release_number: ${{ inputs.release_number }}
54+
secrets: inherit
55+
56+
# for releases we need to tag the images with the latest tag
57+
# this could be parametrized in the merge-container-digests workflow
58+
# but it's simpler to just add a explicit workflow for this here
59+
tag-as-latest:
60+
needs: publish-container-digests
61+
uses: ./.github/workflows/release-x-manual-tag-as-latest.yml
62+
with:
63+
release_number: ${{ inputs.release_number }}
64+
secrets: inherit
65+
66+
release-helm-chart:
67+
needs: publish-container-digests
68+
uses: ./.github/workflows/release-x-manual-helm-chart.yml
69+
with:
70+
release_number: ${{ inputs.release_number }}
6071
secrets: inherit
6172

6273
release-drafter:
6374
needs: publish-container-digests
6475
uses: ./.github/workflows/release-drafter.yml
6576
with:
66-
version: ${{ github.event.inputs.release_number }}
77+
version: ${{ inputs.release_number }}
6778
secrets: inherit

.github/workflows/release-3-master-into-dev.yml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929

3030
- name: Create merge back branch
3131
run: |
32-
echo "NEW_BRANCH=master-into-dev/${{ github.event.inputs.release_number_new }}-${{ github.event.inputs.release_number_dev }}" >> $GITHUB_ENV
32+
echo "NEW_BRANCH=master-into-dev/${{ inputs.release_number_new }}-${{ inputs.release_number_dev }}" >> $GITHUB_ENV
3333
3434
- name: Configure git
3535
run: |
@@ -46,9 +46,9 @@ jobs:
4646

4747
- name: Update version numbers in key files
4848
run: |
49-
sed -ri 's/__version__ = ".*"/__version__ = "${{ github.event.inputs.release_number_dev }}"/' dojo/__init__.py
50-
sed -ri 's/"version": ".*"/"version": "${{ github.event.inputs.release_number_dev }}"/' components/package.json
51-
sed -ri 's/appVersion: ".*"/appVersion: "${{ github.event.inputs.release_number_dev }}"/' helm/defectdojo/Chart.yaml
49+
sed -ri 's/__version__ = ".*"/__version__ = "${{ inputs.release_number_dev }}"/' dojo/__init__.py
50+
sed -ri 's/"version": ".*"/"version": "${{ inputs.release_number_dev }}"/' components/package.json
51+
sed -ri 's/appVersion: ".*"/appVersion: "${{ inputs.release_number_dev }}"/' helm/defectdojo/Chart.yaml
5252
CURRENT_CHART_VERSION=$(grep -oP 'version: (\K\S*)?' helm/defectdojo/Chart.yaml | head -1)
5353
sed -ri "0,/version/s/version: \S+/$(echo "version: $CURRENT_CHART_VERSION" | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{$NF=sprintf("%0*d", length($NF), ($NF+1)); print}')-dev/" helm/defectdojo/Chart.yaml
5454
@@ -60,8 +60,8 @@ jobs:
6060
6161
- name: Create upgrade notes to documentation
6262
run: |
63-
minorv=$(echo ${{ github.event.inputs.release_number_dev }} | cut -d '.' -f -2)
64-
patchv=$(echo ${{ github.event.inputs.release_number_dev }} | cut -d '-' -f -1)
63+
minorv=$(echo ${{ inputs.release_number_dev }} | cut -d '.' -f -2)
64+
patchv=$(echo ${{ inputs.release_number_dev }} | cut -d '-' -f -1)
6565
weight=$(date +%Y%m%d)
6666
echo -n "---
6767
title: 'Upgrading to DefectDojo Version $minorv.x'
@@ -72,7 +72,7 @@ jobs:
7272
There are no special instructions for upgrading to $minorv.x. Check the [Release Notes](https://github.com/DefectDojo/django-DefectDojo/releases/tag/$patchv) for the contents of the release.
7373
" > docs/content/en/open_source/upgrading/$minorv.md
7474
git add docs/content/en/open_source/upgrading/$minorv.md
75-
if: endsWith(github.event.inputs.release_number_new, '.0') && endsWith(github.event.inputs.release_number_dev, '.0-dev')
75+
if: endsWith(inputs.release_number_new, '.0') && endsWith(inputs.release_number_dev, '.0-dev')
7676

7777
- name: Push version changes
7878
uses: stefanzweifel/git-auto-commit-action@b863ae1933cb653a53c021fe36dbb774e1fb9403 # v5.2.0
@@ -91,7 +91,7 @@ jobs:
9191
github.rest.pulls.create({
9292
owner: '${{ env.GITHUB_ORG }}',
9393
repo: 'django-DefectDojo',
94-
title: 'Release: Merge back ${{ github.event.inputs.release_number_new }} into dev from: ${{ env.NEW_BRANCH }}',
94+
title: 'Release: Merge back ${{ inputs.release_number_new }} into dev from: ${{ env.NEW_BRANCH }}',
9595
body: `Release triggered by \`${ process.env.GITHUB_ACTOR }\``,
9696
head: '${{ env.NEW_BRANCH }}',
9797
base: 'dev'
@@ -110,7 +110,7 @@ jobs:
110110

111111
- name: Create merge back branch
112112
run: |
113-
echo "NEW_BRANCH=master-into-bugfix/${{ github.event.inputs.release_number_new }}-${{ github.event.inputs.release_number_dev }}" >> $GITHUB_ENV
113+
echo "NEW_BRANCH=master-into-bugfix/${{ inputs.release_number_new }}-${{ inputs.release_number_dev }}" >> $GITHUB_ENV
114114
115115
- name: Configure git
116116
run: |
@@ -127,9 +127,9 @@ jobs:
127127

128128
- name: Update version numbers in key files
129129
run: |
130-
sed -ri "s/__version__ = '.*'/__version__ = '${{ github.event.inputs.release_number_dev }}'/" dojo/__init__.py
131-
sed -ri "s/appVersion: \".*\"/appVersion: \"${{ github.event.inputs.release_number_dev }}\"/" helm/defectdojo/Chart.yaml
132-
sed -ri "s/\"version\": \".*\"/\"version\": \"${{ github.event.inputs.release_number_dev }}\"/" components/package.json
130+
sed -ri "s/__version__ = '.*'/__version__ = '${{ inputs.release_number_dev }}'/" dojo/__init__.py
131+
sed -ri "s/appVersion: \".*\"/appVersion: \"${{ inputs.release_number_dev }}\"/" helm/defectdojo/Chart.yaml
132+
sed -ri "s/\"version\": \".*\"/\"version\": \"${{ inputs.release_number_dev }}\"/" components/package.json
133133
CURRENT_CHART_VERSION=$(grep -oP 'version: (\K\S*)?' helm/defectdojo/Chart.yaml | head -1)
134134
sed -ri "0,/version/s/version: \S+/$(echo "version: $CURRENT_CHART_VERSION" | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{$NF=sprintf("%0*d", length($NF), ($NF+1)); print}')-dev/" helm/defectdojo/Chart.yaml
135135
@@ -156,7 +156,7 @@ jobs:
156156
github.rest.pulls.create({
157157
owner: '${{ env.GITHUB_ORG }}',
158158
repo: 'django-DefectDojo',
159-
title: 'Release: Merge back ${{ github.event.inputs.release_number_new }} into bugfix from: ${{ env.NEW_BRANCH }}',
159+
title: 'Release: Merge back ${{ inputs.release_number_new }} into bugfix from: ${{ env.NEW_BRANCH }}',
160160
body: `Release triggered by \`${ process.env.GITHUB_ACTOR }\``,
161161
head: '${{ env.NEW_BRANCH }}',
162162
base: 'bugfix'

.github/workflows/release-drafter.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,19 @@ jobs:
2929
id: create_release
3030
uses: release-drafter/release-drafter@b1476f6e6eb133afa41ed8589daba6dc69b4d3f5 # v6.1.0
3131
with:
32-
version: ${{ github.event.inputs.version }}
32+
version: ${{ inputs.version }}
3333
env:
3434
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3535
# Generate the OAS schemas in another workflow
3636
oas-fetch:
3737
needs: update_release_draft
3838
uses: ./.github/workflows/fetch-oas.yml
3939
with:
40-
version: ${{ github.event.inputs.version }}
40+
version: ${{ inputs.version }}
4141
secrets: inherit
4242
# Upload the OAS schemas to the release object
4343
add-oas-to-release:
44-
needs:
44+
needs:
4545
- update_release_draft
4646
- oas-fetch
4747
runs-on: ubuntu-latest
@@ -73,4 +73,4 @@ jobs:
7373
asset_name: oas.json
7474
asset_content_type: application/json
7575

76-
76+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: "Release-Nightly: Build & Push DEV"
2+
3+
env:
4+
GIT_USERNAME: "DefectDojo release bot"
5+
GIT_EMAIL: "dojo-release-bot@users.noreply.github.com"
6+
7+
on:
8+
schedule:
9+
# every day at 5:00 UTC
10+
# in this case inputs are all null/empty, hence the default values are used below
11+
- cron: "* 5 * * *"
12+
workflow_dispatch:
13+
14+
jobs:
15+
nightly-build-dev:
16+
uses: ./.github/workflows/release-x-nightly.yml
17+
with:
18+
branch-to-build: 'dev'
19+
tag-to-apply: 'nightly-dev'
20+
secrets: inherit

.github/workflows/release-x-manual-docker-containers.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ jobs:
5757
- name: Checkout tag
5858
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
5959
with:
60-
ref: ${{ github.event.inputs.release_number }}
60+
ref: ${{ inputs.release_number }}
6161

6262
- name: Set up Docker Buildx
6363
id: buildx
@@ -74,6 +74,8 @@ jobs:
7474
file: ./Dockerfile.${{ matrix.docker-image }}-${{ matrix.os }}
7575
context: .
7676
outputs: type=image,"name=${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}",push-by-digest=true,name-canonical=true
77+
cache-from: type=gha,scope=${{ matrix.docker-image}}-${{ matrix.os }}-${{ env.PLATFORM }}-${{ github.head_ref || github.ref_name }}
78+
cache-to: type=gha,mode=max,scope=${{ matrix.docker-image}}-${{ matrix.os }}-${{ env.PLATFORM }}-${{ github.head_ref || github.ref_name }}
7779

7880
# export the digest to a file
7981
- name: Export digest

.github/workflows/release-x-manual-helm-chart.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,35 +26,35 @@ jobs:
2626
release-chart:
2727
runs-on: ubuntu-latest
2828
steps:
29-
29+
3030
- name: Checkout
3131
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
3232
with:
3333
ref: master
3434
fetch-depth: 0
35-
35+
3636
# This action is deprecated. Not sure if it is even being used anymore...
3737
# - name: Get upload URL
3838
# id: get-upload-url
3939
# uses: pdamianik/release-tag-to-upload-url-action@v1.0.1
4040
# with:
4141
# tag: ${{ github.event.inputs.release_number }}
4242
# token: ${{ github.token }}
43-
43+
4444
- name: Configure git
4545
run: |
4646
git config --global user.name "${{ env.GIT_USERNAME }}"
4747
git config --global user.email "${{ env.GIT_EMAIL }}"
48-
48+
4949
- name: Set up Helm
5050
uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0
51-
51+
5252
- name: Configure HELM repos
5353
run: |-
5454
helm repo add bitnami https://charts.bitnami.com/bitnami
5555
helm dependency list ./helm/defectdojo
5656
helm dependency update ./helm/defectdojo
57-
57+
5858
- name: Add yq
5959
uses: mikefarah/yq@8bf425b4d1344db7cd469a8d10a390876e0c77fd # v4.45.1
6060

@@ -71,7 +71,7 @@ jobs:
7171
mkdir build
7272
helm package helm/defectdojo/ --destination ./build
7373
echo "chart_version=$(ls build | cut -d '-' -f 2 | sed 's|\.tgz||')" >> $GITHUB_ENV
74-
74+
7575
- name: Create release ${{ github.event.inputs.release_number }}
7676
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2
7777
with:
@@ -84,7 +84,7 @@ jobs:
8484
token: ${{ secrets.GITHUB_TOKEN }}
8585
env:
8686
GITHUB_REPOSITORY: DefectDojo/django-DefectDojo
87-
87+
8888
- name: Update Helm repository index
8989
id: update-helm-repository-index
9090
run: |

.github/workflows/release-x-manual-merge-container-digests.yml

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ jobs:
3333
os: [alpine, debian]
3434

3535
steps:
36-
3736
# deduce docker org name from git repo to make the build also work in forks
3837
- id: Set-docker-org
3938
run: echo "DOCKER_ORG=$(echo ${GITHUB_REPOSITORY%%/*} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
@@ -60,26 +59,24 @@ jobs:
6059
working-directory: ${{ runner.temp }}/digests
6160
run: |
6261
set -x
63-
docker buildx imagetools create -t "${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:${{ github.event.inputs.release_number }}-${{ matrix.os }}" --progress=plain \
62+
docker buildx imagetools create -t "${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:${{ inputs.release_number }}-${{ matrix.os }}" --progress=plain \
6463
$(printf '${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}@sha256:%s ' *)
6564
6665
# just for logging
6766
- name: Inspect OS specific image
6867
run: |
69-
docker buildx imagetools inspect ${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:${{ github.event.inputs.release_number }}-${{ matrix.os }}
68+
docker buildx imagetools inspect ${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:${{ inputs.release_number }}-${{ matrix.os }}
7069
71-
# debian images are the default / official ones, so these get the os-less tag and the latest tag
72-
- name: Create default manifest list and push
70+
# debian images are the default / official ones, so these get the os-less tag
71+
- name: Tag Debian with os-less tags
7372
if: ${{ matrix.os == 'debian' }}
7473
working-directory: ${{ runner.temp }}/digests
7574
run: |
7675
set -x
77-
docker buildx imagetools create -t "${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:${{ github.event.inputs.release_number }}" ${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:${{ github.event.inputs.release_number }}-${{ matrix.os }}
78-
docker buildx imagetools create -t "${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:latest" ${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:${{ github.event.inputs.release_number }}-${{ matrix.os }}
76+
docker buildx imagetools create -t "${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:${{ inputs.release_number }}" ${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:${{ inputs.release_number }}-${{ matrix.os }}
7977
8078
# just for logging
8179
- name: Inspect default images
8280
if: ${{ matrix.os == 'debian' }}
8381
run: |
84-
docker buildx imagetools inspect ${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:${{ github.event.inputs.release_number }}
85-
docker buildx imagetools inspect ${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:latest
82+
docker buildx imagetools inspect ${{ env.DOCKER_ORG }}/defectdojo-${{ matrix.docker-image}}:${{ inputs.release_number }}

0 commit comments

Comments
 (0)