mirror of
https://github.com/streetwriters/notesnook.git
synced 2026-07-10 12:37:16 +02:00
Builds and publishes iOS and Android Preview apps that are instantly available to registered testers and quality assurance teams. We are using Firebase App Distribution for this purpose that works seamlessly on both android and iOS. Signed-off-by: Ammar Ahmed <40239442+ammarahm-ed@users.noreply.github.com>
136 lines
4.4 KiB
YAML
136 lines
4.4 KiB
YAML
name: Notesnook Android Preview
|
|
|
|
on:
|
|
pull_request_target:
|
|
types: [opened, reopened, synchronize]
|
|
branches: [master, beta]
|
|
paths:
|
|
- "apps/mobile/**"
|
|
- "packages/**"
|
|
- ".github/workflows/android.preview.firebase.yml"
|
|
|
|
jobs:
|
|
authorize:
|
|
environment: ${{ github.event_name == 'pull_request_target' &&
|
|
github.event.pull_request.head.repo.full_name != github.repository &&
|
|
'external' || 'internal' }}
|
|
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- run: echo true
|
|
|
|
build:
|
|
needs: authorize
|
|
runs-on: ubuntu-22.04
|
|
env:
|
|
STAGING_BUILD: true
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.ref }}
|
|
|
|
- name: Setup Node
|
|
uses: ./.github/actions/setup-node-with-cache
|
|
|
|
- name: Use specific Java version for the builds
|
|
uses: joschi/setup-jdk@v2
|
|
with:
|
|
java-version: "17"
|
|
architecture: "x64"
|
|
|
|
- name: Free Disk Space (Ubuntu)
|
|
uses: jlumbroso/free-disk-space@main
|
|
with:
|
|
# this might remove tools that are actually needed,
|
|
# if set to "true" but frees about 6 GB
|
|
tool-cache: false
|
|
|
|
# all of these default to true, but feel free to set to
|
|
# "false" if necessary for your workflow
|
|
android: false
|
|
dotnet: true
|
|
haskell: true
|
|
large-packages: true
|
|
docker-images: true
|
|
swap-storage: true
|
|
|
|
- name: Install node modules
|
|
run: |
|
|
npm ci --ignore-scripts --prefer-offline --no-audit
|
|
npm run bootstrap -- --scope=mobile
|
|
|
|
- name: Make Gradlew Executable
|
|
run: cd apps/mobile/android && chmod +x ./gradlew
|
|
|
|
- name: Get build number
|
|
id: build-number
|
|
run: echo "timestamp=$(($(date +%s) - 1774851180 ))" >> $GITHUB_OUTPUT
|
|
|
|
- name: Check for typescript errors
|
|
run: |
|
|
npm run tx mobile:build
|
|
cd apps/mobile
|
|
npx tsc --noEmit
|
|
|
|
- name: Build arm64-v8a apk
|
|
run: |
|
|
cd apps/mobile/android
|
|
./gradlew assembleRelease -PreactNativeArchitectures=arm64-v8a -PstagingReleaseBuild=true -PprBuildNumber=${{ steps.build-number.outputs.timestamp }}
|
|
|
|
- name: Get app version
|
|
id: package-version
|
|
uses: saionaro/extract-package-version@master
|
|
with:
|
|
path: apps/mobile
|
|
|
|
- name: Publish to firebase CLI
|
|
id: firebase-output
|
|
uses: wzieba/Firebase-Distribution-Github-Action@v1
|
|
with:
|
|
appId: ${{secrets.FIREBASE_APP_ID}}
|
|
serviceCredentialsFileContent: ${{ secrets.QA_SERVICE_ACCOUNT }}
|
|
groups: testers
|
|
file: apps/mobile/android/app/build/outputs/apk/release/app-arm64-v8a-release.apk
|
|
releaseNotes: Preview for https://github.com/streetwriters/notesnook/pull/${{github.event.number}}
|
|
|
|
- name: Post or update PR comment
|
|
uses: actions/github-script@v6
|
|
env:
|
|
preview_url: ${{ steps.firebase-output.outputs.TESTING_URI }}
|
|
with:
|
|
script: |
|
|
const marker = '<!-- android-preview-comment -->';
|
|
const prNumber = context.issue.number;
|
|
const previewUrl = process.env.preview_url || '';
|
|
const body = `${marker}\n**Android App Preview**\n\n${previewUrl || 'Preview URL unavailable — check workflow logs.'}\n\nCommit: ${process.env.GITHUB_SHA}\n`;
|
|
const { data: comments } = await github.rest.issues.listComments({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: prNumber,
|
|
});
|
|
const existing = comments.find(c => c.body && c.body.includes(marker));
|
|
if (existing) {
|
|
await github.rest.issues.updateComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
comment_id: existing.id,
|
|
body,
|
|
});
|
|
} else {
|
|
await github.rest.issues.createComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: prNumber,
|
|
body,
|
|
});
|
|
}
|
|
|
|
- name: Upload sourcemaps
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sourcemaps
|
|
path: |
|
|
apps/mobile/android/app/build/generated/sourcemaps/**/*.map
|