From 6b9e69b514f29c4e41adbef3197ae4a18f319eee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=A8=E8=8B=92?= <16112591+chen-ran@users.noreply.github.com> Date: Sat, 11 Apr 2026 23:41:54 +0800 Subject: [PATCH] chore(ci): add tauri macOS signing --- .github/workflows/tauri-ci.yml | 26 ++++++++++++++++++++++++++ .github/workflows/tauri-release.yml | 26 ++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/.github/workflows/tauri-ci.yml b/.github/workflows/tauri-ci.yml index 7e7564c9..18951e20 100644 --- a/.github/workflows/tauri-ci.yml +++ b/.github/workflows/tauri-ci.yml @@ -80,6 +80,32 @@ jobs: - name: Install JS dependencies run: pnpm install --frozen-lockfile + # macOS code signing with certificate secrets. + - name: Prepare macOS code signing + if: ${{ matrix.platform == 'macos-latest' && secrets.APPLE_CERTIFICATE != '' && secrets.APPLE_CERTIFICATE_PASSWORD != '' }} + env: + APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} + APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} + run: | + set -euo pipefail + KEYCHAIN_PASSWORD="github-actions-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT:-1}" + echo "$APPLE_CERTIFICATE" | base64 --decode > "$RUNNER_TEMP/certificate.p12" + security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain + security set-keychain-settings -t 3600 -u build.keychain + security import "$RUNNER_TEMP/certificate.p12" -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" build.keychain + curl -fsSL -o "$RUNNER_TEMP/DeveloperIDG2CA.cer" https://www.apple.com/certificateauthority/DeveloperIDG2CA.cer + security add-certificates -k build.keychain "$RUNNER_TEMP/DeveloperIDG2CA.cer" + security find-identity -v -p codesigning build.keychain + IDENTITY=$(security find-identity -v -p codesigning build.keychain | awk -F'"' '/Developer ID Application/ { print $2; exit }') + if [[ -z "$IDENTITY" ]]; then + echo "No Developer ID Application identity in build keychain" + exit 1 + fi + echo "APPLE_SIGNING_IDENTITY=$IDENTITY" >> "$GITHUB_ENV" + - name: Build Tauri app uses: tauri-apps/tauri-action@v0 env: diff --git a/.github/workflows/tauri-release.yml b/.github/workflows/tauri-release.yml index b16d93be..cf1c1eeb 100644 --- a/.github/workflows/tauri-release.yml +++ b/.github/workflows/tauri-release.yml @@ -100,6 +100,32 @@ jobs: - name: Install JS dependencies run: pnpm install --frozen-lockfile + # macOS code signing with certificate secrets. + - name: Prepare macOS code signing + if: ${{ matrix.platform == 'macos-latest' && secrets.APPLE_CERTIFICATE != '' && secrets.APPLE_CERTIFICATE_PASSWORD != '' }} + env: + APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} + APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} + run: | + set -euo pipefail + KEYCHAIN_PASSWORD="github-actions-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT:-1}" + echo "$APPLE_CERTIFICATE" | base64 --decode > "$RUNNER_TEMP/certificate.p12" + security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain + security set-keychain-settings -t 3600 -u build.keychain + security import "$RUNNER_TEMP/certificate.p12" -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" build.keychain + curl -fsSL -o "$RUNNER_TEMP/DeveloperIDG2CA.cer" https://www.apple.com/certificateauthority/DeveloperIDG2CA.cer + security add-certificates -k build.keychain "$RUNNER_TEMP/DeveloperIDG2CA.cer" + security find-identity -v -p codesigning build.keychain + IDENTITY=$(security find-identity -v -p codesigning build.keychain | awk -F'"' '/Developer ID Application/ { print $2; exit }') + if [[ -z "$IDENTITY" ]]; then + echo "No Developer ID Application identity in build keychain" + exit 1 + fi + echo "APPLE_SIGNING_IDENTITY=$IDENTITY" >> "$GITHUB_ENV" + - name: Prepare Tauri build args id: tauri-args shell: bash