翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
fastlane
前提条件
このチュートリアルを完了するには、まず以下を設定する必要があります。
-
AWS アカウント
-
証明書を保存するための S3 バケット
-
プロジェクトに fastlane がインストールされている - fastlane をインストールするためのガイド
ステップ 1: ローカルマシンで S3 で Fastlane Match を設定する
Fastlane Match
この例では、Amazon S3 バケットをストレージ用にセットアップして使用します。
-
プロジェクトで一致を初期化します。
fastlane match init
-
プロンプトが表示されたら、ストレージモードとして S3 を選択します。
-
「Matchfile」を更新して S3 を使用します。
storage_mode("s3") s3_bucket("your-s3-bucket-name") s3_region("your-aws-region") type("appstore") # The default type, can be: appstore, adhoc, enterprise or development
ステップ 2: Fastfile を設定する
次のレーンで `Fastfile` を作成または更新します。
CodeBuild では、アプリを構築して署名するたびに Fastlane Match を実行する必要があります。これを行う最も簡単な方法は、アプリを構築するレーンに match
アクションを追加することです。
default_platform(:ios)
platform :ios do
before_all do
setup_ci
end
desc "Build and sign the app"
lane :build do
match(type: "appstore", readonly: true)
gym(
scheme: "YourScheme",
export_method: "app-store"
)
end
end
注記
一致アクションが正しく機能するには、 の setup_ci
before_all
セクションFastfile
に を追加してください。これにより、適切なアクセス許可を持つ一時的な Fastlane キーチェーンが使用されます。これを使用しないと、ビルドの失敗や一貫性のない結果が表示されることがあります。
ステップ 3: fastlane match
コマンドを実行して、それぞれの証明書とプロファイルを生成する
特定のタイプ (開発、アプリストア、アドホック、エンタープライズなど) の fastlane マッチコマンドは、リモートストアで使用できない場合に証明書とプロファイルを生成します。証明書とプロファイルは fastlane によって S3 に保存されます。
bundle exec fastlane match appstore
コマンドの実行はインタラクティブになり、fastlane は証明書を復号するためのパスフレーズを設定するよう に要求します。
ステップ 4: プロジェクトのアプリケーションファイルを作成する
プロジェクトに応じてアプリケーションファイルを作成または追加します。
-
プロジェクトのビルド要件に基づいて、Gymfile
、Appfile 、Snapfile 、Deliverfile を作成または追加します。 -
リモートリポジトリに変更をコミットする
ステップ 5: Secrets Manager で環境変数を作成する
Fastlane セッション Cookie と一致するパスフレーズを保存するための 2 つのシークレットを作成します。Secrets Manager でのシークレットの作成の詳細については、「 シークレットの作成 AWS Secrets Manager」を参照してください。
-
次のように fastlane セッション Cookie にアクセスします。
-
シークレットキー -
FASTLANE_SESSION
-
シークレット値 - ローカルマシンで次のコマンドを実行することで生成されたセッション Cookie。
注記
この値は、ローカルファイルの認証後に使用できます:
~/.fastlane/spaceship/my_appleid_username/cookie
。fastlane spaceauth -u <apple account>
-
-
Fastlane Match パスフレーズ - Fastlane Match が S3 バケットに保存されている証明書とプロファイルを復号できるようにするには、Match セットアップステップで設定した暗号化パスフレーズを CodeBuild プロジェクトの環境変数に追加する必要があります。
-
シークレットキー -
MATCH_PASSWORD
-
シークレット値 -
<証明書を復号するためのパスフレーズを一致>
。ステップ 3 で証明書を生成するときにパスフレーズが設定されます。
-
注記
Secrets Manager で上記のシークレットを作成するときは、シークレット名に次のプレフィックスを付けてください。 /CodeBuild/
ステップ 6: コンピューティングフリートを作成する
プロジェクトのコンピューティングフリートを作成します。
-
コンソールで、CodeBuild に移動し、新しいコンピューティングフリートを作成します。
-
オペレーティングシステムとして「macOS」を選択し、適切なコンピューティングタイプとイメージを選択します。
ステップ 7: CodeBuild でプロジェクトを作成する
CodeBuild でプロジェクトを作成します。
AWS CodeBuild コンソールを https://console.aws.amazon.com/codesuite/codebuild/home
.com で開きます。 -
ビルドプロジェクトを作成します。詳細については、「ビルドプロジェクトの作成 (コンソール)」および「ビルドの実行 (コンソール)」を参照してください。
-
ソースプロバイダー (GitHub、CodeCommit など) を設定します。これは iOS プロジェクトソースリポジトリであり、証明書リポジトリではありません。
-
[環境] で以下の操作を行います。
-
リザーブドキャパシティを選択します。
-
フリート で、上記で作成したフリートを選択します。
-
CodeBuild が作成するサービスロールの名前を指定します。
-
以下の環境変数を指定します。
-
名前:
MATCH_PASSWORD
、値:<secrets arn>
、タイプ: Secrets Manager (ステップ 5 で MATCH_PASSWORD 用に作成されたシークレット ARN) -
名前:
FASTLANE_SESSION
、値:<secrets arn>
、タイプ: Secrets Manager (FASTLANE_SESSION のステップ 5 で作成されたシークレット ARN)
-
-
-
Buildspec で、以下を追加します。
version: 0.2 phases: install: commands: - gem install bundler - bundle install build: commands: - echo "Building and signing the app..." - bundle exec fastlane build post_build: commands: - echo "Build completed on date" artifacts: files: - '*/.ipa' name: app-$(date +%Y-%m-%d)
ステップ 8: IAM ロールを設定する
プロジェクトが作成されたら、CodeBuild プロジェクトのサービスロールに、証明書を含む S3 バケットへのアクセス許可があることを確認します。ロールに次のポリシーを追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::your-s3-bucket-name"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::your-s3-bucket-name/*"
}
]
}
ステップ 9: ビルドを実行する
ビルドを実行します。CodeBuild でビルドステータスとログを確認できます。
ジョブが完了すると、ジョブのログを表示できるようになります。
トラブルシューティング
-
証明書の取得で問題が発生した場合は、IAM アクセス許可が S3 アクセス用に正しく設定されていることを確認します。
-
証明書の復号で問題が発生した場合は、MATCH_PASSWORD 環境変数で正しいパスフレーズを設定してください。
-
コード署名の問題については、Apple Developer アカウントに必要な証明書とプロファイルがあり、Xcode プロジェクトのバンドル識別子がプロビジョニングプロファイルのものと一致することを確認します。
セキュリティに関する考慮事項
このチュートリアルのセキュリティ上の考慮事項を次に示します。
-
S3 バケットに、保管時の暗号化など、適切なセキュリティ設定があることを確認します。特に、バケットにパブリックアクセスがないことを確認し、アクセスが必要な CodeBuild とシステムのみにアクセスを制限します。
-
MATCH_PASSWORD や FASTLANE_SESSION などの機密情報を保存 AWS Secrets Manager するために を使用することを検討してください。
このサンプルでは、証明書ストレージに Amazon S3 を使用して CodeBuild の Fastlane で iOS コード署名をセットアップします。特定のプロジェクト要件と CodeBuild 環境に基づいて、いくつかのステップを調整する必要がある場合があります。このアプローチでは、 AWS サービスを活用して AWS 、エコシステム内のセキュリティと統合を強化します。