@@ -5,15 +5,14 @@ on: # yamllint disable-line rule:truthy
55 tags :
66 - v[0-9]+.[0-9]+.[0-9]+
77
8- jobs :
9- release :
10- permissions :
11- contents : write
8+ # default permissions as read only
9+ permissions : read-all
1210
11+ jobs :
12+ build :
1313 runs-on : ubuntu-latest
1414 env :
1515 IMG_BASE : quay.io/sustainable_computing_io
16-
1716 steps :
1817 - name : Checkout source
1918 uses : actions/checkout@v5
@@ -90,19 +89,14 @@ jobs:
9089 # Currently the binary is built for linux-amd64 only
9190 tar -czvf bin/kepler-${VERSION}.linux-amd64.tar.gz bin/kepler
9291
93- - name : Create GitHub Release
94- uses : softprops/action-gh-release@v2
92+ - name : Upload Release Artifacts
93+ uses : actions/upload-artifact@v4
9594 with :
96- tag_name : ${{ github.ref_name }}
97- name : release-${{ steps.version.outputs.version }}
98- generate_release_notes : true
99- draft : false
100- make_latest : true
101- files : |
95+ name : release-artifacts
96+ retention-days : 1 # Keep the artifacts for 1 day
97+ path : |
10298 helm-releases/*.tgz
10399 bin/*.tar.gz
104- env :
105- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
106100
107101 - name : Push Image
108102 shell : bash
@@ -116,3 +110,38 @@ jobs:
116110 # Remove 'v' prefix from version
117111 CHART_VERSION=${VERSION#v}
118112 helm push helm-releases/kepler-helm-${CHART_VERSION}.tgz oci://${{ env.IMG_BASE }}/charts
113+
114+ release :
115+ needs : build
116+ permissions :
117+ # contents: write is required for publishing Github Releases
118+ # This follows Github's recommended pattern: top-level read-all with minimal job-level permissions
119+ # See: https://github.com/softprops/action-gh-release?tab=readme-ov-file#permissions
120+ contents : write
121+ runs-on : ubuntu-latest
122+ steps :
123+ - name : Download Release Artifacts
124+ uses : actions/download-artifact@v4
125+ with :
126+ name : release-artifacts
127+
128+ - name : Extract version
129+ shell : bash
130+ id : version
131+ run : |
132+ TAG_NAME=${{ github.ref_name }}
133+ echo "version=$TAG_NAME" >> "$GITHUB_OUTPUT"
134+
135+ - name : Create GitHub Release
136+ uses : softprops/action-gh-release@v2
137+ with :
138+ tag_name : ${{ github.ref_name }}
139+ name : release-${{ steps.version.outputs.version }}
140+ generate_release_notes : true
141+ draft : false
142+ make_latest : true
143+ files : |
144+ helm-releases/*.tgz
145+ bin/*.tar.gz
146+ env :
147+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments