Skip to content

Commit 587c8ff

Browse files
Update create_new_release.yml
1 parent 76cc281 commit 587c8ff

File tree

1 file changed

+46
-52
lines changed

1 file changed

+46
-52
lines changed
Lines changed: 46 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
name: Old Create Release
1+
name: Create Release
22

33
on:
44
workflow_call:
55
inputs:
66
is_prerelease:
7-
description: 'Create a prerelease:'
87
type: boolean
98
required: true
109
default: false
1110
is_draft:
12-
description: 'Set as a draft:'
1311
type: boolean
1412
required: true
1513
default: false
@@ -28,58 +26,54 @@ env:
2826
jobs:
2927
create-release:
3028
runs-on: ubuntu-latest
31-
3229
steps:
33-
- name: Check For Valid Prerelease
34-
if: ${{ ( env.ALLOW_PRERELEASE == 'true' && inputs.is_prerelease == 'false' ) || ( github.ref == 'refs/heads/main' && inputs.is_prerelease == 'true' ) }}
35-
run: |
36-
echo "Prereleases should not be triggered on the main branch, please use development or hotfix"
37-
exit 1
30+
- name: Validate prerelease usage
31+
if: ${{ ( env.ALLOW_PRERELEASE == 'true' && inputs.is_prerelease == false ) || ( github.ref == 'refs/heads/main' && inputs.is_prerelease == true ) }}
32+
run: |
33+
echo "Prereleases should not be triggered on main; use develop or hotfix/*."
34+
exit 1
3835
39-
- name: Checkout code
40-
uses: actions/checkout@v4
41-
with:
42-
fetch-depth: 0
36+
- name: Checkout (full history for NBGV)
37+
uses: actions/checkout@v4
38+
with:
39+
fetch-depth: 0 # required by nbgv
4340

44-
- name: Ensure Nerdbank.GitVersioning tool is installed
45-
run: |
46-
if ! dotnet tool list -g | grep -q nbgv; then
47-
dotnet tool install --global nbgv
48-
else
49-
dotnet tool update --global nbgv
50-
fi
41+
- name: Nerdbank.GitVersioning (install + outputs)
42+
id: nbgv
43+
uses: dotnet/nbgv@v0.4.2
44+
with:
45+
toolVersion: 3.8.38-alpha # pin to your current CLI
46+
setAllVars: false # optional: true to export NBGV_* env vars
5147

52-
- name: Get version from Nerdbank.GitVersioning
53-
id: nbgv
54-
run: |
55-
nbgv get-version --format json > nbgv.json
56-
version=$(jq -r .NuGetPackageVersion nbgv.json)
57-
echo "version_tag=$version" >> $GITHUB_ENV
48+
- name: Sanity-check release type vs computed version
49+
run: |
50+
PRE="${{ steps.nbgv.outputs.PrereleaseVersion }}"
51+
if [[ "${{ inputs.is_prerelease }}" == "true" && -z "$PRE" ]]; then
52+
echo "Requested prerelease but NBGV computed a stable version."
53+
exit 1
54+
fi
55+
if [[ "${{ inputs.is_prerelease }}" == "false" && -n "$PRE" ]]; then
56+
echo "Requested stable release but NBGV computed a prerelease ($PRE)."
57+
exit 1
58+
fi
5859
59-
- name: Commit and Push Version Change
60-
run: |
61-
# Update version.json with the new version_tag
62-
jq --arg ver "${{ env.version_tag }}" '.version = $ver' version.json > tmp_version.json && mv tmp_version.json version.json
63-
64-
git config --global user.name '${{ github.triggering_actor }}'
65-
git config --global user.email '${{ github.triggering_actor }}@users.noreply.github.com'
66-
git add version.json
67-
if git diff --cached --quiet; then
68-
echo "No version change to commit."
69-
else
70-
git commit -m "Update version to ${{ env.version_tag }} for release."
71-
git push
72-
fi
60+
- name: Tag current commit with NBGV
61+
run: |
62+
git config user.name "${{ github.actor }}"
63+
git config user.email "${{ github.actor }}@users.noreply.github.com"
64+
nbgv tag || echo "Tag may already exist."
65+
git push origin "v${{ steps.nbgv.outputs.NuGetPackageVersion }}" || echo "Tag exists on remote."
7366
74-
- name: Create Release
75-
run: |
76-
echo "Creating release ${{ env.version_tag }}"
77-
gh release create ${{ env.version_tag }} \
78-
--target ${{ github.ref_name }} \
79-
--title ${{ env.version_tag }} \
80-
--generate-notes \
81-
$(if [[ "${{ inputs.is_draft }}" == "true" ]]; then echo "--draft"; fi) \
82-
$(if [[ "${{ inputs.is_prerelease }}" == "true" ]]; then echo "--prerelease"; fi) \
83-
$(if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then echo "--latest"; fi)
84-
env:
85-
GH_TOKEN: ${{ secrets.GH_TOKEN }}
67+
- name: Create GitHub Release
68+
env:
69+
GH_TOKEN: ${{ secrets.GH_TOKEN }}
70+
run: |
71+
FLAGS=()
72+
[[ "${{ inputs.is_draft }}" == "true" ]] && FLAGS+=(--draft)
73+
[[ "${{ inputs.is_prerelease }}" == "true" ]] && FLAGS+=(--prerelease)
74+
if [[ "${{ github.ref }}" == "refs/heads/main" && "${{ inputs.is_prerelease }}" != "true" ]]; then
75+
FLAGS+=(--latest)
76+
fi
77+
TAG="v${{ steps.nbgv.outputs.NuGetPackageVersion }}"
78+
echo "Creating release ${TAG}"
79+
gh release create "${TAG}" --title "${TAG}" --generate-notes "${FLAGS[@]}"

0 commit comments

Comments
 (0)