6262 - name : Check out repository
6363 uses : actions/checkout@v4
6464
65+ - name : Decide whether to build signed macOS release
66+ id : release-gate
67+ run : |
68+ signed_release=true
69+ missing=()
70+ for name in \
71+ TASKERS_MACOS_CERTIFICATE_P12_BASE64 \
72+ TASKERS_MACOS_CERTIFICATE_PASSWORD \
73+ TASKERS_MACOS_CODESIGN_IDENTITY \
74+ TASKERS_MACOS_NOTARY_APPLE_ID \
75+ TASKERS_MACOS_NOTARY_TEAM_ID \
76+ TASKERS_MACOS_NOTARY_PASSWORD; do
77+ if [[ -z "${!name:-}" ]]; then
78+ missing+=("${name}")
79+ signed_release=false
80+ fi
81+ done
82+
83+ echo "signed_release=${signed_release}" >> "$GITHUB_OUTPUT"
84+
85+ if [[ "${signed_release}" != "true" ]]; then
86+ echo "Building unsigned macOS DMG; missing signing/notary secrets: ${missing[*]}"
87+ fi
88+
6589 - name : Install Rust toolchain
6690 uses : dtolnay/rust-toolchain@stable
6791
@@ -78,27 +102,8 @@ jobs:
78102 brew update
79103 brew install xcodegen
80104
81- - name : Validate macOS release credentials
82- run : |
83- missing=0
84- for name in \
85- TASKERS_MACOS_CERTIFICATE_P12_BASE64 \
86- TASKERS_MACOS_CERTIFICATE_PASSWORD \
87- TASKERS_MACOS_CODESIGN_IDENTITY \
88- TASKERS_MACOS_NOTARY_APPLE_ID \
89- TASKERS_MACOS_NOTARY_TEAM_ID \
90- TASKERS_MACOS_NOTARY_PASSWORD; do
91- if [[ -z "${!name:-}" ]]; then
92- echo "::error::Missing required secret ${name}"
93- missing=1
94- fi
95- done
96-
97- if [[ $missing -ne 0 ]]; then
98- exit 1
99- fi
100-
101105 - name : Install Developer ID certificate
106+ if : steps.release-gate.outputs.signed_release == 'true'
102107 run : bash scripts/install_macos_codesign_certificate.sh
103108
104109 - name : Generate Xcode project
@@ -123,6 +128,7 @@ jobs:
123128 run : bash scripts/build_macos_dmg.sh
124129
125130 - name : Notarize and staple universal DMG
131+ if : steps.release-gate.outputs.signed_release == 'true'
126132 run : |
127133 version="$(sed -n 's/^version = \"\\(.*\\)\"/\\1/p' Cargo.toml | head -n1)"
128134 bash scripts/notarize_macos_dmg.sh "dist/Taskers-v${version}-universal2.dmg"
@@ -179,11 +185,21 @@ jobs:
179185 mkdir -p dist/release
180186 find dist -type f -exec cp {} dist/release/ \;
181187
188+ - name : Prepare release asset list
189+ id : release-files
190+ run : |
191+ {
192+ echo 'files<<EOF'
193+ echo 'dist/release/taskers-manifest-v*.json'
194+ echo 'dist/release/taskers-linux-bundle-v*.tar.xz'
195+ if compgen -G 'dist/release/Taskers-v*-universal2.dmg' > /dev/null; then
196+ echo 'dist/release/Taskers-v*-universal2.dmg'
197+ fi
198+ echo 'EOF'
199+ } >> "$GITHUB_OUTPUT"
200+
182201 - name : Create draft GitHub release with assets
183202 uses : softprops/action-gh-release@v2
184203 with :
185204 draft : true
186- files : |
187- dist/release/taskers-manifest-v*.json
188- dist/release/taskers-linux-bundle-v*.tar.xz
189- dist/release/Taskers-v*-universal2.dmg
205+ files : ${{ steps.release-files.outputs.files }}
0 commit comments