Skip to content

Commit 511fd7e

Browse files
Update release workflow: build, test, package
Rename workflow and reorganize release job: tighten tag trigger to a semver-like pattern, move repo write permission from workflow to the job, and add explicit Setup .NET (8.0) step. Add restore, test (with coverage collection), and coverage summary steps that append results to the GitHub step summary. Add publish, create a versioned ZIP of the publish output, and create a GitHub Release using the generated archive (also set GITHUB_TOKEN for the release step). Note: the changes introduce inconsistent names/ids (PRODUCT_NAME vs PROJECT_NAME and steps.get_version vs steps.version) that may need to be corrected in a follow-up.
1 parent 619f3d4 commit 511fd7e

1 file changed

Lines changed: 46 additions & 34 deletions

File tree

.github/workflows/release.yml

Lines changed: 46 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
name: Release
1+
name: Build and Package Release
22

33
on:
44
push:
55
tags:
6-
- "v*"
6+
- 'v[0-9]+.[0-9]+.[0-9]+*'
77

88
permissions:
9-
contents: write
9+
contents: read
1010

1111
env:
1212
PROJECT_NAME: OutSystems.PhoneNumberValidator
@@ -15,59 +15,71 @@ env:
1515
jobs:
1616
release:
1717
runs-on: ubuntu-latest
18-
18+
permissions:
19+
contents: write
1920
steps:
20-
- name: Checkout code
21-
uses: actions/checkout@v4
21+
- name: Checkout Code
22+
uses: actions/checkout@v4
23+
24+
- name: Setup .NET
25+
uses: actions/setup-dotnet@v4
26+
with:
27+
dotnet-version: '8.0.x'
2228

23-
- name: Setup .NET
24-
uses: actions/setup-dotnet@v4
25-
with:
26-
dotnet-version: 8.0.x
29+
# 1. Restore the solution (or both projects) for the target runtime
30+
- name: Restore dependencies
31+
run: dotnet restore ${{ env.PROJECT_NAME }}/${{ env.PROJECT_NAME }}.sln -r linux-x64
2732

28-
- name: Restore dependencies
29-
run: dotnet restore ${{ env.PROJECT_NAME }}/${{ env.PROJECT_NAME }}.sln -r linux-x64
33+
# --- THE GATEKEEPER: RUN TESTS ---
3034

31-
- name: Run tests
32-
run: |
35+
- name: Run tests
36+
run: |
3337
dotnet test ${{ env.PROJECT_NAME }}.UnitTests/${{ env.PROJECT_NAME }}.UnitTests.csproj \
3438
--configuration Release \
3539
--no-restore \
3640
--nologo \
3741
--collect:"XPlat Code Coverage" \
3842
--results-directory ./coverage
3943
40-
- name: Code Coverage Summary
41-
uses: irongut/CodeCoverageSummary@v1.3.0
42-
with:
43-
filename: coverage/**/coverage.cobertura.xml
44-
badge: true
45-
format: markdown
46-
output: both
44+
- name: Report Code Coverage (Optional Summary)
45+
uses: irongut/CodeCoverageSummary@v1.3.0
46+
with:
47+
filename: coverage/**/coverage.cobertura.xml
48+
badge: true
49+
format: markdown
50+
output: both
51+
52+
- name: Write coverage to summary
53+
run: cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY
4754

48-
- name: Write coverage to summary
49-
run: cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY
55+
# --- PACKAGING STEPS (Only runs if tests pass) ---
5056

51-
- name: Extract version from tag
52-
id: version
53-
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
57+
- name: Extract version from tag
58+
id: version
59+
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
5460

55-
- name: Publish
56-
run: |
61+
- name: Publish App
62+
run: |
5763
dotnet publish ${{ env.PROJECT_NAME }}/${{ env.PROJECT_NAME }}.csproj \
5864
-c Release \
5965
-r linux-x64 \
6066
--self-contained false \
6167
--no-restore \
6268
-o ./publish
6369
64-
- name: Create ZIP archive
65-
run: |
70+
- name: Create Versioned Zip
71+
run: |
6672
cd ./publish
6773
zip -r ../${{ env.PRODUCT_NAME }}_${{ steps.version.outputs.VERSION }}.zip .
74+
cd ..
6875
69-
- name: Create GitHub Release
70-
uses: softprops/action-gh-release@v2
71-
with:
76+
- name: Create GitHub Release
77+
uses: softprops/action-gh-release@v2
78+
with:
79+
files: ${{ env.PRODUCT_NAME }}_${{ steps.get_version.outputs.VERSION }}.zip
80+
name: Release ${{ steps.get_version.outputs.VERSION }}
81+
draft: false
82+
prerelease: false
7283
generate_release_notes: true
73-
files: ${{ env.PRODUCT_NAME }}_${{ steps.version.outputs.VERSION }}.zip
84+
env:
85+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)