Skip to content

feat: Group experimental measurements by type #751

feat: Group experimental measurements by type

feat: Group experimental measurements by type #751

Workflow file for this run

name: Validate
on:
push:
branches:
- main
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build
runs-on: macos-latest
strategy:
matrix:
type: [ Debug ]
organization: [ ooni, dw ]
steps:
- uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
- name: Build Android
run: ./gradlew copyBrandingToCommonResources assembleFull${{ matrix.type }} -Porganization=${{ matrix.organization }}
- name: Build iOS Framework
run: ./gradlew link${{ matrix.type }}FrameworkIosSimulatorArm64 -Porganization=${{ matrix.organization }}
- name: Xcode Cache
uses: irgaly/xcode-cache@v1
with:
key: xcode-cache-deriveddata-${{ github.workflow }}-${{ github.sha }}
restore-keys: xcode-cache-deriveddata-${{ github.workflow }}-
- run: ./gradlew podInstall
- run: cd iosApp/ && pod install
- name: Build iOS App
run: |
set -o pipefail
if [ "${{ matrix.organization }}" == "ooni" ]; then
SCHEME="OONIProbe"
elif [ "${{ matrix.organization }}" == "dw" ]; then
SCHEME="NewsMediaScan"
fi
echo "Building $SCHEME"
echo "organization=${{ matrix.organization }}" >> gradle.properties
xcodebuild -workspace iosApp/iosApp.xcworkspace -scheme "$SCHEME" -destination='name=Any iOS Device' -sdk iphoneos archive CODE_SIGNING_ALLOWED="NO" | xcpretty
- name: Uploads artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.organization }}-${{ matrix.type }}-APK
path: composeApp/build/outputs/apk/full/debug/composeApp-full-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 ]
if: github.ref == 'refs/heads/main'
strategy:
matrix:
organization: [ ooni, dw ]
steps:
- uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
- name: Build release Android APK
run: ./gradlew copyBrandingToCommonResources assembleFullRelease -Porganization=${{ matrix.organization }}
- 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/build/outputs/apk/full/release/composeApp-full-release.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