Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 62 additions & 7 deletions shared-overwrite/.github/workflows/mt-record-screenshots.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,18 @@ on:
required: false
default: false
type: boolean
modules:
description: 'JSON array of modules to install: [{"pkg":"...","repo":"..."}] (required for main repo)'
required: false
default: |
[
{"pkg":"org.mtransit.android.ca_montreal_amt_train", "repo":"https://github.com/mtransitapps/ca-montreal-amt-train-android" }
]
type: string
Comment on lines +17 to +24

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot this should not be a workflow input but a static environment variable.

# gh workflow run mt-record-screenshots.yml --ref $(git rev-parse --abbrev-ref HEAD)
# gh workflow run mt-record-screenshots.yml --ref $(git rev-parse --abbrev-ref HEAD) -f commitDirectly=true
# gh workflow run mt-record-screenshots.yml --ref $(git rev-parse --abbrev-ref HEAD) -f buildFromSource=true
# gh workflow run mt-record-screenshots.yml --ref $(git rev-parse --abbrev-ref HEAD) -f modules='[{"pkg":"org.mtransit.android.ca_foo_bar","repo":"mtransitapps/ca-foo-bar-android"}]'
# gh run list --workflow=mt-record-screenshots.yml
# gh run watch
concurrency:
Expand Down Expand Up @@ -45,7 +54,7 @@ jobs:
MT-RECORD-SCREENSHOTS-JOB:
name: "MT record screenshots"
# if: ${{ env.MT_IS_MAIN_REPO != 'true' }} # can NOT use env here:
if: ${{ ! endsWith(github.repository, '/mtransit-for-android') && github.event_name != 'pull_request' }}
if: ${{ github.event_name != 'pull_request' }}
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
Expand All @@ -72,6 +81,7 @@ jobs:

- name: MT download main app release APK
id: download-main-apk
if: ${{ env.MT_IS_MAIN_REPO != 'true' }}
run: |
source ./download_latest_apk.sh "mtransitapps/mtransit-for-android"
if [[ -z "$APK_FILE" ]]; then
Expand All @@ -93,8 +103,13 @@ jobs:
echo "WARNING: no APK file!"
exit 1 # triggers fallback step
fi
echo "MODULE_APK_FILE=$APK_FILE" >> $GITHUB_OUTPUT
echo "Module app APK downloaded successfully."
if [[ "$MT_IS_MAIN_REPO" == "true" ]]; then
echo "MAIN_APK_FILE=$APK_FILE" >> $GITHUB_OUTPUT
echo "Main app APK downloaded successfully."
else
echo "MODULE_APK_FILE=$APK_FILE" >> $GITHUB_OUTPUT
echo "Module app APK downloaded successfully."
fi

- name: MT build this app release APK (fallback)
if: steps.download-module-apk.outcome == 'failure' || github.event.inputs.buildFromSource == 'true'
Expand Down Expand Up @@ -123,8 +138,43 @@ jobs:
echo "ERROR: APK file not found in ./app-android/build/outputs/apk/release/"
exit 1
fi
echo "MODULE_APK_FILE=$APK_FILE" >> $GITHUB_OUTPUT
echo "Module app APK assembled successfully at: $APK_FILE"
if [[ "$MT_IS_MAIN_REPO" == "true" ]]; then
echo "MAIN_APK_FILE=$APK_FILE" >> $GITHUB_OUTPUT
echo "Main app APK assembled successfully at: $APK_FILE"
else
echo "MODULE_APK_FILE=$APK_FILE" >> $GITHUB_OUTPUT
echo "Module app APK assembled successfully at: $APK_FILE"
fi

- name: MT validate main repo requires modules input
if: ${{ env.MT_IS_MAIN_REPO == 'true' && github.event.inputs.modules == '' }}
run: |
echo "ERROR: 'modules' input is required when running for the main repo!"
echo "Example: gh workflow run mt-record-screenshots.yml --ref \$(git rev-parse --abbrev-ref HEAD) -f modules='[{\"pkg\":\"org.mtransit.android.ca_foo_bar\",\"repo\":\"mtransitapps/ca-foo-bar-android\"}]'"
exit 1

- name: MT download module APKs
id: download-modules-apks
if: ${{ github.event.inputs.modules != '' }}
env:
MT_MODULES: ${{ github.event.inputs.modules }}
run: |
MANIFEST_FILE="module_apks_manifest.txt"
> "$MANIFEST_FILE"
echo "$MT_MODULES" | jq -r '.[] | [.pkg, .repo] | @tsv' > /tmp/modules_list.txt
while IFS=$'\t' read -r PKG REPO; do
echo "Downloading APK for '$PKG' from '$REPO'..."
source ./download_latest_apk.sh "$REPO"
if [[ -z "$APK_FILE" ]]; then
echo "ERROR: no APK file for '$PKG' from '$REPO'!"
exit 1
fi
echo "${PKG}:${APK_FILE}" >> "$MANIFEST_FILE"
echo " Module '$PKG' downloaded: $APK_FILE"
done < /tmp/modules_list.txt
rm -f /tmp/modules_list.txt
echo "MODULE_APK_FILES_MANIFEST=$MANIFEST_FILE" >> $GITHUB_OUTPUT
echo "All module APKs downloaded."

- name: MT read timezone from XML resource value
id: timezone
Expand All @@ -151,16 +201,21 @@ jobs:
fi
else
echo "No '$GTFS_TIMEZONE_XML_FILE' or '$BIKE_TIMEZONE_XML_FILE' file found."
exit 1 # error
if [[ "$MT_IS_MAIN_REPO" == "true" ]]; then
echo "Main repo: falling back to UTC."
else
exit 1 # error
fi
fi

- name: MT record screenshots with Android Emulator
uses: reactivecircus/android-emulator-runner@v2
timeout-minutes: 10
env:
TZ: ${{ steps.timezone.outputs.TIMEZONE || 'UTC' }}
MAIN_APK_FILE: ${{ steps.download-main-apk.outputs.MAIN_APK_FILE }}
MAIN_APK_FILE: ${{ steps.download-main-apk.outputs.MAIN_APK_FILE || steps.download-module-apk.outputs.MAIN_APK_FILE || steps.build-module-apk.outputs.MAIN_APK_FILE }}
MODULE_APK_FILE: ${{ steps.download-module-apk.outputs.MODULE_APK_FILE || steps.build-module-apk.outputs.MODULE_APK_FILE }}
MODULE_APK_FILES_MANIFEST: ${{ steps.download-modules-apks.outputs.MODULE_APK_FILES_MANIFEST }}
with:
api-level: ${{ steps.sdk-target.outputs.API_LEVEL }}
target: google_apis
Expand Down
53 changes: 39 additions & 14 deletions shared/setup-and-all-app-screenshots.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,21 @@ if [ ! -f "$MAIN_APK_FILE" ]; then
exit 1
fi

if [ -z "$MODULE_APK_FILE" ]; then
echo " > ERROR: MODULE_APK_FILE environment variable not set"
if [ -z "$MODULE_APK_FILE" ] && [ -z "$MODULE_APK_FILES_MANIFEST" ]; then
echo " > ERROR: MODULE_APK_FILE or MODULE_APK_FILES_MANIFEST environment variable not set"
exit 1
fi

if [ ! -f "$MODULE_APK_FILE" ]; then
if [ -n "$MODULE_APK_FILE" ] && [ ! -f "$MODULE_APK_FILE" ]; then
echo " > ERROR: module APK file not found: $MODULE_APK_FILE"
exit 1
fi

if [ -n "$MODULE_APK_FILES_MANIFEST" ] && [ ! -f "$MODULE_APK_FILES_MANIFEST" ]; then
echo " > ERROR: module APK files manifest not found: $MODULE_APK_FILES_MANIFEST"
exit 1
fi

# Get the package name from config/pkg if it exists
CONFIG_PKG_FILE="config/pkg"
if [ ! -f "$CONFIG_PKG_FILE" ]; then
Expand All @@ -45,7 +50,7 @@ fi

MODULE_PACKAGE=$(cat "$CONFIG_PKG_FILE")
if [ -z "$MODULE_PACKAGE" ]; then
echo " > ERROR: $MODULE_PACKAGE not found in $CONFIG_PKG_FILE"
echo " > ERROR: package name not found in $CONFIG_PKG_FILE"
exit 1
fi

Expand Down Expand Up @@ -119,19 +124,39 @@ else
echo " - No GPS coordinates file found, skipping GPS setup"
fi

echo ">> Step 3: Install current repository module app..."
echo ">> Step 3: Install module app(s)..."

echo " - Module package: $MODULE_PACKAGE"
echo " - Installing module app from: $MODULE_APK_FILE"
if [ -n "$MODULE_APK_FILE" ]; then
echo " - Module package: $MODULE_PACKAGE"
echo " - Installing module app from: $MODULE_APK_FILE"

adb install -r -d "$MODULE_APK_FILE"
adb install -r -d "$MODULE_APK_FILE"

# Verify installation
if adb shell pm list packages | grep -q "^package:${MODULE_PACKAGE}$"; then
echo " - Module app installed successfully"
else
echo " > ERROR: Module app installation may have failed!"
exit 1
# Verify installation
if adb shell pm list packages | grep -q "^package:${MODULE_PACKAGE}$"; then
echo " - Module app installed successfully"
else
echo " > ERROR: Module app installation may have failed!"
exit 1
fi
fi

if [ -n "$MODULE_APK_FILES_MANIFEST" ] && [ -f "$MODULE_APK_FILES_MANIFEST" ]; then
echo " - Installing modules from manifest: $MODULE_APK_FILES_MANIFEST"
while IFS=: read -r MOD_PKG MOD_APK; do
echo " - Installing module '$MOD_PKG' from: $MOD_APK"
if [ ! -f "$MOD_APK" ]; then
echo " > ERROR: Module APK not found: $MOD_APK"
exit 1
fi
adb install -r -d "$MOD_APK"
if adb shell pm list packages | grep -q "^package:${MOD_PKG}$"; then
echo " - Module '$MOD_PKG' installed successfully"
else
echo " > ERROR: Module '$MOD_PKG' installation may have failed!"
exit 1
fi
done < "$MODULE_APK_FILES_MANIFEST"
fi

echo ">> Step 4: Disable Pixel Launcher to prevent crashes..."
Expand Down
Loading