Xcode Cloud の環境変数を全フェーズと Run Script Build Phase で確認する
概要
前提として、検証対象は iOS アプリです。macOS アプリの場合は Developer ID 署名関連の変数など、一部の結果が異なります。
Xcode Cloud の Environment variable reference に載っている環境変数を、ci_post_clone.sh ci_pre_xcodebuild.sh ci_post_xcodebuild.sh の 3 フェーズと、Xcode プロジェクトに追加した Run Script Build Phase から出力し、ビルド・アーカイブ・テスト・分析の 4 アクションで実際の値を比較しました。
環境変数一覧
| 環境変数 | ビルド | アーカイブ | テスト | 分析 |
|---|---|---|---|---|
CI | TRUE | TRUE | TRUE | TRUE |
CI_XCODE_CLOUD | TRUE | TRUE | TRUE | TRUE |
CI_BUILD_ID | <UUID> | <UUID> | <UUID> | <UUID> |
CI_BUILD_NUMBER | <ビルド番号> | <ビルド番号> | <ビルド番号> | <ビルド番号> |
CI_BUILD_URL | https://appstoreconnect.apple.com/teams/<TeamID>/apps/<APP_ID>/ci/builds/<UUID> | https://appstoreconnect.apple.com/teams/<TeamID>/apps/<APP_ID>/ci/builds/<UUID> | https://appstoreconnect.apple.com/teams/<TeamID>/apps/<APP_ID>/ci/builds/<UUID> | https://appstoreconnect.apple.com/teams/<TeamID>/apps/<APP_ID>/ci/builds/<UUID> |
CI_BUNDLE_ID | <BundleID> | <BundleID> | <BundleID> | <BundleID> |
CI_COMMIT | <commit-sha> | <commit-sha> | <commit-sha> | <commit-sha> |
CI_DERIVED_DATA_PATH | /Volumes/workspace/DerivedData | /Volumes/workspace/DerivedData | /Volumes/workspace/DerivedData | /Volumes/workspace/DerivedData |
CI_PRIMARY_REPOSITORY_PATH | /Volumes/workspace/repository | /Volumes/workspace/repository | /Volumes/workspace/repository(test-without-building フェーズでは未設定) | /Volumes/workspace/repository |
CI_PRODUCT | <ProductName> | <ProductName> | <ProductName> | <ProductName> |
CI_PRODUCT_ID | <UUID> | <UUID> | <UUID> | <UUID> |
CI_PRODUCT_PLATFORM | iOS | iOS | iOS | iOS |
CI_PROJECT_FILE_PATH | /Volumes/workspace/repository/<ProjectName>.xcodeproj | /Volumes/workspace/repository/<ProjectName>.xcodeproj | /Volumes/workspace/repository/<ProjectName>.xcodeproj | /Volumes/workspace/repository/<ProjectName>.xcodeproj |
CI_START_CONDITION | pr_update | pr_update | - | - |
CI_TEAM_ID | <TeamID> | <TeamID> | <TeamID> | <TeamID> |
CI_WORKFLOW | <WorkflowName> | <WorkflowName> | <WorkflowName> | <WorkflowName> |
CI_WORKFLOW_ID | <UUID> | <UUID> | <UUID> | <UUID> |
CI_WORKSPACE_PATH | /Volumes/workspace | /Volumes/workspace | /Volumes/workspace | /Volumes/workspace |
CI_XCODE_PROJECT | <ProjectName>.xcodeproj | <ProjectName>.xcodeproj | <ProjectName>.xcodeproj | <ProjectName>.xcodeproj |
CI_XCODE_SCHEME | <SchemeName> | <SchemeName> | <SchemeName> | <SchemeName> |
CI_XCODEBUILD_ACTION | build | archive | build-for-testing → test-without-building | analyze |
CI_XCODEBUILD_EXIT_CODE | 未設定(ci_post_xcodebuild.sh でのみ 0) | 未設定(ci_post_xcodebuild.sh でのみ 0) | 未設定(ci_post_xcodebuild.sh でのみ 0) | 未設定(ci_post_xcodebuild.sh でのみ 0) |
HTTP_PROXY | 未設定 | 未設定 | 未設定 | 未設定 |
HTTPS_PROXY | 未設定 | 未設定 | 未設定 | 未設定 |
CI_BRANCH | <ブランチ名> | <ブランチ名> | <ブランチ名> | <ブランチ名> |
CI_TAG | 未設定(タグトリガー時のみ設定) | 未設定(タグトリガー時のみ設定) | 未設定(タグトリガー時のみ設定) | 未設定(タグトリガー時のみ設定) |
CI_GIT_REF | refs/heads/<ブランチ名>(タグトリガー時は refs/tags/<タグ名>) | refs/heads/<ブランチ名>(タグトリガー時は refs/tags/<タグ名>) | refs/heads/<ブランチ名>(タグトリガー時は refs/tags/<タグ名>) | refs/heads/<ブランチ名>(タグトリガー時は refs/tags/<タグ名>) |
CI_PULL_REQUEST_HTML_URL | https://github.com/<owner>/<repo>/pull/<number> | https://github.com/<owner>/<repo>/pull/<number> | - | - |
CI_PULL_REQUEST_NUMBER | <number> | <number> | - | - |
CI_PULL_REQUEST_SOURCE_BRANCH | <ブランチ名> | <ブランチ名> | - | - |
CI_PULL_REQUEST_SOURCE_COMMIT | <commit-sha> | <commit-sha> | - | - |
CI_PULL_REQUEST_SOURCE_REPO | <owner>/<repo> | <owner>/<repo> | - | - |
CI_PULL_REQUEST_TARGET_BRANCH | <ブランチ名> | <ブランチ名> | - | - |
CI_PULL_REQUEST_TARGET_COMMIT | <commit-sha> | <commit-sha> | - | - |
CI_PULL_REQUEST_TARGET_REPO | <owner>/<repo> | <owner>/<repo> | - | - |
CI_RESULT_BUNDLE_PATH | /Volumes/workspace/resultbundle.xcresult | /Volumes/workspace/resultbundle.xcresult | /Volumes/workspace/resultbundle.xcresult | /Volumes/workspace/resultbundle.xcresult |
CI_TEST_DESTINATION_DEVICE_TYPE | 未設定 | 未設定 | iPhone 17 Pro(test-without-building フェーズでのみ) | 未設定 |
CI_TEST_DESTINATION_RUNTIME | 未設定 | 未設定 | iOS 26.5(test-without-building フェーズでのみ) | 未設定 |
CI_TEST_DESTINATION_UDID | 未設定 | 未設定 | <UUID>(test-without-building フェーズでのみ) | 未設定 |
CI_TEST_PLAN | 未設定 | 未設定 | <TestPlanName>(test-without-building フェーズでのみ) | 未設定 |
CI_TEST_PRODUCTS_PATH | 未設定 | 未設定 | /Volumes/workspace/TestProducts.xctestproducts(build-for-testing 以降) | 未設定 |
CI_AD_HOC_SIGNED_APP_PATH | 未設定 | /Volumes/workspace/adhocexport | 未設定 | 未設定 |
CI_APP_STORE_SIGNED_APP_PATH | 未設定 | /Volumes/workspace/appstoreexport | 未設定 | 未設定 |
CI_ARCHIVE_PATH | 未設定 | /Volumes/workspace/build.xcarchive | 未設定 | 未設定 |
CI_DEVELOPMENT_SIGNED_APP_PATH | 未設定 | /Volumes/workspace/developmentexport | 未設定 | 未設定 |
CI_DEVELOPER_ID_SIGNED_APP_PATH | 未設定(macOS 専用のため iOS では常に未設定) | 未設定 | 未設定 | 未設定 |
CI_XCODEBUILD_EXIT_CODE は xcodebuild コマンドの終了コードで、コマンド完了後に呼ばれる ci_post_xcodebuild.sh の時点で確定するのかなと思います。それを除き、ci_post_clone.sh ci_pre_xcodebuild.sh Run Script Build Phase ci_post_xcodebuild.sh のどのステップでも同じ値が取得できたため、ステップの違いは表から省いています。- は Pull Request トリガーでのみ値が入るため、手動実行で検証したテスト・分析では対象外としたことを示します。
まとめ
Xcode Cloud の環境変数がどのアクション・どのタイミングで見えるか迷ったら、参考にしてみてください。