feat: update address #2452 (#2674) #2816
This file contains hidden or 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: Native Build & Test | |
env: | |
APP_BUILD_NUMBER: ${{ github.run_number }} | |
on: | |
workflow_dispatch: | |
push: | |
branches: [main] | |
paths: | |
- app/** | |
- .yarn/** | |
- .github/workflows/** | |
pull_request: | |
branches: [main] | |
jobs: | |
check-secrets: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Check secrets | |
shell: bash | |
run: | | |
required_env_vars=( | |
"CERTIFICATE" | |
"KEYCHIAN_PASSWD" | |
"PROVISIONING_PROFILE" | |
"PLAY_STORE_JKS_BASE64" | |
"PLAY_STORE_JKS_ALIAS" | |
"PLAY_STORE_JKS_PASSWD" | |
"PLAY_STORE_JKS_BASE64_SADEV" | |
"PLAY_STORE_JKS_ALIAS_SADEV" | |
"PLAY_STORE_JKS_PASSWD_SADEV" | |
) | |
for var in "${required_env_vars[@]}"; do | |
if [ -z "${!var}" ]; then | |
echo "error: $var is not set." | |
exit 1 | |
fi | |
done | |
env: | |
CERTIFICATE: ${{ secrets.APPLE_APP_STORE_BUILD_CERTIFICATE_BASE64 }} | |
KEYCHIAN_PASSWD: ${{ secrets.APPLE_APP_STORE_BUILD_CERTIFICATE_PASSWD }} | |
PROVISIONING_PROFILE: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }} | |
PLAY_STORE_JKS_BASE64: ${{ secrets.PLAY_STORE_JKS_BASE64 }} | |
PLAY_STORE_JKS_ALIAS: ${{ secrets.PLAY_STORE_JKS_ALIAS }} | |
PLAY_STORE_JKS_PASSWD: ${{ secrets.PLAY_STORE_JKS_PASSWD }} | |
PLAY_STORE_JKS_BASE64_SADEV: ${{ secrets.PLAY_STORE_JKS_BASE64_SADEV }} | |
PLAY_STORE_JKS_ALIAS_SADEV: ${{ secrets.PLAY_STORE_JKS_ALIAS_SADEV }} | |
PLAY_STORE_JKS_PASSWD_SADEV: ${{ secrets.PLAY_STORE_JKS_PASSWD_SADEV }} | |
check-vars: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Check variables | |
shell: bash | |
run: | | |
required_env_vars=( | |
"OCA_URL" | |
"PROOF_TEMPLATE_URL" | |
"MEDIATOR_USE_PUSH_NOTIFICATIONS" | |
"INDY_VDR_PROXY_URL" | |
) | |
for var in "${required_env_vars[@]}"; do | |
if [ -z "${!var}" ]; then | |
echo "error: $var is not set." | |
exit 1 | |
fi | |
done | |
env: | |
OCA_URL: ${{ vars.OCA_URL }} | |
PROOF_TEMPLATE_URL: ${{ vars.PROOF_TEMPLATE_URL }} | |
MEDIATOR_USE_PUSH_NOTIFICATIONS: ${{ vars.MEDIATOR_USE_PUSH_NOTIFICATIONS }} | |
INDY_VDR_PROXY_URL: ${{ vars.INDY_VDR_PROXY_URL }} | |
early-exit-check: | |
runs-on: ubuntu-22.04 | |
outputs: | |
should_skip_build: ${{ steps.core_files_changed.outputs.result == 'false' }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Fetch all branches, main needed. | |
- name: Check if core files changed | |
id: core_files_changed | |
shell: bash | |
run: | | |
set -x | |
if [ "${GITHUB_REF_NAME}" = "main" ]; then | |
# On main branch, compare with the previous | |
# commit otherwise (for PRs) compare with the | |
# current commit. | |
parent_ref="${GITHUB_REF_NAME:-main}^" | |
child_ref="${GITHUB_SHA}" | |
else | |
# On PRs, compare with the base branch. | |
parent_ref="origin/${GITHUB_BASE_REF:-main}" | |
child_ref="HEAD" | |
fi | |
echo "Comparing ${parent_ref} with ${child_ref}" | |
diff_output=$(git diff --name-only ${parent_ref}..${child_ref}) | |
change_count=$(echo "$diff_output" | (grep -E '^(app/.*)|(.yarn/.*)|(patch/.*)|(.github/workflows/.*)' || true) | wc -l | awk '{$1=$1};1') | |
echo "$change_count files changed in app, .yarn, or .github/workflows" | |
if [ $change_count -gt 0 ]; then | |
# A result greater than 0 means there are changes | |
# in the specified directories. | |
echo "result=true" >> $GITHUB_OUTPUT | |
else | |
echo "result=false" >> $GITHUB_OUTPUT | |
fi | |
build-ios: | |
needs: [check-secrets, check-vars, early-exit-check] | |
if: ${{ needs.early-exit-check.outputs.should_skip_build != 'true' }} | |
strategy: | |
matrix: | |
include: | |
- build_type: "bc-wallet" | |
app_version: "1.0.25" | |
export_options: "export-options-bcw.plist" | |
artifact_name: "ios-bc-wallet-artifact" | |
- build_type: "single-app" | |
app_version: "4.0.0" | |
export_options: "export-options-sa.plist" | |
artifact_name: "ios-single-app-artifact" | |
env: | |
REACT_NATIVE_NODE_BINARY: $(which node) | |
NODE_BINARY: $(which node) | |
APP_VERSION: ${{ matrix.app_version }} | |
runs-on: macos-14 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: Setup NodeJS | |
uses: ./.github/workflows/actions/setup-node | |
- name: Configure ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
working-directory: ./app | |
- name: What XCode are we using? | |
run: | | |
find /Applications -type d -maxdepth 1 -iname 'xcode*.app' | |
sudo xcode-select --switch /Applications/Xcode_16.2.app | |
sudo xcode-select -p | |
- name: Cached pip dependencies | |
uses: actions/cache@v4 | |
id: pip-cache | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- name: Cache pod dependencies | |
id: pod-cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
app/ios/Pods | |
~/Library/Caches/CocoaPods | |
~/.cocoapods | |
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock ') }} | |
restore-keys: | | |
${{ runner.os }}-pods- | |
- name: Restore cached derived data | |
id: cache-dd-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: app/ios/xbuild/Build | |
key: ${{ runner.os }}-dd-xcode | |
- name: Install dependencies | |
working-directory: ./ | |
run: | | |
yarn install --immutable && \ | |
git status | |
- name: Create .xcode.env.local file | |
working-directory: app/ios | |
run: | | |
echo "export NODE_BINARY=$(which node)" > .xcode.env.local | |
- name: Install iOS dependencies | |
# if: steps.pod-cache.outputs.cache-hit != 'true' || steps.npm-cache.outputs.cache-hit != 'true' | |
working-directory: app | |
run: | | |
export USE_HERMES=true | |
yarn run ios:setup && \ | |
git status && \ | |
git diff ios/Podfile.lock | |
- name: Patch for Single App build | |
if: ${{ matrix.build_type == 'single-app' }} | |
run: | | |
echo "Patching for Single App build" | |
git config user.email "github-action@users.noreply.github.com" | |
git config user.name "GitHub Actions" | |
git am < ./patch/0002-chore-ios-app-to-bcsc-dev.patch | |
git am < ./patch/0003-chore-common-default-mode-to-bcsc.patch | |
- name: Bump Build No. | |
working-directory: app/ios | |
env: | |
CURRENT_PROJECT_VERSION: ${{ env.APP_BUILD_NUMBER }} | |
MARKETING_VERSION: ${{ env.APP_VERSION }} | |
run: | | |
agvtool new-version ${CURRENT_PROJECT_VERSION} && \ | |
agvtool new-marketing-version ${MARKETING_VERSION} | |
# Actual environment variables are not being picked up | |
# by the build so they're put into an .env file. | |
- name: Create environment settings | |
working-directory: app | |
env: | |
MEDIATOR_USE_PUSH_NOTIFICATIONS: ${{ vars.MEDIATOR_USE_PUSH_NOTIFICATIONS }} | |
MEDIATOR_URL: ${{ secrets.MEDIATOR_URL }} | |
IAS_PORTAL_URL: ${{ secrets.IAS_PORTAL_URL }} | |
IAS_AGENT_INVITE_URL: ${{ secrets.IAS_AGENT_INVITE_URL }} | |
OCA_URL: ${{ vars.OCA_URL }} | |
PROOF_TEMPLATE_URL: ${{ vars.PROOF_TEMPLATE_URL }} | |
REMOTE_LOGGING_URL: ${{ secrets.REMOTE_LOGGING_URL }} | |
INDY_VDR_PROXY_URL: ${{ vars.INDY_VDR_PROXY_URL }} | |
run: | | |
echo "MEDIATOR_USE_PUSH_NOTIFICATIONS=${MEDIATOR_USE_PUSH_NOTIFICATIONS}" >.env | |
echo "MEDIATOR_URL=${MEDIATOR_URL}" >>.env | |
echo "IAS_PORTAL_URL=${IAS_PORTAL_URL}" >>.env | |
echo "IAS_AGENT_INVITE_URL=${IAS_AGENT_INVITE_URL}" >>.env | |
echo "OCA_URL=${OCA_URL}" >>.env | |
echo "PROOF_TEMPLATE_URL=${PROOF_TEMPLATE_URL}" >>.env | |
echo "REMOTE_LOGGING_URL=${REMOTE_LOGGING_URL}" >>.env | |
echo "INDY_VDR_PROXY_URL=${INDY_VDR_PROXY_URL}" >>.env | |
- name: Update APS environment | |
run: | | |
sed -i '' 's/development/production/g' app/ios/AriesBifold/AriesBifold.entitlements | |
cat app/ios/AriesBifold/AriesBifold.entitlements | |
- name: Create prod signing credentials | |
# This step will no work in a `fork` because it will not have access | |
# to org and repo secrets. | |
if: github.event.pull_request.head.repo.fork != true | |
uses: ./.github/workflows/actions/create-ios-sig-creds | |
with: | |
certificate: ${{ secrets.APPLE_APP_STORE_BUILD_CERTIFICATE_BASE64 }} | |
certificate_password: ${{ secrets.APPLE_APP_STORE_BUILD_CERTIFICATE_PASSWD }} | |
app_store_connect_private_key: ${{ secrets.APP_STORE_CONNECT_PRIVATE_KEY_95 }} | |
provisioning_profile: ${{ matrix.build_type == 'bc-wallet' && secrets.BUILD_PROVISION_PROFILE_BASE64 || secrets.BUILD_PROVISION_PROFILE_SADEV_BASE64 }} | |
- name: Archive build | |
if: github.event.pull_request.head.repo.fork != true | |
working-directory: app/ios | |
env: | |
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} | |
APP_STORE_CONNECT_KEY_IDENTIFIER: ${{ secrets.APP_STORE_CONNECT_KEY_IDENTIFIER_95 }} | |
run: | | |
xcodebuild \ | |
-workspace AriesBifold.xcworkspace \ | |
-scheme AriesBifold \ | |
-configuration Release \ | |
-xcconfig ../../release.xcconfig \ | |
-derivedDataPath xbuild \ | |
-archivePath ../../AriesBifold.xcarchive \ | |
-allowProvisioningUpdates \ | |
-authenticationKeyPath "$RUNNER_TEMP/AuthKey.p9" \ | |
-authenticationKeyID "$APP_STORE_CONNECT_KEY_IDENTIFIER" \ | |
-authenticationKeyIssuerID "$APP_STORE_CONNECT_ISSUER_ID" \ | |
-sdk iphoneos \ | |
-verbose \ | |
archive | |
- name: Export production archive | |
if: github.ref_name == 'main' | |
uses: ./.github/workflows/actions/export-ios-archive | |
with: | |
export_options: ${{ matrix.export_options }} | |
ouput_artifact_ref: ${{ matrix.artifact_name }} | |
- name: Ship to iTunes | |
if: github.ref_name == 'main' | |
uses: ./.github/workflows/actions/ship-to-itunes | |
with: | |
app_store_connect_issuer_id: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} | |
app_store_connect_key_identifier: ${{ secrets.APP_STORE_CONNECT_KEY_IDENTIFIER_95 }} | |
app_store_connect_private_key: ${{ secrets.APP_STORE_CONNECT_PRIVATE_KEY_95 }} | |
version_code: ${{ env.APP_BUILD_NUMBER }} | |
version_name: ${{ env.APP_VERSION }} | |
- name: Save cache for derived data | |
id: cache-dd-save | |
uses: actions/cache/save@v4 | |
with: | |
path: app/ios/xbuild/Build | |
key: ${{ steps.cache-dd-restore.outputs.cache-primary-key }} | |
- name: Send notification for iOS failure | |
if: failure() && github.ref_name == 'main' && github.event.pull_request.head.repo.fork != true | |
uses: ./.github/workflows/actions/send-rocketchat-notification | |
with: | |
job_title: "BC Wallet iOS Build (${{ matrix.build_type }}) - Run number ${{ github.run_number }}" | |
job_status: ${{ job.status }} | |
webhook_url: ${{ secrets.ROCKETCHAT_WEBHOOK }} | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
build-android: | |
needs: [check-secrets, check-vars, early-exit-check] | |
if: ${{ needs.early-exit-check.outputs.should_skip_build != 'true' }} | |
strategy: | |
matrix: | |
include: | |
- build_type: "bc-wallet" | |
app_version: "1.0.25" | |
android_package_name: "ca.bc.gov.BCWallet" | |
jks_base64_secret: "PLAY_STORE_JKS_BASE64" | |
jks_alias_secret: "PLAY_STORE_JKS_ALIAS" | |
jks_passwd_secret: "PLAY_STORE_JKS_PASSWD" | |
artifact_name: "android-bc-wallet-artifact" | |
- build_type: "single-app" | |
app_version: "4.0.0" | |
android_package_name: "ca.bc.gov.id.servicescard.dev" | |
jks_base64_secret: "PLAY_STORE_JKS_BASE64_SADEV" | |
jks_alias_secret: "PLAY_STORE_JKS_ALIAS_SADEV" | |
jks_passwd_secret: "PLAY_STORE_JKS_PASSWD_SADEV" | |
artifact_name: "android-single-app-artifact" | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: read | |
packages: write | |
env: | |
APP_VERSION: ${{ matrix.app_version }} | |
ANDROID_PACKAGE_NAME: ${{ matrix.android_package_name }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: Setup NodeJS | |
uses: ./.github/workflows/actions/setup-node | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: "zulu" | |
java-version: 17 | |
cache: "gradle" | |
server-id: github | |
settings-path: ${{ github.workspace }} | |
- name: Install dependencies | |
working-directory: ./ | |
run: | | |
yarn install --immutable && \ | |
git status | |
# Actual environment variables are not being picked up | |
# by the build so they're put into an .env file. | |
- name: Create environment settings | |
working-directory: app | |
env: | |
MEDIATOR_USE_PUSH_NOTIFICATIONS: ${{ vars.MEDIATOR_USE_PUSH_NOTIFICATIONS }} | |
MEDIATOR_URL: ${{ secrets.MEDIATOR_URL }} | |
IAS_PORTAL_URL: ${{ secrets.IAS_PORTAL_URL }} | |
IAS_AGENT_INVITE_URL: ${{ secrets.IAS_AGENT_INVITE_URL }} | |
OCA_URL: ${{ vars.OCA_URL }} | |
PROOF_TEMPLATE_URL: ${{ vars.PROOF_TEMPLATE_URL }} | |
REMOTE_LOGGING_URL: ${{ secrets.REMOTE_LOGGING_URL }} | |
INDY_VDR_PROXY_URL: ${{ vars.INDY_VDR_PROXY_URL }} | |
run: | | |
echo "MEDIATOR_USE_PUSH_NOTIFICATIONS=${MEDIATOR_USE_PUSH_NOTIFICATIONS}" >.env | |
echo "MEDIATOR_URL=${MEDIATOR_URL}" >>.env | |
echo "IAS_PORTAL_URL=${IAS_PORTAL_URL}" >>.env | |
echo "IAS_AGENT_INVITE_URL=${IAS_AGENT_INVITE_URL}" >>.env | |
echo "OCA_URL=${OCA_URL}" >>.env | |
echo "PROOF_TEMPLATE_URL=${PROOF_TEMPLATE_URL}" >>.env | |
echo "REMOTE_LOGGING_URL=${REMOTE_LOGGING_URL}" >>.env | |
echo "INDY_VDR_PROXY_URL=${INDY_VDR_PROXY_URL}" >>.env | |
- name: Patch for Single App build | |
if: ${{ matrix.build_type == 'single-app' }} | |
run: | | |
echo "Patching for Single App build" | |
git config user.email "github-action@users.noreply.github.com" | |
git config user.name "GitHub Actions" | |
git am < ./patch/0001-chore-android-app-to-bcsc-dev.patch | |
git am < ./patch/0003-chore-common-default-mode-to-bcsc.patch | |
- name: Create release keystore | |
# This step will not work in a `fork` because it will not have access | |
# to org and repo secrets. | |
if: github.event.pull_request.head.repo.fork != true | |
working-directory: app/android/app | |
env: | |
PLAY_STORE_JKS_BASE64: ${{ matrix.build_type == 'bc-wallet' && secrets.PLAY_STORE_JKS_BASE64 || secrets.PLAY_STORE_JKS_BASE64_SADEV }} | |
PLAY_STORE_JKS_ALIAS: ${{ matrix.build_type == 'bc-wallet' && secrets.PLAY_STORE_JKS_ALIAS || secrets.PLAY_STORE_JKS_ALIAS_SADEV }} | |
PLAY_STORE_JKS_PASSWD: ${{ matrix.build_type == 'bc-wallet' && secrets.PLAY_STORE_JKS_PASSWD || secrets.PLAY_STORE_JKS_PASSWD_SADEV }} | |
run: | | |
echo "${PLAY_STORE_JKS_BASE64}" | base64 -d >release.keystore && \ | |
keytool -list -v -keystore release.keystore -alias ${PLAY_STORE_JKS_ALIAS} -storepass:env PLAY_STORE_JKS_PASSWD | \ | |
grep "SHA1" | |
- name: Android release build | |
if: github.event.pull_request.head.repo.fork != true | |
working-directory: app/android | |
env: | |
PLAY_STORE_JKS_ALIAS: ${{ matrix.build_type == 'bc-wallet' && secrets.PLAY_STORE_JKS_ALIAS || secrets.PLAY_STORE_JKS_ALIAS_SADEV }} | |
PLAY_STORE_JKS_PASSWD: ${{ matrix.build_type == 'bc-wallet' && secrets.PLAY_STORE_JKS_PASSWD || secrets.PLAY_STORE_JKS_PASSWD_SADEV }} | |
VERSION_CODE: ${{ env.APP_BUILD_NUMBER }} | |
VERSION_NAME: ${{ env.APP_VERSION }} | |
run: | | |
( cd ../ && npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --verbose ) && \ | |
./gradlew bundleRelease assembleRelease --no-parallel && \ | |
find . -type f -name '*.apk' | |
- name: List Artifacts | |
run: | | |
find . -type f -name '*.apk' | |
- name: Upload artifact | |
if: github.ref_name == 'main' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: android-${{ matrix.build_type }} | |
path: | | |
app/android/app/build/outputs/bundle/release/app-release.aab | |
app/android/app/build/outputs/apk/release/app-release.apk | |
if-no-files-found: error | |
retention-days: 7 | |
- name: Upload Android artifact | |
if: github.ref_name == 'main' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.artifact_name }} | |
path: app/android/app/build/outputs/bundle/release/app-release.aab | |
if-no-files-found: error | |
retention-days: 7 | |
- name: Ship to Google Play | |
if: github.ref_name == 'main' | |
working-directory: app/android | |
env: | |
GOOGLE_API_CREDENTIALS_BASE64: ${{ secrets.GOOGLE_API_CREDENTIALS_BASE64 }} | |
GOOGLE_API_CREDENTIALS: "api_keys.json" | |
ANDROID_BUNDLE_PATH: "./android/app/build/outputs/bundle/release/app-release.aab" | |
ANDROID_PACKAGE_NAME: ${{ env.ANDROID_PACKAGE_NAME }} | |
VERSION_CODE: ${{ env.APP_BUILD_NUMBER }} | |
VERSION_NAME: ${{ env.APP_VERSION }} | |
run: | | |
# when we updated to yarn we started getting an error with paths | |
# and had to add `/android` to the path. | |
echo "${GOOGLE_API_CREDENTIALS_BASE64}" | base64 -d >${GOOGLE_API_CREDENTIALS} && \ | |
GOOGLE_API_CREDENTIALS="./android/api_keys.json" npx @bcgov/gpublish | |
- name: Send notification for Android failure | |
if: failure() && github.ref_name == 'main' && github.event.pull_request.head.repo.fork != true | |
uses: ./.github/workflows/actions/send-rocketchat-notification | |
with: | |
job_title: "BC Wallet Android Build (${{ matrix.build_type }}) - Run number ${{ github.run_number }}" | |
job_status: ${{ job.status }} | |
webhook_url: ${{ secrets.ROCKETCHAT_WEBHOOK }} | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
build-summary: | |
runs-on: ubuntu-latest | |
needs: | |
- early-exit-check | |
- build-android | |
- build-ios | |
if: always() | |
steps: | |
- name: Check matrix results | |
run: | | |
if [ "${{ needs.early-exit-check.outputs.should_skip_build }}" == "true" ]; then | |
echo "✅ Nothing to build. Early exit okay" | |
exit 0 | |
fi | |
if [ "${{ needs.build-android.result }}" != "success" ]; then | |
echo "Android build(s) failed" | |
exit 1 | |
fi | |
if [ "${{ needs.build-ios.result }}" != "success" ]; then | |
echo "iOS build(s) failed" | |
exit 1 | |
fi | |
echo "✅ All builds passed!" | |
ship-to-saucelabs: | |
if: github.ref_name == 'main' | |
needs: [build-ios, build-android] | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
include: | |
- platform: "ios" | |
build_type: "bc-wallet" | |
artifact_ref: "ios-bc-wallet-artifact" | |
sauce_labs_name: "BCWallet-${{ github.run_number }}.ipa" | |
sauce_labs_description: "iOS BC Wallet App" | |
artifact_name: "BCWallet.ipa" | |
- platform: "ios" | |
build_type: "single-app" | |
artifact_ref: "ios-single-app-artifact" | |
sauce_labs_name: "BCWallet-SingleApp-${{ github.run_number }}.ipa" | |
sauce_labs_description: "iOS BC Wallet Single App" | |
artifact_name: "BCWallet.ipa" | |
- platform: "android" | |
build_type: "bc-wallet" | |
artifact_ref: "android-bc-wallet-artifact" | |
sauce_labs_name: "BCWallet-${{ github.run_number }}.aab" | |
sauce_labs_description: "Android BC Wallet App" | |
artifact_name: "app-release.aab" | |
- platform: "android" | |
build_type: "single-app" | |
artifact_ref: "android-single-app-artifact" | |
sauce_labs_name: "BCWallet-SingleApp-${{ github.run_number }}.aab" | |
sauce_labs_description: "Android BC Wallet Single App" | |
artifact_name: "app-release.aab" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Ship Artifact to SauceLabs | |
uses: ./.github/workflows/actions/ship-to-saucelabs | |
with: | |
sauce_labs_username: ${{ secrets.SAUCE_USERNAME }} | |
sauce_labs_password: ${{ secrets.SAUCE_ACCESS_KEY }} | |
sauce_labs_name: ${{ matrix.sauce_labs_name }} | |
sauce_labs_description: ${{ matrix.sauce_labs_description }} | |
artifact_ref: ${{ matrix.artifact_ref }} | |
artifact_name: ${{ matrix.artifact_name }} | |
run-on-device-tests: | |
if: github.ref_name == 'main' | |
needs: [ship-to-saucelabs] | |
runs-on: ubuntu-22.04 | |
strategy: | |
max-parallel: 4 | |
fail-fast: false | |
matrix: | |
include: | |
- mobile-platform: "-p Android" | |
app-file-name: "-a BCWallet-${{ github.run_number }}.aab" | |
report-project: "android-bc-wallet-one-device-smoke" | |
# - mobile-platform: "-p Android" | |
# app-file-name: "-a BCWallet-SingleApp-${{ github.run_number }}.aab" | |
# report-project: "android-single-app-one-device-smoke" | |
- mobile-platform: "-p iOS" | |
app-file-name: "-a BCWallet-${{ github.run_number }}.ipa" | |
report-project: "ios-bc-wallet-one-device-smoke" | |
# - mobile-platform: "-p iOS" | |
# app-file-name: "-a BCWallet-SingleApp-${{ github.run_number }}.ipa" | |
# report-project: "ios-single-app-one-device-smoke" | |
timeout-minutes: 60 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: run-aath-agents | |
if: ${{ matrix.mobile-platform=='-p iOS' }} | |
uses: ./.github/workflows/actions/run-aath-agents | |
with: | |
USE_NGROK: "" | |
- name: run-aath-agents-ngrok | |
if: ${{ matrix.mobile-platform=='-p Android' }} | |
uses: ./.github/workflows/actions/run-aath-agents | |
with: | |
NGROK_AUTHTOKEN: ${{ secrets.NGROK_AUTHTOKEN }} | |
USE_NGROK: "-n" | |
- name: run-sauce-connect-tunnel | |
if: ${{ matrix.mobile-platform=='-p iOS' }} | |
uses: saucelabs/sauce-connect-action@v2 | |
with: | |
username: ${{ secrets.SAUCE_USERNAME }} | |
accessKey: ${{ secrets.SAUCE_ACCESS_KEY }} | |
directDomains: aries-mediator-agent.vonx.io,apple.com | |
- name: Fetch mobile test harness repo | |
uses: actions/checkout@v4 | |
with: | |
repository: hyperledger/aries-mobile-test-harness | |
path: aries-mobile-test-harness | |
ref: main | |
- name: Run SauceLabs smoke-test | |
uses: ./.github/workflows/actions/run-test-harness | |
env: | |
LEDGER_URL_CONFIG: "http://test.bcovrin.vonx.io" | |
REGION: "us-west-1" | |
with: | |
MOBILE_WALLET: "-w bc_wallet" | |
ISSUER_AGENT: '-i "AATH;http://0.0.0.0:9020"' | |
VERIFIER_AGENT: '-v "AATH;http://0.0.0.0:9030"' | |
DEVICE_CLOUD: "-d SauceLabs" | |
DEVICE_CLOUD_USER: "-u ${{ secrets.SAUCE_USERNAME }}" | |
DEVICE_CLOUD_KEY: "-k ${{ secrets.SAUCE_ACCESS_KEY }}" | |
MOBILE_PLATFORM: ${{ matrix.mobile-platform }} | |
APP_FILE_NAME: ${{ matrix.app-file-name }} | |
TEST_SCOPE: "-t @bc_wallet -t @SmokeTest" | |
REPORT_PROJECT: ${{ matrix.report-project }} | |
- name: Upload smoke-test results to Allure | |
if: ${{ always() }} | |
uses: ./.github/workflows/actions/run-send-gen-test-results-secure | |
with: | |
REPORT_PROJECT: ${{ matrix.report-project }} | |
ADMIN_USER: ${{ secrets.ALLURE_USERNAME }} | |
ADMIN_PW: ${{ secrets.ALLURE_PASSWD }} |