@@ -2,6 +2,10 @@ name: Publish Artifacts
22
33on :
44 workflow_call :
5+ outputs :
6+ signing_enabled :
7+ description : " Whether package signing was enabled for this run."
8+ value : ${{ jobs.package.outputs.signing_enabled }}
59 inputs :
610 package_version :
711 description : " Optional package version, usually the release tag without the leading v."
3640 default : true
3741 secrets :
3842 NUGET_SIGN_CERTIFICATE_BASE64 :
39- required : true
43+ required : false
4044 NUGET_SIGN_CERTIFICATE_PASSWORD :
41- required : true
45+ required : false
4246 NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT :
43- required : true
47+ required : false
4448 NUGET_SIGN_TIMESTAMP_URL :
45- required : true
49+ required : false
4650
4751permissions :
4852 contents : read
5155 package :
5256 name : Pack packages
5357 runs-on : ubuntu-latest
58+ outputs :
59+ signing_enabled : ${{ steps.signing.outputs.enabled }}
5460
5561 steps :
5662 - name : Checkout
@@ -137,32 +143,38 @@ jobs:
137143 -o nupkg
138144 -p:PackageVersion=${{ steps.version.outputs.redis_version }}
139145
140- - name : Import signing certificate
146+ - name : Resolve signing mode
147+ id : signing
141148 env :
142149 NUGET_SIGN_CERTIFICATE_BASE64 : ${{ secrets.NUGET_SIGN_CERTIFICATE_BASE64 }}
150+ NUGET_SIGN_CERTIFICATE_PASSWORD : ${{ secrets.NUGET_SIGN_CERTIFICATE_PASSWORD }}
151+ NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT : ${{ secrets.NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT }}
152+ NUGET_SIGN_TIMESTAMP_URL : ${{ secrets.NUGET_SIGN_TIMESTAMP_URL }}
143153 run : |
144- if [ -z "$NUGET_SIGN_CERTIFICATE_BASE64" ]; then
145- echo "NUGET_SIGN_CERTIFICATE_BASE64 secret is required for package signing." >&2
146- exit 1
154+ if [ -n "$NUGET_SIGN_CERTIFICATE_BASE64" ] \
155+ && [ -n "$NUGET_SIGN_CERTIFICATE_PASSWORD" ] \
156+ && [ -n "$NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT" ] \
157+ && [ -n "$NUGET_SIGN_TIMESTAMP_URL" ]; then
158+ echo "enabled=true" >> "$GITHUB_OUTPUT"
159+ echo "Package signing enabled."
160+ else
161+ echo "enabled=false" >> "$GITHUB_OUTPUT"
162+ echo "Package signing disabled. Continuing with unsigned packages."
147163 fi
148164
165+ - name : Import signing certificate
166+ if : ${{ steps.signing.outputs.enabled == 'true' }}
167+ env :
168+ NUGET_SIGN_CERTIFICATE_BASE64 : ${{ secrets.NUGET_SIGN_CERTIFICATE_BASE64 }}
169+ run : |
149170 printf '%s' "$NUGET_SIGN_CERTIFICATE_BASE64" | base64 --decode > signing-cert.pfx
150171
151172 - name : Sign packages
173+ if : ${{ steps.signing.outputs.enabled == 'true' }}
152174 env :
153175 NUGET_SIGN_CERTIFICATE_PASSWORD : ${{ secrets.NUGET_SIGN_CERTIFICATE_PASSWORD }}
154176 NUGET_SIGN_TIMESTAMP_URL : ${{ secrets.NUGET_SIGN_TIMESTAMP_URL }}
155177 run : |
156- if [ -z "$NUGET_SIGN_CERTIFICATE_PASSWORD" ]; then
157- echo "NUGET_SIGN_CERTIFICATE_PASSWORD secret is required for package signing." >&2
158- exit 1
159- fi
160-
161- if [ -z "$NUGET_SIGN_TIMESTAMP_URL" ]; then
162- echo "NUGET_SIGN_TIMESTAMP_URL secret is required for package signing." >&2
163- exit 1
164- fi
165-
166178 for package in nupkg/*.nupkg; do
167179 dotnet nuget sign "$package" \
168180 --certificate-path signing-cert.pfx \
@@ -174,14 +186,10 @@ jobs:
174186 done
175187
176188 - name : Verify signed packages
189+ if : ${{ steps.signing.outputs.enabled == 'true' }}
177190 env :
178191 NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT : ${{ secrets.NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT }}
179192 run : |
180- if [ -z "$NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT" ]; then
181- echo "NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT secret is required for package verification." >&2
182- exit 1
183- fi
184-
185193 for package in nupkg/*.nupkg; do
186194 dotnet nuget verify "$package" \
187195 --all \
0 commit comments