From deca5f3a1dd863670a8b29159e959dfd9ff5786d Mon Sep 17 00:00:00 2001 From: Fedor Korotkov Date: Tue, 21 Jul 2026 09:57:44 -0400 Subject: [PATCH] Fix Tart release signing --- .ci/sign-release.sh | 25 +++++++++++++++++++++---- .github/workflows/release.yml | 6 ++++++ Resources/embedded.provisionprofile | Bin 12309 -> 12444 bytes 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/.ci/sign-release.sh b/.ci/sign-release.sh index 0c697f2..2a5f82a 100755 --- a/.ci/sign-release.sh +++ b/.ci/sign-release.sh @@ -2,13 +2,15 @@ set -eu +APP_PATH="dist/tart_darwin_all/tart.app" + if [ "${TART_RELEASE_SNAPSHOT:-false}" = "true" ]; then codesign \ --force \ --deep \ --sign - \ --entitlements Resources/tart-dev.entitlements \ - dist/tart_darwin_all/tart.app + "$APP_PATH" else codesign \ --force \ @@ -18,7 +20,22 @@ else --options runtime \ --keychain "$RUNNER_TEMP/build.keychain" \ --entitlements Resources/tart-prod.entitlements \ - dist/tart_darwin_all/tart.app - - codesign --verify --strict --verbose=2 dist/tart_darwin_all/tart.app + "$APP_PATH" +fi + +codesign --verify --strict --verbose=2 "$APP_PATH" +"$APP_PATH/Contents/MacOS/tart" --version + +if [ "${TART_RELEASE_SNAPSHOT:-false}" != "true" ]; then + NOTARIZATION_ARCHIVE="$RUNNER_TEMP/tart-notarization.zip" + + ditto -c -k --keepParent "$APP_PATH" "$NOTARIZATION_ARCHIVE" + xcrun notarytool submit "$NOTARIZATION_ARCHIVE" \ + --keychain-profile "notarytool" \ + --keychain "$RUNNER_TEMP/build.keychain" \ + --wait \ + --timeout 20m + xcrun stapler staple "$APP_PATH" + xcrun stapler validate "$APP_PATH" + spctl --assess --type execute --verbose=4 "$APP_PATH" fi diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 60240f0..52f53d9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,6 +28,7 @@ jobs: persist-credentials: false - name: Import signing certificate env: + AC_PASSWORD: ${{ secrets.AC_PASSWORD }} KEYCHAIN_PASSWORD: temporary-password MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} P12_PASSWORD: password101 @@ -48,6 +49,11 @@ jobs: -k "$KEYCHAIN_PASSWORD" \ "$RUNNER_TEMP/build.keychain" security list-keychain -d user -s "$RUNNER_TEMP/build.keychain" + xcrun notarytool store-credentials "notarytool" \ + --apple-id "hello@cirruslabs.org" \ + --team-id "9M2P8L4D89" \ + --password "$AC_PASSWORD" \ + --keychain "$RUNNER_TEMP/build.keychain" - name: Create release app token for this repo id: app-token uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1 diff --git a/Resources/embedded.provisionprofile b/Resources/embedded.provisionprofile index 68db80ef40457265a741130323092ba7316bf5e6..03dc7b45700fb3f27437d37d36ccac33d70b3094 100644 GIT binary patch delta 7573 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 T7uT0pk}Egb?dQ@xa^`;l#=asD