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' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
We got this working: