Skip to content

Commit 0000000

Browse files
committed
feat: Rename nightly release tag in semver format
1 parent c585567 commit 0000000

File tree

1 file changed

+36
-18
lines changed

1 file changed

+36
-18
lines changed

.github/workflows/nightly-build.yml

+36-18
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ jobs:
2727
runs-on: ubuntu-latest
2828
# This job is required by the release job, so we should make it run both from Nushell repo and nightly repo
2929
# if: github.repository == 'nushell/nightly'
30+
# Map a step output to a job output
31+
outputs:
32+
skip: ${{ steps.vars.outputs.skip }}
33+
build_date: ${{ steps.vars.outputs.build_date }}
34+
nightly_tag: ${{ steps.vars.outputs.nightly_tag }}
3035
steps:
3136
- name: Checkout
3237
uses: actions/checkout@v4
@@ -59,16 +64,39 @@ jobs:
5964
# All the changes will be overwritten by the upstream main branch
6065
git reset --hard src/main
6166
git push origin main -f
67+
68+
- name: Create Tag and Output Tag Name
69+
if: github.repository == 'nushell/nightly'
70+
id: vars
71+
shell: nu {0}
72+
run: |
73+
let date = date now | format date %m%d
74+
let version = open Cargo.toml | get package.version
6275
let sha_short = (git rev-parse --short origin/main | str trim | str substring 0..6)
63-
let tag_name = $'nightly-($sha_short)'
64-
if (git ls-remote --tags origin $tag_name | is-empty) {
65-
git tag -a $tag_name -m $'Nightly build from ($sha_short)'
76+
let latest_meta = http get https://api.github.com/repos/nushell/nightly/releases
77+
| sort-by -r created_at | get tag_name?.0? | default ''
78+
| parse '{version}-nightly.{build}+{hash}'
79+
if ($latest_meta.0?.hash? | default '') == $sha_short {
80+
print $'(ansi g)Latest nightly build is up-to-date, skip creating tag.(ansi reset)'
81+
$'skip=true(char nl)' o>> $env.GITHUB_OUTPUT
82+
exit 0
83+
}
84+
let prev_ver = $latest_meta.0?.version? | default '0.0.0'
85+
let build = if ($latest_meta | is-empty) or ($version != $prev_ver) { 1 } else {
86+
($latest_meta | get build?.0? | default 0 | into int) + 1
87+
}
88+
let nightly_tag = $'($version)-nightly.($build)+($sha_short)'
89+
$'build_date=($date)(char nl)' o>> $env.GITHUB_OUTPUT
90+
$'nightly_tag=($nightly_tag)(char nl)' o>> $env.GITHUB_OUTPUT
91+
if (git ls-remote --tags origin $nightly_tag | is-empty) {
92+
git tag -a $nightly_tag -m $'Nightly build from ($sha_short)'
6693
git push origin --tags
6794
}
6895
6996
release:
7097
name: Nu
7198
needs: prepare
99+
if: needs.prepare.outputs.skip != 'true'
72100
strategy:
73101
fail-fast: false
74102
matrix:
@@ -121,9 +149,6 @@ jobs:
121149
os: ubuntu-22.04
122150

123151
runs-on: ${{matrix.os}}
124-
# Map a step output to a job output
125-
outputs:
126-
sha_short: ${{ steps.vars.outputs.sha_short }}
127152
steps:
128153
- uses: actions/checkout@v4
129154
with:
@@ -164,13 +189,6 @@ jobs:
164189
search_existing: open
165190
filename: .github/AUTO_ISSUE_TEMPLATE/nightly-build-fail.md
166191

167-
- name: Set Outputs of Short SHA
168-
id: vars
169-
run: |
170-
echo "date=$(date -u +'%Y-%m-%d')" >> $GITHUB_OUTPUT
171-
sha_short=$(git rev-parse --short HEAD)
172-
echo "sha_short=${sha_short:0:7}" >> $GITHUB_OUTPUT
173-
174192
# REF: https://github.com/marketplace/actions/gh-release
175193
# Create a release only in nushell/nightly repo
176194
- name: Publish Archive
@@ -179,13 +197,13 @@ jobs:
179197
with:
180198
prerelease: true
181199
files: ${{ steps.nu.outputs.archive }}
182-
tag_name: nightly-${{ steps.vars.outputs.sha_short }}
183-
name: Nu-nightly-${{ steps.vars.outputs.date }}-${{ steps.vars.outputs.sha_short }}
200+
tag_name: ${{ needs.prepare.outputs.nightly_tag }}
201+
name: ${{ needs.prepare.outputs.build_date }}-${{ needs.prepare.outputs.nightly_tag }}
184202
env:
185203
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
186204

187205
sha256sum:
188-
needs: release
206+
needs: [prepare, release]
189207
name: Create Sha256sum
190208
runs-on: ubuntu-latest
191209
if: github.repository == 'nushell/nightly'
@@ -194,7 +212,7 @@ jobs:
194212
env:
195213
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
196214
run: >-
197-
gh release download nightly-${{ needs.release.outputs.sha_short }}
215+
gh release download ${{ needs.prepare.outputs.nightly_tag }}
198216
--repo ${{ github.repository }}
199217
--pattern '*'
200218
--dir release
@@ -206,7 +224,7 @@ jobs:
206224
draft: false
207225
prerelease: true
208226
files: SHA256SUMS
209-
tag_name: nightly-${{ needs.release.outputs.sha_short }}
227+
tag_name: ${{ needs.prepare.outputs.nightly_tag }}
210228
env:
211229
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
212230

0 commit comments

Comments
 (0)