Last active
August 22, 2024 08:30
-
-
Save mrk-han/3d746054eb721a9973817ec7a21363f1 to your computer and use it in GitHub Desktop.
Simple Guide for a Build and Testing Pipeline with Expo and EAS from Azure Devops CICD (Managed Workflow)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# https://aka.ms/yaml | |
trigger: | |
branches: | |
include: | |
- main | |
- releases/* | |
- hotfix/* | |
pr: | |
autoCancel: true | |
drafts: false | |
variables: | |
- group: name-of-variables-group-goes-here | |
stages: | |
- stage: build_and_test | |
displayName: Build and Test | |
pool: | |
vmImage: 'macos-latest' | |
jobs: | |
- job: build | |
displayName: Build | |
steps: | |
- checkout: self | |
clean: true | |
- task: NodeTool@0 | |
inputs: | |
versionSpec: '16.x' | |
displayName: Install Node.js | |
- bash: | | |
set -x | |
npm install -g expo-cli | |
npm install -g eas-cli | |
displayName: Install pipeline dependencies | |
- bash: | | |
set -x | |
expo login -u $(SHARED_EXPO_USERNAME) -p $(SHARED_EXPO_PASSWORD) --non-interactive | |
displayName: Login to expo cli | |
- bash: yarn install --frozen-lockfile | |
displayName: Yarn install | |
- bash: | | |
set -x | |
yarn test:ci | |
displayName: Run Unit Tests | |
- bash: | | |
eas build --platform ios --profile buildForDetoxTesting --local | |
displayName: Build .app for UI Testing on Azure MacOS Agent | |
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) | |
- bash: | | |
eas build --platform ios --non-interactive --no-wait | |
displayName: Run Build on EAS to have .app available on website too | |
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) | |
- bash: | | |
expo publish --non-interactive | |
displayName: Publish app to expo default channel | |
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) | |
- task: PublishTestResults@2 | |
condition: succeededOrFailed() | |
inputs: | |
testRunner: JUnit | |
testResultsFiles: '**/junit.xml' |
We got this working:
stages:
- stage: Build
displayName: Build
jobs:
- job: build
displayName: EAS Build for Android and iOS
pool: Default
steps:
- checkout: self
clean: true
- task: NodeTool@0
displayName: "Install Node.js"
inputs:
versionSource: "fromFile"
versionFilePath: ".nvmrc"
- bash: npm ci --no-fund
displayName: "Install NPM dependencies"
- bash: npm install -g eas-cli
displayName: "Install EAS CLI"
# note: `platform all` here means iOS and Android, not Web.
- bash: eas build --platform all --profile preview --no-wait --non-interactive
displayName: "Build on EAS"
env:
EXPO_TOKEN: $(EXPO_TOKEN)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@adrianflda and @jerone did you either of you guys find a solution to your problems?