EAS Update 게이트 적용하기
EAS CLI는 EXPO_TOKEN 환경 변수에 담긴 Expo 액세스 토큰으로 배포합니다. Mocco가 그 토큰을 보관하다가 게이트가 승인된 뒤 배포 단계에 전달합니다. 먼저 파이프라인에 토큰 발급하기를 설정하세요. 이 페이지는 Expo 쪽 설정을 다룹니다.
토큰 만들기
개인 토큰 대신 로봇 사용자(robot user)를 사용하세요. 개인 액세스 토큰은 그 사람이 접근할 수 있는 모든 Expo 계정에서 그 사람으로 동작합니다. 로봇 사용자는 한 계정에만 속하고, 로그인할 수 없으며, 부여한 역할만 가집니다. 업데이트를 배포할 수 있는 Developer 역할을 부여하세요. 그런 다음 계정의 액세스 토큰 설정에서 로봇 사용자용 액세스 토큰을 만듭니다. Expo의 programmatic access와 roles 페이지를 참고하세요.
Expo에서는 토큰을 특정 프로젝트나 채널 하나로 제한할 수 없습니다. Enterprise 플랜에서는 protected channels로 프로덕션 배포를 Release Manager 역할로 제한할 수 있습니다. 이를 쓰지 않으면 Release Manager 역할의 권한은 Developer와 같습니다.
토큰은 Mocco의 OTA updates 페이지, Your OTA tool 탭에서 도구를 EAS Update로 고르고 acme-production 같은 이름으로 저장합니다. 프로바이더 ID는 ota-eas입니다.
배포하기
파이프라인 가이드의 배포 job에서 전달받은 토큰을 EXPO_TOKEN으로 내보내고, 프롬프트 없이 eas update를 실행합니다. 프로젝트는 이미 EAS에 연결되어 있어야 합니다(앱 설정의 extra.eas.projectId).
- name: Get the publishing token from Mocco
run: |
# … as in the pipeline guide …
echo "EXPO_TOKEN=$secret" >> "$GITHUB_ENV"
- uses: actions/setup-node@v4
with: { node-version: 22 }
- run: npm ci
- run: npx eas-cli@latest update --channel production --environment production --message "${{ github.event.client_payload.commitSha }}" --non-interactive--environment는 Expo SDK 55부터 필수입니다. --rollout-percentage 10을 쓰면 먼저 일부 기기에만 배포하고, -p ios나 -p android로 플랫폼을 제한할 수 있습니다. EAS CLI reference를 참고하세요.
롤백하기
두 번째 파이프라인(온콜 엔지니어가 혼자 게이트를 승인하는 파이프라인)에서 같은 토큰을 전달받아 롤백을 실행합니다.
npx eas-cli@latest update:rollback <update group id> --message "Roll back" --non-interactive이 명령은 지정한 업데이트 그룹의 바로 이전 그룹을 다시 배포하고, 이전 그룹이 없으면 빌드에 포함된 내장 번들로 되돌아갑니다. eas update:roll-back-to-embedded --channel production --runtime-version <version> --non-interactive는 곧바로 내장 번들로 되돌립니다.
교체하기
로봇 사용자의 새 액세스 토큰을 만들고, Mocco에서 토큰 카드의 Rotate를 선택해 붙여 넣은 뒤, Expo에서 이전 토큰을 삭제합니다. 카드의 지문이 바뀝니다.