[GHA] use macos-13 runner image and update IOS Simulators #1402
Workflow file for this run
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
name: IOS CI | |
on: | |
push: | |
branches: [ master, f-droid ] | |
tags: | |
- "*" | |
pull_request: | |
branches: [ master, f-droid ] | |
env: | |
NODE_VERSION: 16.13.1 | |
JAVA_VERSION: 12.x | |
ARTIFACT_PATH: ./screenshots | |
jobs: | |
cancel_previous_runs: | |
name: Cancel Previous Runs | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: styfle/cancel-workflow-action@0.11.0 | |
with: | |
access_token: ${{ secrets.GITHUB_TOKEN }} | |
ios_device_test: | |
runs-on: macos-13 | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
# See up to date screenshots specifications for Appstores: | |
# https://developer.apple.com/help/app-store-connect/reference/screenshot-specifications/ | |
include: | |
- device: "iPhone 14 Pro Max" | |
record_video: true | |
# With this flag we can run the CI against different node versions to check compatibility. | |
docker_tag: "1.5.1" | |
- device: "iPhone 8 Plus" | |
record_video: false | |
docker_tag: "1.5.1" | |
- device: "iPad Pro (12.9-inch) (6th generation)" | |
record_video: false | |
docker_tag: "1.5.1" | |
- device: "iPad Pro (12.9-inch) (2nd generation)" | |
record_video: false | |
docker_tag: "1.5.1" | |
fail-fast: false | |
steps: | |
# Setup Environment | |
- uses: actions/checkout@v3 | |
- name: "Prepare environment for ios" | |
working-directory: ./scripts | |
run: ./ios_init_env.sh | |
- uses: actions/setup-java@v3 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: "zulu" | |
- name: Install flutter wrapper | |
run: ./scripts/install_flutter_wrapper.sh | |
- name: "Create Simulator if iPad Pro 2nd gen" | |
if: ${{ matrix.device == 'iPad Pro (12.9-inch) (2nd generation)' }} | |
# Unfortunately it is not deterministic if the 16.2 or the 16.4 runtime is available | |
run: | | |
xcrun simctl create "iPad Pro (12.9-inch) (2nd generation)" "com.apple.CoreSimulator.SimDeviceType.iPad-Pro--12-9-inch---2nd-generation-" "com.apple.CoreSimulator.SimRuntime.iOS-16-4" || \ | |
xcrun simctl create "iPad Pro (12.9-inch) (2nd generation)" "com.apple.CoreSimulator.SimDeviceType.iPad-Pro--12-9-inch---2nd-generation-" "com.apple.CoreSimulator.SimRuntime.iOS-16-2" | |
- name: "Create Simulator if iPad 8 Plus" | |
if: ${{ matrix.device == 'iPhone 8 Plus' }} | |
# Unfortunately it is not deterministic if the 16.2 or the 16.4 runtime is available | |
run: | | |
xcrun simctl create "iPhone 8 Plus" "com.apple.CoreSimulator.SimDeviceType.iPhone-8-Plus" "com.apple.CoreSimulator.SimRuntime.iOS-16-4" || \ | |
xcrun simctl create "iPhone 8 Plus" "com.apple.CoreSimulator.SimDeviceType.iPhone-8-Plus" "com.apple.CoreSimulator.SimRuntime.iOS-16-2" | |
# JS Stuff | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: Melos Install | |
run: ./scripts/install_melos.sh | |
- name: Melos Bootstrap | |
run: ./flutterw pub global run melos bootstrap | |
- name: "Build JS" | |
run: ./flutterw pub global run melos yarn-build | |
- name: Start colima a docker runtime for MacOs | |
run: | | |
brew install docker | |
brew install colima | |
colima start | |
- name: Run encointer-node | |
run: ./scripts/docker_run_encointer_node_notee.sh ${{ matrix.docker_tag }} & | |
- name: Bootstrap Demo Community | |
run: ./scripts/docker_run_encointer_client_bootstrap_demo_community.sh ${{ matrix.docker_tag }} | |
- name: "Start Simulator" | |
working-directory: ./scripts | |
env: | |
DEVICE_ID: ${{ matrix.device }} | |
run: source ./ios_emulator.sh | |
- name: Run integration tests with printscreens in all languages | |
if: startsWith(github.ref, 'refs/tags/') | |
run: ./scripts/multi_language_screenshot_ci_test.sh | |
env: | |
TEMP_DIR: ${{ env.ARTIFACT_PATH }} | |
RECORD: ${{ matrix.record_video }} | |
- name: Run integration tests with printscreens in en only | |
if: startsWith(github.ref , 'refs/tags/') != true | |
run: ./scripts/ios_integration_test.sh | |
env: | |
TEMP_DIR: ${{ env.ARTIFACT_PATH }} | |
RECORD: ${{ matrix.record_video }} | |
- name: "Upload screenshots and recording" | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.device }} | |
path: ${{ env.ARTIFACT_PATH }} |