@@ -10,11 +10,20 @@ permissions:
1010 contents : write
1111 issues : write
1212 pull-requests : write
13+ id-token : write
14+
15+ concurrency :
16+ group : ${{ github.workflow }}-${{ github.ref }}
17+ cancel-in-progress : true
1318
1419jobs :
1520 release :
1621 runs-on : ubuntu-latest
1722 environment : semantic-release
23+ outputs :
24+ new_release_published : ${{ steps.semantic.outputs.new_release_published }}
25+ new_release_version : ${{ steps.semantic.outputs.new_release_version }}
26+ release_sha : ${{ steps.release-sha.outputs.sha }}
1827 steps :
1928 - name : Checkout
2029 uses : actions/checkout@v4
3039 - name : Setup Node.js
3140 uses : actions/setup-node@v4
3241 with :
33- node-version : 22
42+ node-version : 22.21.1
3443 cache : pnpm
3544
45+ - name : Upgrade npm to latest
46+ run : npm install -g npm@latest
47+
3648 - name : Install dependencies
3749 run : pnpm install --frozen-lockfile
3850
@@ -49,57 +61,79 @@ jobs:
4961 GITHUB_TOKEN : ${{ steps.app-token.outputs.token }}
5062 SEMANTIC_RELEASE_DEBUG : true
5163
64+ - name : Capture release SHA
65+ id : release-sha
66+ run : echo "sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
67+
68+ build-image :
69+ needs : release
70+ if : needs.release.outputs.new_release_published == 'true'
71+ runs-on : ubuntu-latest
72+ steps :
73+ - name : Checkout
74+ uses : actions/checkout@v4
75+ with :
76+ fetch-depth : 0
77+ fetch-tags : true
78+ ref : ${{ needs.release.outputs.release_sha }}
79+
5280 - name : Login to DockerHub
53- # Only login if we are actually going to build (a release happened)
54- if : steps.semantic.outputs.new_release_published == 'true'
5581 uses : docker/login-action@v3
5682 with :
5783 username : ${{ secrets.DOCKERHUB_USERNAME }}
5884 password : ${{ secrets.DOCKERHUB_TOKEN }}
5985
6086 - name : Docker Metadata
6187 id : meta
62- if : steps.semantic.outputs.new_release_published == 'true'
6388 uses : docker/metadata-action@v5
6489 with :
6590 images : informaticsmatters/squonk2-data-manager-ui
6691 tags : |
67- type=raw,value=${{ steps.semantic .outputs.new_release_version }}
68- type=raw,value=stable,enable=${{ !contains(steps.semantic .outputs.new_release_version, '-dev.') }}
69- type=raw,value=latest,enable=${{ !contains(steps.semantic .outputs.new_release_version, '-dev.') }}
92+ type=raw,value=${{ needs.release .outputs.new_release_version }}
93+ type=raw,value=stable,enable=${{ !contains(needs.release .outputs.new_release_version, '-dev.') }}
94+ type=raw,value=latest,enable=${{ !contains(needs.release .outputs.new_release_version, '-dev.') }}
7095
7196 - name : Build and push image
72- if : steps.semantic.outputs.new_release_published == 'true'
7397 uses : docker/build-push-action@v6
7498 with :
99+ context : .
100+ file : ./Dockerfile
75101 push : true
76102 build-args : |
77- GIT_SHA=${{ github.sha }}
103+ GIT_SHA=${{ needs.release.outputs.release_sha }}
78104 SKIP_CHECKS=1
79105 BASE_PATH=/data-manager-ui
80106 tags : ${{ steps.meta.outputs.tags }}
81107 labels : ${{ steps.meta.outputs.labels }}
82108
109+ trigger-awx-test :
110+ needs : [release, build-image]
111+ if : needs.release.outputs.new_release_published == 'true' && contains(needs.release.outputs.new_release_version, '-dev.')
112+ runs-on : ubuntu-latest
113+ environment : awx/dls-test
114+ steps :
83115 - name : Trigger AWX test
84- # Run only if released AND it is a dev version
85- if : ${{ steps.semantic.outputs.new_release_published == 'true' && contains(steps.semantic.outputs.new_release_version, '-dev.') }}
86116 uses : informaticsmatters/trigger-awx-action@v2
87117 with :
88118 template : Squonk/2 Data Manager UI -test-
89119 template-host : ${{ secrets.AWX_HOST }}
90120 template-user : ${{ secrets.AWX_USER }}
91121 template-user-password : ${{ secrets.AWX_USER_PASSWORD }}
92122 template-var : maui_image_tag
93- template-var-value : ${{ steps.semantic .outputs.new_release_version }}
123+ template-var-value : ${{ needs.release .outputs.new_release_version }}
94124
125+ trigger-awx-production :
126+ needs : [release, build-image]
127+ if : needs.release.outputs.new_release_published == 'true' && !contains(needs.release.outputs.new_release_version, '-dev.')
128+ runs-on : ubuntu-latest
129+ environment : awx/im-main
130+ steps :
95131 - name : Trigger AWX production
96- # Run only if released AND it is NOT a dev version
97- if : ${{ steps.semantic.outputs.new_release_published == 'true' && !contains(steps.semantic.outputs.new_release_version, '-dev.') }}
98132 uses : informaticsmatters/trigger-awx-action@v1
99133 with :
100134 template : Data Manager UI -production-
101135 template-host : ${{ secrets.AWX_HOST }}
102136 template-user : ${{ secrets.AWX_USER }}
103137 template-user-password : ${{ secrets.AWX_USER_PASSWORD }}
104138 template-var : maui_image_tag
105- template-var-value : ${{ steps.semantic .outputs.new_release_version }}
139+ template-var-value : ${{ needs.release .outputs.new_release_version }}
0 commit comments