mirror of
https://github.com/mattermost/mattermost-mobile.git
synced 2026-11-05 18:38:54 +00:00
PR iOS discovery keeps specs tagged @ios_pr or @ios_only. Android (and CMT Android) full runs exclude @ios_only alongside @ipad_only so future iOS-only Detox specs stay off Android.
413 lines
18 KiB
YAML
413 lines
18 KiB
YAML
name: Compatibility Matrix Testing
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
CMT_MATRIX:
|
|
description: "A JSON object representing the testing matrix"
|
|
required: true
|
|
type: string
|
|
MOBILE_VERSION:
|
|
description: "The mattermost mobile version to test"
|
|
required: true
|
|
|
|
# Cancel overlapping CMT runs for the same ref; matterwick cleans up cancelled servers via workflow_run completed.
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
# CMT runs against a freshly-cut build-release-NNN branch, so the app content
|
|
# never matches main's fingerprint — the S3 build cache would always miss.
|
|
# CMT's optimization is structural instead: each app (iOS, Android Detox,
|
|
# Android Maestro) is built ONCE below and reused across every server-version
|
|
# leg of the matrix via github.run_id artifacts.
|
|
jobs:
|
|
calculate-commit-hash:
|
|
runs-on: ubuntu-24.04
|
|
outputs:
|
|
MOBILE_SHA: ${{ steps.repo.outputs.MOBILE_SHA }}
|
|
BRANCH: ${{ steps.repo.outputs.BRANCH }}
|
|
steps:
|
|
- name: cmt/checkout-mobile
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
persist-credentials: false
|
|
ref: ${{ inputs.MOBILE_VERSION }}
|
|
|
|
- name: cmt/calculate-mattermost-sha
|
|
id: repo
|
|
env:
|
|
MOBILE_VERSION: ${{ inputs.MOBILE_VERSION }}
|
|
run: |
|
|
echo "MOBILE_SHA=$(git rev-parse HEAD)" >> "${GITHUB_OUTPUT}"
|
|
BRANCH="${MOBILE_VERSION#refs/heads/}"
|
|
BRANCH="${BRANCH#refs/tags/}"
|
|
echo "BRANCH=${BRANCH}" >> "${GITHUB_OUTPUT}"
|
|
|
|
# Maestro only runs against the latest server version; matrix filtering happens here since job-level if: can't access matrix.
|
|
prepare-maestro-matrix:
|
|
runs-on: ubuntu-24.04
|
|
outputs:
|
|
matrix: ${{ steps.filter.outputs.matrix }}
|
|
steps:
|
|
- name: Filter CMT matrix to latest server only
|
|
id: filter
|
|
env:
|
|
CMT_MATRIX: ${{ inputs.CMT_MATRIX }}
|
|
run: |
|
|
matrix=$(echo "$CMT_MATRIX" | jq -c '{server: [.server[] | select(.latest == true)]}')
|
|
if [ "$(echo "$matrix" | jq '.server | length')" -eq 0 ]; then
|
|
matrix=$(echo "$CMT_MATRIX" | jq -c '{server: [.server[-1]]}')
|
|
fi
|
|
echo "matrix=$matrix" >> "$GITHUB_OUTPUT"
|
|
|
|
# Input follows the below schema
|
|
# {
|
|
# "server": [
|
|
# {
|
|
# "version": "9.6.1",
|
|
# "android_site_1_url": "https://android-1.example.test",
|
|
# "android_site_2_url": "https://android-2.example.test",
|
|
# "ios_site_1_url": "https://ios-1.example.test",
|
|
# "ios_site_2_url": "https://ios-2.example.test",
|
|
# "site_3_url": "https://shared-3.example.test"
|
|
# },
|
|
# {
|
|
# "version": "9.5.2",
|
|
# "android_site_1_url": "https://android-1-older.example.test",
|
|
# "android_site_2_url": "https://android-2-older.example.test",
|
|
# "ios_site_1_url": "https://ios-1-older.example.test",
|
|
# "ios_site_2_url": "https://ios-2-older.example.test",
|
|
# "site_3_url": "https://shared-3-older.example.test"
|
|
# }
|
|
# ]
|
|
# }
|
|
build-ios-simulator:
|
|
# macos-14 predates Xcode 26 and has none pre-installed, so prepare-ios-build's
|
|
# Xcode 26 requirement always fails here. e2e-detox-pr.yml and
|
|
# e2e-maestro-template.yml already build on macos-26 successfully — match that.
|
|
runs-on: macos-26
|
|
permissions:
|
|
contents: read
|
|
actions: write
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
persist-credentials: false
|
|
ref: ${{ inputs.MOBILE_VERSION }}
|
|
|
|
- name: Prepare iOS Build
|
|
uses: ./.github/actions/prepare-ios-build
|
|
|
|
- name: Build iOS Simulator
|
|
env:
|
|
TAG: "${{ inputs.MOBILE_VERSION }}"
|
|
GITHUB_TOKEN: "${{ secrets.MM_MOBILE_GITHUB_TOKEN }}"
|
|
run: bundle exec fastlane ios simulator --env ios.simulator
|
|
working-directory: ./fastlane
|
|
|
|
- name: Upload iOS Simulator Build
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: ios-build-simulator-${{ github.run_id }}
|
|
path: Mattermost-simulator-*.app.zip
|
|
|
|
build-android-apk:
|
|
runs-on: ubuntu-latest-8-cores
|
|
permissions:
|
|
contents: read
|
|
actions: write
|
|
env:
|
|
ORG_GRADLE_PROJECT_jvmargs: -Xmx8g
|
|
steps:
|
|
- name: Prune Docker to free up space
|
|
run: docker system prune -af
|
|
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
persist-credentials: false
|
|
ref: ${{ inputs.MOBILE_VERSION }}
|
|
|
|
- name: Prepare Android Build
|
|
uses: ./.github/actions/prepare-android-build
|
|
env:
|
|
STORE_FILE: ${{ secrets.MM_MOBILE_STORE_FILE }}
|
|
STORE_ALIAS: ${{ secrets.MM_MOBILE_STORE_ALIAS }}
|
|
STORE_PASSWORD: ${{ secrets.MM_MOBILE_STORE_PASSWORD }}
|
|
MATTERMOST_BUILD_GH_TOKEN: ${{ secrets.MATTERMOST_BUILD_GH_TOKEN }}
|
|
|
|
- name: Detox build
|
|
run: |
|
|
cd detox
|
|
npm ci
|
|
npm run e2e:android-build
|
|
|
|
- name: Upload Android Build
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: android-build-files-${{ github.run_id }}
|
|
# Match e2e-detox-pr.yml's glob shape exactly: the wildcard must start
|
|
# right after "build/" so upload-artifact only strips "android/app/build/"
|
|
# and preserves the outputs/apk/... subtree. e2e-android-template.yml's
|
|
# Download APK artifact step (shared by PR + CMT) expects that shape.
|
|
path: "android/app/build/**/*"
|
|
|
|
build-android-apk-maestro:
|
|
runs-on: ubuntu-latest-8-cores
|
|
permissions:
|
|
contents: read
|
|
actions: write
|
|
env:
|
|
ORG_GRADLE_PROJECT_jvmargs: -Xmx8g
|
|
steps:
|
|
- name: Prune Docker to free up space
|
|
run: docker system prune -af
|
|
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
persist-credentials: false
|
|
ref: ${{ inputs.MOBILE_VERSION }}
|
|
|
|
- name: Prepare Android Build
|
|
uses: ./.github/actions/prepare-android-build
|
|
env:
|
|
STORE_FILE: ${{ secrets.MM_MOBILE_STORE_FILE }}
|
|
STORE_ALIAS: ${{ secrets.MM_MOBILE_STORE_ALIAS }}
|
|
STORE_PASSWORD: ${{ secrets.MM_MOBILE_STORE_PASSWORD }}
|
|
MATTERMOST_BUILD_GH_TOKEN: ${{ secrets.MATTERMOST_BUILD_GH_TOKEN }}
|
|
|
|
- name: Build Maestro Android APK
|
|
uses: ./.github/actions/build-android-maestro-apk
|
|
|
|
- name: Upload Maestro Android Build
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: android-maestro-build-files-${{ github.run_id }}
|
|
path: android/app/build/outputs/apk/release/
|
|
|
|
# latest: full suite; older: @smoke include-tags. Job-level if: can't conditionally skip matrix legs, so inputs vary instead.
|
|
detox-e2e:
|
|
name: mobile-cmt-ios${{ matrix.server.latest && '-full' || '-smoke' }}-${{ matrix.server.version }}
|
|
permissions:
|
|
contents: read
|
|
# nested template mints an OIDC token for the Test System IO upload.
|
|
id-token: write
|
|
actions: read
|
|
statuses: write
|
|
# Nested template finalize reads PR labels to honour E2E/Override; a
|
|
# reusable workflow cannot escalate past the caller, so grant it here too.
|
|
issues: read
|
|
uses: ./.github/workflows/e2e-ios-template.yml
|
|
needs:
|
|
- build-ios-simulator
|
|
- calculate-commit-hash
|
|
strategy:
|
|
fail-fast: false
|
|
matrix: ${{ fromJson(inputs.CMT_MATRIX) }}
|
|
secrets:
|
|
MM_MOBILE_E2E_ADMIN_EMAIL: ${{ secrets.MM_MOBILE_E2E_ADMIN_EMAIL }}
|
|
MM_MOBILE_E2E_ADMIN_USERNAME: ${{ secrets.MM_MOBILE_E2E_ADMIN_USERNAME }}
|
|
MM_MOBILE_E2E_ADMIN_PASSWORD: ${{ secrets.MM_MOBILE_E2E_ADMIN_PASSWORD }}
|
|
MM_MOBILE_E2E_ZEPHYR_API_KEY: ${{ secrets.MM_MOBILE_E2E_ZEPHYR_API_KEY }}
|
|
MM_MOBILE_E2E_TEST_CYCLE_LINK_PREFIX: ${{ secrets.MM_MOBILE_E2E_TEST_CYCLE_LINK_PREFIX }}
|
|
MM_MOBILE_E2E_WEBHOOK_URL: ${{ secrets.MM_MOBILE_E2E_WEBHOOK_URL }}
|
|
MM_E2E_MASTER_HEALTH_WEBHOOK_URL: ${{ secrets.MM_E2E_MASTER_HEALTH_WEBHOOK_URL }}
|
|
MM_E2E_RELEASE_WEBHOOK_URL: ${{ secrets.MM_E2E_RELEASE_WEBHOOK_URL }}
|
|
MM_MOBILE_DETOX_AWS_ACCESS_KEY_ID: ${{ secrets.MM_MOBILE_DETOX_AWS_ACCESS_KEY_ID }}
|
|
MM_MOBILE_DETOX_AWS_SECRET_ACCESS_KEY: ${{ secrets.MM_MOBILE_DETOX_AWS_SECRET_ACCESS_KEY }}
|
|
MM_MOBILE_E2E_WEBHOOK_PUBLIC_BASE_URL: ${{ secrets.MM_MOBILE_E2E_WEBHOOK_PUBLIC_BASE_URL }}
|
|
MM_MOBILE_E2E_CLOUDFLARED_TUNNEL_TOKEN: ${{ secrets.MM_MOBILE_E2E_CLOUDFLARED_TUNNEL_TOKEN }}
|
|
with:
|
|
context_name: e2e-test/detox-ios/cmt-server-${{ matrix.server.version }}
|
|
branch: ${{ needs.calculate-commit-hash.outputs.BRANCH }}
|
|
commit_sha: ${{ needs.calculate-commit-hash.outputs.MOBILE_SHA }}
|
|
run-type: "RELEASE"
|
|
MM_TEST_SERVER_URL: ${{ matrix.server.ios_site_1_url }}
|
|
MM_TEST_SERVER_URL_2: ${{ matrix.server.ios_site_2_url }}
|
|
MM_TEST_SERVER_URL_3: ${{ matrix.server.site_3_url }}
|
|
MOBILE_VERSION: ${{ inputs.MOBILE_VERSION }}
|
|
search_path: detox/e2e/test
|
|
# Older servers: @smoke subset. Avoid `latest && '' || tag` — empty is falsy in GHA.
|
|
detox-include-tags: ${{ matrix.server.latest != true && '@smoke' || '' }}
|
|
detox-exclude-tags: '@ipad_only'
|
|
parallelism: ${{ matrix.server.latest && '10' || '1' }}
|
|
artifact_run_id: ${{ github.run_id }}
|
|
|
|
detox-ipad-e2e:
|
|
name: mobile-cmt-ipad-${{ matrix.server.version }}
|
|
permissions:
|
|
contents: read
|
|
id-token: write
|
|
actions: read
|
|
statuses: write
|
|
# Nested template finalize reads PR labels to honour E2E/Override; a
|
|
# reusable workflow cannot escalate past the caller, so grant it here too.
|
|
issues: read
|
|
uses: ./.github/workflows/e2e-ios-template.yml
|
|
needs:
|
|
- build-ios-simulator
|
|
- calculate-commit-hash
|
|
strategy:
|
|
fail-fast: false
|
|
matrix: ${{ fromJson(inputs.CMT_MATRIX) }}
|
|
secrets:
|
|
MM_MOBILE_E2E_ADMIN_EMAIL: ${{ secrets.MM_MOBILE_E2E_ADMIN_EMAIL }}
|
|
MM_MOBILE_E2E_ADMIN_USERNAME: ${{ secrets.MM_MOBILE_E2E_ADMIN_USERNAME }}
|
|
MM_MOBILE_E2E_ADMIN_PASSWORD: ${{ secrets.MM_MOBILE_E2E_ADMIN_PASSWORD }}
|
|
MM_MOBILE_E2E_ZEPHYR_API_KEY: ${{ secrets.MM_MOBILE_E2E_ZEPHYR_API_KEY }}
|
|
MM_MOBILE_E2E_TEST_CYCLE_LINK_PREFIX: ${{ secrets.MM_MOBILE_E2E_TEST_CYCLE_LINK_PREFIX }}
|
|
MM_MOBILE_E2E_WEBHOOK_URL: ${{ secrets.MM_MOBILE_E2E_WEBHOOK_URL }}
|
|
MM_E2E_MASTER_HEALTH_WEBHOOK_URL: ${{ secrets.MM_E2E_MASTER_HEALTH_WEBHOOK_URL }}
|
|
MM_E2E_RELEASE_WEBHOOK_URL: ${{ secrets.MM_E2E_RELEASE_WEBHOOK_URL }}
|
|
MM_MOBILE_DETOX_AWS_ACCESS_KEY_ID: ${{ secrets.MM_MOBILE_DETOX_AWS_ACCESS_KEY_ID }}
|
|
MM_MOBILE_DETOX_AWS_SECRET_ACCESS_KEY: ${{ secrets.MM_MOBILE_DETOX_AWS_SECRET_ACCESS_KEY }}
|
|
MM_MOBILE_E2E_WEBHOOK_PUBLIC_BASE_URL: ${{ secrets.MM_MOBILE_E2E_WEBHOOK_PUBLIC_BASE_URL }}
|
|
MM_MOBILE_E2E_CLOUDFLARED_TUNNEL_TOKEN: ${{ secrets.MM_MOBILE_E2E_CLOUDFLARED_TUNNEL_TOKEN }}
|
|
with:
|
|
context_name: e2e-test/detox-ipad/cmt-server-${{ matrix.server.version }}
|
|
branch: ${{ needs.calculate-commit-hash.outputs.BRANCH }}
|
|
commit_sha: ${{ needs.calculate-commit-hash.outputs.MOBILE_SHA }}
|
|
run-type: "RELEASE"
|
|
MM_TEST_SERVER_URL: ${{ matrix.server.ios_site_1_url }}
|
|
MM_TEST_SERVER_URL_2: ${{ matrix.server.ios_site_2_url }}
|
|
MM_TEST_SERVER_URL_3: ${{ matrix.server.site_3_url }}
|
|
MOBILE_VERSION: ${{ inputs.MOBILE_VERSION }}
|
|
ios_device_name: "iPad Pro 13-inch (M5)"
|
|
ios_device_os_name: "iOS 26.2"
|
|
search_path: detox/e2e/test
|
|
detox-include-tags: '@ipad_only'
|
|
detox-exclude-tags: ''
|
|
parallelism: "1"
|
|
detox_config: "ios.ipad.debug"
|
|
artifact_run_id: ${{ github.run_id }}
|
|
|
|
# Maestro runs only against the latest server version (no smoke-on-older variant).
|
|
maestro-ios-e2e:
|
|
name: mobile-cmt-maestro-ios-${{ matrix.server.version }}
|
|
permissions:
|
|
contents: read
|
|
id-token: write
|
|
actions: read
|
|
statuses: write
|
|
# Nested template finalize reads PR labels to honour E2E/Override; a
|
|
# reusable workflow cannot escalate past the caller, so grant it here too.
|
|
issues: read
|
|
uses: ./.github/workflows/e2e-maestro-template.yml
|
|
needs:
|
|
- build-ios-simulator
|
|
- prepare-maestro-matrix
|
|
- calculate-commit-hash
|
|
strategy:
|
|
fail-fast: false
|
|
matrix: ${{ fromJson(needs.prepare-maestro-matrix.outputs.matrix) }}
|
|
secrets:
|
|
MM_MOBILE_E2E_ADMIN_EMAIL: ${{ secrets.MM_MOBILE_E2E_ADMIN_EMAIL }}
|
|
MM_MOBILE_E2E_ADMIN_USERNAME: ${{ secrets.MM_MOBILE_E2E_ADMIN_USERNAME }}
|
|
MM_MOBILE_E2E_ADMIN_PASSWORD: ${{ secrets.MM_MOBILE_E2E_ADMIN_PASSWORD }}
|
|
MM_MOBILE_E2E_ZEPHYR_API_KEY: ${{ secrets.MM_MOBILE_E2E_ZEPHYR_API_KEY }}
|
|
MM_MOBILE_DETOX_AWS_ACCESS_KEY_ID: ${{ secrets.MM_MOBILE_DETOX_AWS_ACCESS_KEY_ID }}
|
|
MM_MOBILE_DETOX_AWS_SECRET_ACCESS_KEY: ${{ secrets.MM_MOBILE_DETOX_AWS_SECRET_ACCESS_KEY }}
|
|
MM_MOBILE_E2E_WEBHOOK_URL: ${{ secrets.MM_MOBILE_E2E_WEBHOOK_URL }}
|
|
MM_E2E_MASTER_HEALTH_WEBHOOK_URL: ${{ secrets.MM_E2E_MASTER_HEALTH_WEBHOOK_URL }}
|
|
MM_E2E_RELEASE_WEBHOOK_URL: ${{ secrets.MM_E2E_RELEASE_WEBHOOK_URL }}
|
|
with:
|
|
context_name: e2e-test/maestro-ios/cmt-server-${{ matrix.server.version }}
|
|
branch: ${{ needs.calculate-commit-hash.outputs.BRANCH }}
|
|
commit_sha: ${{ needs.calculate-commit-hash.outputs.MOBILE_SHA }}
|
|
platform: ios
|
|
run-type: "RELEASE"
|
|
MM_TEST_SERVER_URL: ${{ matrix.server.ios_site_1_url }}
|
|
MOBILE_VERSION: ${{ inputs.MOBILE_VERSION }}
|
|
record_tests_in_zephyr: true
|
|
artifact_run_id: ${{ github.run_id }}
|
|
|
|
detox-android-e2e:
|
|
name: mobile-cmt-android${{ matrix.server.latest && '-full' || '-smoke' }}-${{ matrix.server.version }}
|
|
permissions:
|
|
contents: read
|
|
id-token: write
|
|
actions: read
|
|
statuses: write
|
|
# Nested template finalize reads PR labels to honour E2E/Override; a
|
|
# reusable workflow cannot escalate past the caller, so grant it here too.
|
|
issues: read
|
|
uses: ./.github/workflows/e2e-android-template.yml
|
|
needs:
|
|
- build-android-apk
|
|
- calculate-commit-hash
|
|
strategy:
|
|
fail-fast: false
|
|
matrix: ${{ fromJson(inputs.CMT_MATRIX) }}
|
|
secrets:
|
|
MM_MOBILE_E2E_ADMIN_EMAIL: ${{ secrets.MM_MOBILE_E2E_ADMIN_EMAIL }}
|
|
MM_MOBILE_E2E_ADMIN_USERNAME: ${{ secrets.MM_MOBILE_E2E_ADMIN_USERNAME }}
|
|
MM_MOBILE_E2E_ADMIN_PASSWORD: ${{ secrets.MM_MOBILE_E2E_ADMIN_PASSWORD }}
|
|
MM_MOBILE_E2E_ZEPHYR_API_KEY: ${{ secrets.MM_MOBILE_E2E_ZEPHYR_API_KEY }}
|
|
MM_MOBILE_E2E_TEST_CYCLE_LINK_PREFIX: ${{ secrets.MM_MOBILE_E2E_TEST_CYCLE_LINK_PREFIX }}
|
|
MM_MOBILE_E2E_WEBHOOK_URL: ${{ secrets.MM_MOBILE_E2E_WEBHOOK_URL }}
|
|
MM_E2E_MASTER_HEALTH_WEBHOOK_URL: ${{ secrets.MM_E2E_MASTER_HEALTH_WEBHOOK_URL }}
|
|
MM_E2E_RELEASE_WEBHOOK_URL: ${{ secrets.MM_E2E_RELEASE_WEBHOOK_URL }}
|
|
MM_MOBILE_DETOX_AWS_ACCESS_KEY_ID: ${{ secrets.MM_MOBILE_DETOX_AWS_ACCESS_KEY_ID }}
|
|
MM_MOBILE_DETOX_AWS_SECRET_ACCESS_KEY: ${{ secrets.MM_MOBILE_DETOX_AWS_SECRET_ACCESS_KEY }}
|
|
MM_MOBILE_E2E_WEBHOOK_PUBLIC_BASE_URL: ${{ secrets.MM_MOBILE_E2E_WEBHOOK_PUBLIC_BASE_URL }}
|
|
MM_MOBILE_E2E_CLOUDFLARED_TUNNEL_TOKEN: ${{ secrets.MM_MOBILE_E2E_CLOUDFLARED_TUNNEL_TOKEN }}
|
|
with:
|
|
context_name: e2e-test/detox-android/cmt-server-${{ matrix.server.version }}
|
|
branch: ${{ needs.calculate-commit-hash.outputs.BRANCH }}
|
|
commit_sha: ${{ needs.calculate-commit-hash.outputs.MOBILE_SHA }}
|
|
run-android-tests: true
|
|
run-type: "RELEASE"
|
|
MM_TEST_SERVER_URL: ${{ matrix.server.android_site_1_url }}
|
|
MM_TEST_SERVER_URL_2: ${{ matrix.server.android_site_2_url }}
|
|
MM_TEST_SERVER_URL_3: ${{ matrix.server.site_3_url }}
|
|
MOBILE_VERSION: ${{ inputs.MOBILE_VERSION }}
|
|
search_path: detox/e2e/test
|
|
# Older servers: @smoke subset. Avoid `latest && '' || tag` — empty is falsy in GHA.
|
|
detox-include-tags: ${{ matrix.server.latest != true && '@smoke' || '' }}
|
|
detox-exclude-tags: '@ipad_only,@ios_only'
|
|
parallelism: ${{ matrix.server.latest && '10' || '1' }}
|
|
artifact_run_id: ${{ github.run_id }}
|
|
|
|
# Maestro runs only against the latest server version (no smoke-on-older variant).
|
|
maestro-android-e2e:
|
|
name: mobile-cmt-maestro-android-${{ matrix.server.version }}
|
|
permissions:
|
|
contents: read
|
|
id-token: write
|
|
actions: read
|
|
statuses: write
|
|
# Nested template finalize reads PR labels to honour E2E/Override; a
|
|
# reusable workflow cannot escalate past the caller, so grant it here too.
|
|
issues: read
|
|
uses: ./.github/workflows/e2e-maestro-template.yml
|
|
needs:
|
|
- build-android-apk-maestro
|
|
- prepare-maestro-matrix
|
|
- calculate-commit-hash
|
|
strategy:
|
|
fail-fast: false
|
|
matrix: ${{ fromJson(needs.prepare-maestro-matrix.outputs.matrix) }}
|
|
secrets:
|
|
MM_MOBILE_E2E_ADMIN_EMAIL: ${{ secrets.MM_MOBILE_E2E_ADMIN_EMAIL }}
|
|
MM_MOBILE_E2E_ADMIN_USERNAME: ${{ secrets.MM_MOBILE_E2E_ADMIN_USERNAME }}
|
|
MM_MOBILE_E2E_ADMIN_PASSWORD: ${{ secrets.MM_MOBILE_E2E_ADMIN_PASSWORD }}
|
|
MM_MOBILE_E2E_ZEPHYR_API_KEY: ${{ secrets.MM_MOBILE_E2E_ZEPHYR_API_KEY }}
|
|
MM_MOBILE_DETOX_AWS_ACCESS_KEY_ID: ${{ secrets.MM_MOBILE_DETOX_AWS_ACCESS_KEY_ID }}
|
|
MM_MOBILE_DETOX_AWS_SECRET_ACCESS_KEY: ${{ secrets.MM_MOBILE_DETOX_AWS_SECRET_ACCESS_KEY }}
|
|
MM_MOBILE_E2E_WEBHOOK_URL: ${{ secrets.MM_MOBILE_E2E_WEBHOOK_URL }}
|
|
MM_E2E_MASTER_HEALTH_WEBHOOK_URL: ${{ secrets.MM_E2E_MASTER_HEALTH_WEBHOOK_URL }}
|
|
MM_E2E_RELEASE_WEBHOOK_URL: ${{ secrets.MM_E2E_RELEASE_WEBHOOK_URL }}
|
|
with:
|
|
context_name: e2e-test/maestro-android/cmt-server-${{ matrix.server.version }}
|
|
branch: ${{ needs.calculate-commit-hash.outputs.BRANCH }}
|
|
commit_sha: ${{ needs.calculate-commit-hash.outputs.MOBILE_SHA }}
|
|
platform: android
|
|
run-type: "RELEASE"
|
|
MM_TEST_SERVER_URL: ${{ matrix.server.android_site_1_url }}
|
|
MOBILE_VERSION: ${{ inputs.MOBILE_VERSION }}
|
|
artifact_run_id: ${{ github.run_id }}
|
|
record_tests_in_zephyr: true
|