immich/.github/workflows
Alex 8b3c9bf9c3
feat(ci): publish PR Android APK to comment (#28283)
* feat(ci): publish PR Android APK to R2 with installable links

Adds a universal debug APK to PR builds and uploads it to a public
R2 bucket alongside the existing GitHub Actions artifact. Posts a
sticky PR comment with tap-to-install links and a QR code so testers
can install directly on their device without unzipping artifacts.

Required setup:
- Secrets: R2_APK_ACCESS_KEY_ID, R2_APK_SECRET_ACCESS_KEY,
  R2_APK_ACCOUNT_ID, R2_APK_BUCKET
- Optional repo variable: APK_PUBLIC_HOST (defaults to apk.immich.app)
- R2 bucket configured with a public custom domain matching APK_PUBLIC_HOST

* chore(ci): drop R2 upload, link directly to GitHub artifact

Surfaces the existing release-apk-signed artifact in a sticky PR
comment with a QR code. Avoids new infra and secrets — the trade-off
is GitHub login and a zip wrapper instead of tap-to-install.

* feat(ci): build PR APK as release and publish to GitHub Release

PR builds now produce a release APK signed with the release keystore.
The universal APK is published as a GitHub Release asset under tag
'pr-<num>' (prerelease), giving testers a direct, unzipped, tap-to-
install URL plus a QR code in the PR comment. The release-apk-signed
artifact is unchanged.

* chore(ci): drop GitHub Release, publish universal APK as own artifact

Reverts the prerelease publish. Uploads the universal release APK as
a separate single-file artifact so its download URL gives a zip
containing only that APK — no extra files to dig through. The QR in
the PR comment points at this universal-only artifact.

* chore(ci): build only universal APK for PR, drop split artifact

PR builds skip the arm64-only split — release-apk-signed now contains
just the universal app-release.apk, so the download zip is a single
file. Removes the redundant separate universal artifact and points
the PR comment QR at the main artifact URL.

* feat(mobile): suffix PR APK applicationId so it installs alongside production

Each PR build now becomes app.alextran.immich.pr<num> via PR_NUMBER env
read in build.gradle, so testers can install multiple PR builds and the
Play Store version on the same device without uninstalling. Also tags
the version with -pr<num> for visibility.

* feat(ci): allow PR APK build to run on forks

Forks can now run the Android build job. Steps that need repo secrets
(create-workflow-token, Create Keystore) are skipped when the PR is
from a fork, the checkout falls back to GITHUB_TOKEN, and build.gradle
falls back to debug signing if the release keystore isn't materialised.
The PR comment still requires write access, so it's gated to non-fork
PRs — fork APKs are reachable from the workflow run's artifact tab.
2026-05-09 07:46:40 -05:00
..
auto-close.yml chore: link to PR template in auto-close message (#27756) 2026-04-16 09:14:36 -04:00
build-mobile.yml feat(ci): publish PR Android APK to comment (#28283) 2026-05-09 07:46:40 -05:00
cache-cleanup.yml chore: switch push-o-matic auth from app-id to client-id (#28269) 2026-05-06 17:01:14 +00:00
check-openapi.yml chore(deps): update github-actions (#28262) 2026-05-06 16:00:03 +02:00
cli.yml chore: use mise (#28298) 2026-05-08 15:21:33 -04:00
close-duplicates.yml chore(deps): update github-actions (#28262) 2026-05-06 16:00:03 +02:00
codeql-analysis.yml chore: switch push-o-matic auth from app-id to client-id (#28269) 2026-05-06 17:01:14 +00:00
docker.yml chore: switch push-o-matic auth from app-id to client-id (#28269) 2026-05-06 17:01:14 +00:00
docs-build.yml chore: use mise (#28298) 2026-05-08 15:21:33 -04:00
docs-deploy.yml chore: use app token for mise in workflows (#28270) 2026-05-06 14:51:25 -04:00
docs-destroy.yml chore: use app token for mise in workflows (#28270) 2026-05-06 14:51:25 -04:00
fix-format.yml chore: use mise (#28298) 2026-05-08 15:21:33 -04:00
merge-translations.yml chore: switch push-o-matic auth from app-id to client-id (#28269) 2026-05-06 17:01:14 +00:00
org-pr-require-conventional-commit.yml chore: modify .github/workflows/org-pr-require-conventional-commit.yml 2025-09-15 17:27:51 +00:00
org-zizmor.yml chore: modify .github/workflows/org-zizmor.yml 2025-09-15 17:59:16 +00:00
pr-label-validation.yml chore: switch push-o-matic auth from app-id to client-id (#28269) 2026-05-06 17:01:14 +00:00
pr-labeler.yml chore: switch push-o-matic auth from app-id to client-id (#28269) 2026-05-06 17:01:14 +00:00
prepare-release.yml chore: use mise (#28298) 2026-05-08 15:21:33 -04:00
preview-label.yaml chore: switch push-o-matic auth from app-id to client-id (#28269) 2026-05-06 17:01:14 +00:00
sdk.yml chore: use mise (#28298) 2026-05-08 15:21:33 -04:00
static_analysis.yml chore: switch push-o-matic auth from app-id to client-id (#28269) 2026-05-06 17:01:14 +00:00
test.yml chore: faster web linting (#28303) 2026-05-08 16:55:14 -04:00
weblate-lock.yml chore: switch push-o-matic auth from app-id to client-id (#28269) 2026-05-06 17:01:14 +00:00