1923

都内と業界の隅っこで生活しているエンジニアのノート

Azure Pipelines で Expo にデプロイ

Expo公式サイトの Setting up Continuous Integration に Azure Pipelines の設定なかったので記載。

やってることは同じですし、他とちょっとタスク名が違う程度です。

  • Jestでテスト
  • Expoのユーザー名とパスワードを Key Vault から取得
  • expo-cli で login と publish

Deploy to Expo

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

variables:
  npm_config_cache: $(Pipeline.Workspace)/.npm

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '12.x'
  displayName: 'Install Node.js'

- task: Cache@2
  inputs:
    key: 'npm | "$(Agent.OS)" | package-lock.json'
    restoreKeys: |
       npm | "$(Agent.OS)"
    path: $(npm_config_cache)
  displayName: Cache npm

- script: |
    npm ci
    npm install expo      
    npm test
  displayName: 'npm test'

- task: AzureKeyVault@1
  inputs:
    azureSubscription: '[SERVICE CONNECTION]'
    KeyVaultName: '[KeyVault]'
    SecretsFilter: '*'
    RunAsPreJob: false

- script: |
    npx expo-cli login -u $(expo-username) -p $(expo-password)
    npx expo-cli publish --non-interactive
  displayName: 'expo publish'

OTAではなくビルドの場合は、「publish」を「build」に変更。iOSの場合は以下のような感じです。

    npx expo-cli build:ios --no-wait --non-interactive --release-channel staging

Key Vault の設定については以下に詳しく記載されています。

docs.microsoft.com

Key VaultではなくVariables を使う場合は以下をご覧ください。

docs.microsoft.com