Skip to content

feat: Onboarding

feat: Onboarding #270

Workflow file for this run

name: Validate
on:
push:
branches:
- main
pull_request:
jobs:
build:
name: Build
runs-on: macos-latest
strategy:
matrix:
type: [Debug, Release]
organization: [ooni, dw]
steps:
- uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
- name: Build Android
run: ./gradlew copyBrandingToCommonResources assemble${{ matrix.type }} -Porganization=${{ matrix.organization }}
- name: Build iOS Framework
run: ./gradlew link${{ matrix.type }}FrameworkIosSimulatorArm64 -Porganization=${{ matrix.organization }}
- name: Uploads artifacts
uses: actions/upload-artifact@v4
if: matrix.type == 'Debug' # we want just the debug apk. Releases have to be signed and uploaded to the stores
with:
name: ${{ matrix.organization }}-${{ matrix.type }}-APK
path: composeApp/build/outputs/apk/debug/composeApp-debug.apk
android-lint:
name: Android Lint
runs-on: macos-latest
needs: [ build ]
steps:
- uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
- name: Run lint
run: ./gradlew copyBrandingToCommonResources lint
- name: Uploads test reports
uses: actions/upload-artifact@v4
if: failure()
with:
name: android-lint-report
path: composeApp/build/reports/
kotlin-lint:
name: Kotlin Lint
runs-on: macos-latest
needs: [ build ]
steps:
- uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
- name: Run lint
run: ./gradlew copyBrandingToCommonResources ktlintCheck
- name: Uploads test reports
uses: actions/upload-artifact@v4
if: failure()
with:
name: android-lint-report
path: composeApp/build/reports/ktlint/
common-tests:
name: Common Tests
runs-on: macos-latest
needs: [ build ]
steps:
- uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
- name: Run common tests
run: ./gradlew copyBrandingToCommonResources :composeApp:iosSimulatorArm64Test
- name: Uploads test reports
uses: actions/upload-artifact@v4
if: failure()
with:
name: android-lint-report
path: composeApp/build/reports/tests/iosSimulatorArm64Test/
distribute:
name: Firebase App Distribution
runs-on: ubuntu-latest
needs: [ common-tests ]
strategy:
matrix:
organization: [ooni, dw]
steps:
- uses: actions/checkout@v4
- name: Download app APK
uses: actions/download-artifact@v4
with:
name: ${{ matrix.organization }}-Debug-APK
- name: Firebase App Distribution
id: uploadArtifact
env:
INPUT_APP_ID: ${{ fromJSON(secrets.FIREBASE_APP_ID)[matrix.organization] }}
INPUT_SERVICE_CREDENTIALS_FILE_CONTENT: ${{ secrets.CREDENTIAL_FILE_CONTENT }}
GOOGLE_APPLICATION_CREDENTIALS: service_credentials_content.json
INPUT_GROUPS: testers
INPUT_FILE: composeApp-debug.apk
run: |
cat <<< "${INPUT_SERVICE_CREDENTIALS_FILE_CONTENT}" > service_credentials_content.json
sudo npm install -g firebase-tools
OUTPUT=$(firebase appdistribution:distribute "$INPUT_FILE" --app "$INPUT_APP_ID" --groups "$INPUT_GROUPS" --testers "$INPUT_TESTERS" --release-notes "$(git show -s --format='%an <%ae> , Hash : %H, Message : %s')")
echo "$OUTPUT"
DASHBOARD_URL=$(echo "$OUTPUT" | grep -o 'https://console.firebase.google.com/.*')
echo "Dashboard URL( ${{ matrix.organization }} ): $DASHBOARD_URL" >> $GITHUB_STEP_SUMMARY