Skip to content

ci: align Apple signing secrets with the org-provided names, and stop signing the weekly build - #263

Merged
Naruto merged 2 commits into
developfrom
ci/apple-signing-secret-names
Aug 7, 2026
Merged

ci: align Apple signing secrets with the org-provided names, and stop signing the weekly build#263
Naruto merged 2 commits into
developfrom
ci/apple-signing-secret-names

Conversation

@Naruto

@Naruto Naruto commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

Two related changes to how this repo handles the Apple Developer ID certificate.

1. release.yml — rename the secrets. They were provisioned at the organization level under different names than the workflow assumed. This mattered more than a rename usually does: every signing step treats an empty secret as "not configured", skips its work, and returns success. With the names mismatched, a fully green release run would still have produced unsigned macOS/iOS GDExtension frameworks.

Old New
SS_APPLE_CERTIFICATE APPLE_DEV_ID_APP_CERT
SS_APPLE_CERTIFICATE_PASSWORD APPLE_DEV_ID_APP_CERT_PASS
SS_APPLE_SIGNING_IDENTITY APPLE_DEV_ID_APP_NAME
SS_APPLE_API_ISSUER ASC_API_ISSUER_ID
SS_APPLE_API_KEY ASC_API_KEY_ID
SS_APPLE_API_KEY_BASE64 ASC_API_KEY_PASS

Only the secrets.* right-hand sides change. The env var names the release scripts read (APPLE_SIGNING_IDENTITY, APPLE_API_ISSUER, APPLE_API_KEY, APPLE_API_KEY_PATH) are untouched, so release-gdextension-macos.sh and release-gdextension-ios.sh keep working unchanged locally. The script comments that named the old secrets are updated to match.

2. weekly.yml — stop signing entirely. The weekly build is continuous verification of our own tree, not something we distribute, so it has no business handling the Developer ID certificate. Signing belongs to release.yml alone, and keeping the certificate out of a scheduled job that runs unattended every week is the smaller attack surface. This drops the "Set up signing keychain" step, the APPLE_SIGNING_IDENTITY hand-off to the macOS/iOS build steps, and the now-unused KEYCHAIN_PATH workflow env.

The builds themselves are unchanged — the scripts already no-op on signing when APPLE_SIGNING_IDENTITY is absent, so the artifacts are simply unsigned. That was already the tolerated outcome: the keychain step carried continue-on-error: true with the comment 「Weeklyでは署名できなくても通す」.

Notes on the mapping

  • ASC_API_KEY_PASS holds the base64 of the .p8 private key, despite what its name suggests, so it maps to the key file the notarization step decodes — not to a passphrase. Worth confirming on the first signed run.
  • TMP_KC_PASS is deliberately unused. release.yml still generates the temporary keychain password per run with openssl rand, which is strictly better than sharing one value across runs. A comment records why.
  • The sibling repos got the identical rename: SpriteStudio-SDK and SSConverterGUI (both merged).

Verification

Both workflows parse as valid YAML. No SS_APPLE_* references remain in the tree, and after the second commit weekly.yml has no secrets., KEYCHAIN or codesign references left at all.

The signing itself cannot be verified from this branch — release only runs on workflow_dispatch, and org secrets are not exposed to a non-permitted repository. Two things to check after merge:

  1. A macOS/iOS release run's log does not report skipped signing or notarization. Those lines are the failure mode this PR exists to prevent, and they do not fail the job.
  2. SSPlayerForGodot is on the repository access list of the org secrets. This repo lives under the SpriteStudio org, so the cri-middleware org secrets must be shared with it explicitly — the most likely thing to still be missing.

Naruto added 2 commits August 7, 2026 12:06
The organization-level secrets were provisioned under different names than
the ones the workflows assumed, so every signing step would have silently
no-opped: each treats an empty secret as "not configured", skips, and
returns success. Only the `secrets.*` right-hand sides change; the env var
names the release scripts read (APPLE_SIGNING_IDENTITY, APPLE_API_*) stay
as they are.

  SS_APPLE_CERTIFICATE          -> APPLE_DEV_ID_APP_CERT
  SS_APPLE_CERTIFICATE_PASSWORD -> APPLE_DEV_ID_APP_CERT_PASS
  SS_APPLE_SIGNING_IDENTITY     -> APPLE_DEV_ID_APP_NAME
  SS_APPLE_API_ISSUER           -> ASC_API_ISSUER_ID
  SS_APPLE_API_KEY              -> ASC_API_KEY_ID
  SS_APPLE_API_KEY_BASE64       -> ASC_API_KEY_PASS

ASC_API_KEY_PASS holds the base64 of the .p8 private key despite its name,
so it maps to the key file the notarization step decodes -- not to a
passphrase.

weekly.yml carries the same keychain and signing steps as release.yml and
is renamed alongside it, so the weekly macOS/iOS builds keep being signed.

TMP_KC_PASS is deliberately left unused: the temporary keychain password is
still generated per run with `openssl rand`, which is strictly better than
sharing one value across runs.

Matches the same change in SpriteStudio-SDK and SSConverterGUI.
The weekly build is continuous verification of our own tree, not something we
distribute, so it has no business handling the Developer ID certificate.
Signing belongs to release.yml alone, and keeping the certificate out of a
scheduled job that runs unattended every week is the smaller attack surface.

Drops the "Set up signing keychain" step, the APPLE_SIGNING_IDENTITY hand-off
to the macOS/iOS build steps, and the now-unused KEYCHAIN_PATH workflow env.
The release scripts already no-op on signing when APPLE_SIGNING_IDENTITY is
absent, so the builds themselves are unchanged -- their artifacts are simply
unsigned, which is what the step's `continue-on-error: true` was tolerating
anyway.
@Naruto Naruto changed the title ci: align Apple signing secrets with the org-provided names ci: align Apple signing secrets with the org-provided names, and stop signing the weekly build Aug 7, 2026
@Naruto
Naruto merged commit 1cba9e4 into develop Aug 7, 2026
0 of 2 checks passed
@Naruto
Naruto deleted the ci/apple-signing-secret-names branch August 7, 2026 03:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant