mirror of
https://github.com/Felitendo/Tanken.git
synced 2026-11-01 09:03:25 +01:00
111 lines
3.7 KiB
YAML
111 lines
3.7 KiB
YAML
name: Mobile CI
|
|
|
|
# The mobile app was removed from the repo for now. This workflow is kept
|
|
# manual-only so the whole build/release pipeline is ready the moment a new
|
|
# mobile/ app lands — just restore the push/pull_request triggers below.
|
|
on:
|
|
workflow_dispatch:
|
|
# push:
|
|
# branches: [main]
|
|
# paths: ["mobile/**", ".github/workflows/mobile-ci.yml"]
|
|
# pull_request:
|
|
# branches: [main]
|
|
# paths: ["mobile/**", ".github/workflows/mobile-ci.yml"]
|
|
|
|
concurrency:
|
|
group: mobile-ci-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
desktop-checks:
|
|
name: Desktop tests
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 21
|
|
|
|
- uses: gradle/actions/setup-gradle@v4
|
|
|
|
- name: Run unit tests and compile desktop target
|
|
working-directory: mobile
|
|
run: ./gradlew :composeApp:desktopTest :composeApp:compileKotlinDesktop
|
|
|
|
ios:
|
|
name: iOS (unsigned IPA)
|
|
needs: desktop-checks
|
|
runs-on: macos-26
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 21
|
|
|
|
- uses: gradle/actions/setup-gradle@v4
|
|
|
|
- name: Select Xcode
|
|
uses: maxim-lobanov/setup-xcode@v1
|
|
with:
|
|
xcode-version: latest-stable
|
|
|
|
- name: Archive (unsigned, device SDK)
|
|
run: |
|
|
xcodebuild -version
|
|
xcodebuild \
|
|
-project mobile/iosApp/Tanken.xcodeproj \
|
|
-scheme Tanken \
|
|
-configuration Release \
|
|
-destination 'generic/platform=iOS' \
|
|
-archivePath "$RUNNER_TEMP/Tanken.xcarchive" \
|
|
archive \
|
|
CODE_SIGNING_ALLOWED=NO \
|
|
CODE_SIGNING_REQUIRED=NO \
|
|
CODE_SIGN_IDENTITY="" \
|
|
DEVELOPMENT_TEAM=""
|
|
|
|
- name: Package unsigned IPA
|
|
run: |
|
|
cd "$RUNNER_TEMP"
|
|
rm -rf Payload Tanken.ipa
|
|
mkdir -p Payload
|
|
cp -R "Tanken.xcarchive/Products/Applications/Tanken.app" "Payload/"
|
|
zip -qr Tanken.ipa Payload
|
|
ls -lh Tanken.ipa
|
|
SIZE=$(stat -f%z Tanken.ipa)
|
|
if [ "$SIZE" -gt 125829120 ]; then
|
|
echo "IPA larger than 120 MB ($SIZE bytes) — investigate before shipping"
|
|
exit 1
|
|
fi
|
|
|
|
- name: Upload IPA artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: tanken-ios-unsigned
|
|
path: ${{ runner.temp }}/Tanken.ipa
|
|
if-no-files-found: error
|
|
|
|
# Single rolling "dev" prerelease: the tag is moved to the current commit
|
|
# and the IPA asset is replaced on every push to main (or a manual run
|
|
# from main, while the workflow is dispatch-only).
|
|
- name: Update rolling dev release
|
|
if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main'
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
run: |
|
|
git tag -f dev
|
|
git push origin dev --force
|
|
NOTES="Rolling development build (commit ${GITHUB_SHA::7}, $(date -u +'%Y-%m-%d %H:%M UTC')). Unsigned IPA — sign with AltStore/SideStore."
|
|
if gh release view dev --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then
|
|
gh release edit dev --repo "$GITHUB_REPOSITORY" --prerelease --title "Tanken iOS Dev" --notes "$NOTES"
|
|
else
|
|
gh release create dev --repo "$GITHUB_REPOSITORY" --prerelease --title "Tanken iOS Dev" --notes "$NOTES"
|
|
fi
|
|
gh release upload dev "$RUNNER_TEMP/Tanken.ipa" --repo "$GITHUB_REPOSITORY" --clobber
|