Files
flutter/.github/workflows/screenshots.yml
dependabot[bot] 42d47fc372 Bump actions/upload-artifact from 4 to 5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-04 09:07:51 +01:00

157 lines
6.2 KiB
YAML

name: Update screenshots
on:
workflow_dispatch:
jobs:
screenshots_apple:
name: 'iOS'
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- name: Common flutter setup
uses: ./.github/actions/flutter-common
- name: Install CocoaPods
run: |
cd ios
pod install || true
cd ..
- name: Boot iOS simulator
id: boot
run: |
SIMULATOR=$(xcrun simctl list devices available | awk -F '[()]' '/iPhone 17/{print $2; exit}')
echo "SIMULATOR=$SIMULATOR" >> $GITHUB_ENV
xcrun simctl boot "$SIMULATOR" || true
open -a Simulator || true
n=0; until xcrun simctl bootstatus "$SIMULATOR" -b || [ $n -ge 60 ]; do sleep 1; n=$((n+1)); done
- name: Generate screenshots
run: |
flutter drive --driver=test_driver/screenshot_driver.dart --target=integration_test/make_screenshots_test.dart --dart-define=DEVICE_TYPE=iOSPhoneBig -d "$SIMULATOR"
- name: Upload screenshots
uses: actions/upload-artifact@v5
with:
name: screenshots-ios
path: fastlane/metadata/ios/**/images/iPhone 6.9/*.png
screenshots_android:
name: 'Android - ${{ matrix.device.name }}'
runs-on: ubuntu-latest
strategy:
matrix:
device:
- name: "Phone"
profile: pixel_7_pro
device_type: androidPhone
folder: phoneScreenshots
- name: "Tablet 7in"
profile: 7in WSVGA (Tablet)
device_type: androidTabletSmall
folder: sevenInchScreenshots
- name: "Tablet 10in"
profile: pixel_tablet
device_type: androidTabletBig
folder: tenInchScreenshots
steps:
- uses: actions/checkout@v6
- name: Common flutter setup
uses: ./.github/actions/flutter-common
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Accept Android SDK licenses
run: yes | sdkmanager --licenses || true
# Free up disk space on the runner. List taken from
# https://github.com/flathub-infra/vorarbeiter/blob/main/.github/workflows/build.yml
#
# If needed, consult the list of available software for other candidates to remove:
# https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md
- name: Free up disk space
run: |
sudo swapoff -a || true
sudo rm -rf /opt/ghc /usr/local/.ghcup || true
sudo rm -rf /opt/hostedtoolcache/CodeQL || true
sudo rm -rf /opt/hostedtoolcache/PyPy
sudo rm -rf /usr/local/julia* /usr/share/java /usr/share/kotlinc
sudo rm -rf /opt/hostedtoolcache/go /opt/az /opt/microsoft /opt/pipx
sudo rm -rf /usr/share/miniconda /home/runner/.rustup /home/packer/.rustup /home/runneradmin/.rustup
sudo rm -rf /etc/skel/.rustup /opt/hostedtoolcache/node /opt/google-cloud-sdk
sudo rm -rf /usr/share/az_* /opt/google /usr/lib/firefox /usr/local/aws-*
sudo rm -rf /usr/libexec/gcc /opt/actionarchivecache /opt/hostedtoolcache/Ruby
sudo rm -rf /var/lib/mysql /usr/local/n
sudo rm -rf /swapfile || true
sudo rm -rf /usr/share/dotnet /usr/share/swift
sudo rm -rf /usr/local/share/boost /usr/local/share/powershell
sudo rm -rf /usr/lib/google-cloud-sdk
sudo rm -rf /usr/local/graalvm /usr/local/share/chromium
sudo rm -rf /usr/local/lib/node_modules
sudo rm -rf /usr/lib/dotnet /usr/lib/php /usr/share/mysql
sudo rm -rf /usr/lib/llvm-*
sudo rm -rf /usr/lib/mono
sudo apt-get clean || true
sudo rm -rf /var/lib/apt/lists/*
- name: Generate screenshots
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 36
target: google_apis
arch: x86_64
profile: ${{ matrix.device.profile }}
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: |
flutter drive --driver=test_driver/screenshot_driver.dart --target=integration_test/make_screenshots_test.dart --dart-define=DEVICE_TYPE=${{ matrix.device.device_type }}
- name: Upload screenshots
uses: actions/upload-artifact@v5
with:
name: screenshots-android-${{ matrix.device.folder }}
path: fastlane/metadata/android/**/images/${{ matrix.device.folder }}/*.png
commit_screenshots:
name: 'Commit and push'
needs:
- screenshots_apple
- screenshots_android
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Download all screenshot artifacts
uses: actions/download-artifact@v6
with:
path: screenshots
- name: Merge artifacts into fastlane/metadata
run: |
set -euo pipefail
rsync --archive --checksum --itemize-changes "screenshots/screenshots-android-phoneScreenshots/" fastlane/metadata/android/
rsync --archive --checksum --itemize-changes "screenshots/screenshots-android-sevenInchScreenshots/" fastlane/metadata/android/
rsync --archive --checksum --itemize-changes "screenshots/screenshots-android-tenInchScreenshots/" fastlane/metadata/android/
rsync --archive --checksum --itemize-changes "screenshots/screenshots-ios/" fastlane/metadata/ios/
- name: Commit screenshots to repository
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add fastlane/metadata/android fastlane/metadata/ios || true
if git diff --staged --quiet; then
echo "No new or changed screenshots to commit."
else
BRANCH=$(git rev-parse --abbrev-ref HEAD)
git commit -m "Update screenshots"
git push origin HEAD:"${BRANCH}"
fi