mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-02 19:17:10 +00:00
The tap moved to 1.5.0, whose bundle has no top-level Frameworks/, and prepare.sh stages bin/ and Frameworks/ as siblings because the binary resolves through @rpath. Floating on it also made the hard-coded companion-1.1.8 output name a lie. The ios-assets cache does not cover this: it restores and make rebuilds anyway, because checkout stamps prepare.sh newer than the archived tarball. Master was green only because its last run predated the bump.
94 lines
3.8 KiB
YAML
94 lines
3.8 KiB
YAML
name: folio app
|
|
description: Install the toolchain folio needs on one platform, and build the app there.
|
|
|
|
inputs:
|
|
platform:
|
|
description: android, ios or web
|
|
required: true
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Set up the JDKs
|
|
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
|
|
with:
|
|
distribution: temurin
|
|
# The metro gradle plugin folio builds with needs a 21 runtime; the
|
|
# sidecar toolchain pins 17. Both are installed so gradle can pick.
|
|
java-version: |
|
|
17
|
|
21
|
|
|
|
# The iOS app builds its Kotlin framework through the folio gradle project,
|
|
# which configures :app:androidApp, so this is needed off Android too.
|
|
# `make sanderling-android` wants it as well, for the sidecar JAR.
|
|
- name: Set up Android SDK
|
|
if: inputs.platform != 'web'
|
|
uses: android-actions/setup-android@40fd30fb8d7440372e1316f5d1809ec01dcd3699 # v4.0.1
|
|
|
|
- name: Cache Gradle
|
|
if: inputs.platform != 'ios'
|
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
key: folio-gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
restore-keys: |
|
|
folio-gradle-${{ runner.os }}-
|
|
|
|
# idb-companion is not in homebrew-core, only in facebook/homebrew-fb, so
|
|
# it has to be named by its full tap path. xcodegen and just are core.
|
|
#
|
|
# The tap is checked out at the 1.1.8 formula because companionassets stages
|
|
# bin/ and Frameworks/ as siblings and names its output companion-1.1.8. The
|
|
# tap moved to 1.5.0, which drops the top-level Frameworks/, so floating on
|
|
# it broke the staging and made the embedded version string a lie. Moving to
|
|
# 1.5.0 is a companion change, not a CI one.
|
|
- name: Install idb-companion, xcodegen and just
|
|
if: inputs.platform == 'ios'
|
|
shell: bash
|
|
env:
|
|
HOMEBREW_NO_AUTO_UPDATE: 1
|
|
run: |
|
|
brew install xcodegen just
|
|
brew tap facebook/fb
|
|
git -C "$(brew --repository facebook/fb)" checkout --quiet c0386793f59da10c619787f2aa18d938ef1d69c9
|
|
brew install facebook/fb/idb-companion
|
|
|
|
# Both asset tarballs are built by the prepare scripts, and the runner
|
|
# bundle is an xcodebuild of companion/Sources. Keyed on the scripts and
|
|
# the versions the Makefile embeds, so a later run reuses them. This has to
|
|
# land before `make sanderling-ios`, which is what consumes them.
|
|
- name: Cache the companion and runner bundles
|
|
if: inputs.platform == 'ios'
|
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
with:
|
|
path: |
|
|
internal/driver/ioscompanion/companionassets/assets
|
|
internal/driver/ioscompanion/runnerassets/assets
|
|
key: ios-assets-${{ runner.os }}-${{ hashFiles('internal/driver/ioscompanion/companionassets/prepare.sh', 'companion/prepare.sh', 'companion/project.yml', 'companion/Sources/**') }}
|
|
|
|
# Without this the emulator falls back to software rendering and every
|
|
# step costs several seconds.
|
|
- name: Enable KVM
|
|
if: inputs.platform == 'android'
|
|
shell: bash
|
|
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: Build the folio APK
|
|
if: inputs.platform == 'android'
|
|
shell: bash
|
|
working-directory: examples/folio
|
|
run: ./gradlew :app:androidApp:assembleDebug
|
|
|
|
- name: Build the folio wasmJs app
|
|
if: inputs.platform == 'web'
|
|
shell: bash
|
|
working-directory: examples/folio
|
|
run: ./gradlew :app:webApp:wasmJsBrowserDevelopmentExecutableDistribution
|