기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
fastlane
사전 조건
이 자습서를 완료하려면 먼저 다음을 설정해야 합니다.
-
AWS 계정
-
인증서를 저장하기 위한 S3 버킷
-
프로젝트에 설치된 fastlane - fastlane 설치 안내서
1단계: 로컬 시스템에서 S3와 Fastlane 일치 설정
Fastlane Match
이 예제 구성에서는 Amazon S3 버킷을 설정하고 스토리지에 사용합니다.
-
프로젝트에서 일치 항목 초기화:
fastlane match init
-
메시지가 표시되면 S3를 스토리지 모드로 선택합니다.
-
S3를 사용하도록 `Matchfile`을 업데이트합니다.
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
참고
일치 작업이 올바르게 작동하려면 Fastfile
의 setup_ci
before_all
섹션에를 추가해야 합니다. 이렇게 하면 적절한 권한이 있는 임시 Fastlane 키체인이 사용됩니다. 이를 사용하지 않으면 빌드 실패 또는 일관되지 않은 결과가 표시될 수 있습니다.
3단계: fastlane match
명령을 실행하여 각 인증서 및 프로필 생성
지정된 유형(예: 개발, 앱 스토어, 임시, 엔터프라이즈)에 대한 fastlane match 명령은 원격 스토어에서 사용할 수 없는 경우 인증서와 프로필을 생성합니다. 인증서와 프로필은 fastlane에 의해 S3에 저장됩니다.
bundle exec fastlane match appstore
명령 실행은 대화형이며 fastlane은 인증서 복호화를 위한 암호 문구를 설정하도록 요청합니다.
4단계: 프로젝트에 대한 애플리케이션 파일 생성
프로젝트에 적합한 애플리케이션 파일을 생성하거나 추가합니다.
-
프로젝트 빌드 요구 사항에 따라 Gymfile
, Appfile , Snapfile , Deliverfile 을 생성하거나 추가합니다. -
원격 리포지토리에 변경 사항 커밋
5단계: Secrets Manager에서 환경 변수 생성
fastlane 세션 쿠키와 일치하는 암호 구문을 저장하기 위한 두 개의 암호를 생성합니다. Secrets Manager에서 보안 암호를 생성하는 방법에 대한 자세한 내용은 보안 암호 생성을 AWS Secrets Manager참조하세요.
-
다음과 같이 fastlane 세션 쿠키에 액세스합니다.
-
보안 키 -
FASTLANE_SESSION
-
보안 암호 값 - 로컬 시스템에서 다음 명령을 실행하여 생성된 세션 쿠키입니다.
참고
이 값은 로컬 파일에서 인증 후 사용할 수 있습니다
~/.fastlane/spaceship/my_appleid_username/cookie
.fastlane spaceauth -u <apple account>
-
-
Fastlane Match 암호 - Fastlane Match가 S3 버킷에 저장된 인증서와 프로필을 해독하도록 하려면 매치 설정 단계에서 구성한 암호화 암호를 CodeBuild 프로젝트의 환경 변수에 추가해야 합니다.
-
보안 키 -
MATCH_PASSWORD
-
보안 암호 값 -
<암호화 암호를 일치시켜 인증서 해독>
. 3단계에서 인증서를 생성하는 동안 암호가 설정됩니다.
-
참고
Secrets Manager에서 위의 보안 암호를 생성하는 동안 다음 접두사가 있는 보안 암호 이름을 지정해야 합니다. /CodeBuild/
6단계: 컴퓨팅 플릿 생성
프로젝트의 컴퓨팅 플릿을 생성합니다.
-
콘솔에서 CodeBuild로 이동하여 새 컴퓨팅 플릿을 생성합니다.
-
운영 체제로 "macOS"를 선택하고 적절한 컴퓨팅 유형과 이미지를 선택합니다.
7단계: CodeBuild에서 프로젝트 생성
CodeBuild에서 프로젝트를 생성합니다.
https://console.aws.amazon.com/codesuite/codebuild/home
://에서 AWS CodeBuild 콘솔을 엽니다. -
빌드 프로젝트를 생성합니다. 자세한 내용은 빌드 프로젝트 만들기(콘솔) 및 빌드 실행(콘솔) 섹션을 참조하세요.
-
소스 공급자(예: GitHub, CodeCommit)를 설정합니다. 이는 iOS 프로젝트 소스 리포지토리이며 인증서 리포지토리가 아닙니다.
-
환경에서 다음과 같이 합니다.
-
예약 용량을 선택합니다.
-
플릿에서 위에서 생성한 플릿을 선택합니다.
-
CodeBuild가 자동으로 생성할 서비스 역할의 이름을 입력합니다.
-
아래 환경 변수를 제공합니다.
-
이름:
MATCH_PASSWORD
, 값:<secrets arn>
, 유형: Secrets Manager(MATCH_PASSWORD의 경우 5단계에서 생성된 보안 암호 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에서 빌드 상태 및 로그를 검토할 수 있습니다.
작업이 완료되면 작업 로그를 볼 수 있습니다.
문제 해결
-
인증서 가져오기에 문제가 발생하면 S3 액세스를 위해 IAM 권한이 올바르게 설정되었는지 확인합니다.
-
인증서 복호화에 문제가 발생하면 MATCH_PASSWORD 환경 변수에서 올바른 암호를 설정해야 합니다.
-
코드 서명 문제의 경우 Apple 개발자 계정에 필요한 인증서 및 프로필이 있고 Xcode 프로젝트의 번들 식별자가 프로비저닝 프로필의 번들 식별자와 일치하는지 확인합니다.
보안 고려 사항
다음은이 자습서의 보안 고려 사항입니다.
-
S3 버킷에 저장 데이터 암호화를 비롯한 적절한 보안 설정이 있는지 확인합니다. 특히 버킷에 퍼블릭 액세스 권한이 없는지 확인하고 액세스 권한이 필요한 CodeBuild 및 시스템으로만 액세스를 제한합니다.
-
를 사용하여 MATCH_PASSWORD 및 FASTLANE_SESSION과 같은 민감한 정보를 AWS Secrets Manager 저장하는 것이 좋습니다.
이 샘플은 인증서 스토리지용 Amazon S3를 사용하여 CodeBuild에서 Fastlane을 사용하여 iOS 코드 서명을 위한 설정을 제공합니다. 특정 프로젝트 요구 사항 및 CodeBuild 환경에 따라 일부 단계를 조정해야 할 수 있습니다. 이 접근 방식은 AWS 서비스를 활용하여 AWS 에코시스템 내에서 보안 및 통합을 강화합니다.