Skip to content

Commit 8080e5e

Browse files
committed
build: publish unsigned macOS DMGs when signing secrets are absent
1 parent c0e2b1c commit 8080e5e

1 file changed

Lines changed: 40 additions & 24 deletions

File tree

.github/workflows/release-assets.yml

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,30 @@ jobs:
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

Comments
 (0)