Translations update from Localization Lab Weblate #4139
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Validate Build | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| android-lint: | |
| name: Android Lint ${{ matrix.variant }} | |
| if: ${{ always() }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| variant: [ fdroid, full ] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup | |
| uses: ./.github/actions/setup | |
| - name: Run lint | |
| run: | | |
| ./gradlew copyBrandingToCommonResources lint${{ matrix.variant }}Debug || { | |
| echo "::warning::Android Lint ${{ matrix.variant }} failed. Check the uploaded reports for details." | |
| exit 0 | |
| } | |
| - name: Uploads test reports | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: android-lint-${{ matrix.variant }}-report | |
| path: composeApp/build/reports/ | |
| retention-days: 7 | |
| kotlin-lint: | |
| name: Kotlin Lint | |
| runs-on: ubuntu-latest | |
| 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: kotlin-lint-report | |
| path: composeApp/build/reports/ktlint/ | |
| retention-days: 7 | |
| common-tests: | |
| name: Common Tests | |
| runs-on: macos-latest | |
| strategy: | |
| matrix: | |
| organization: [ ooni, dw ] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup | |
| uses: ./.github/actions/setup | |
| - name: Run common tests | |
| run: ./gradlew copyBrandingToCommonResources :composeApp:desktopTest -Porganization=${{ matrix.organization }} | |
| - name: Uploads test reports | |
| uses: actions/upload-artifact@v4 | |
| if: failure() | |
| with: | |
| name: common-tests-report-${{ matrix.organization }} | |
| path: composeApp/build/reports/tests/desktopTest/ | |
| retention-days: 7 | |
| build-android: | |
| name: Build Android | |
| runs-on: ubuntu-latest | |
| 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: Upload APK artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.organization }}-release-APK | |
| path: composeApp/build/outputs/apk/full/release/composeApp-full-universal-release.apk | |
| retention-days: 7 | |
| build-ios: | |
| name: Build iOS | |
| runs-on: macos-26 | |
| strategy: | |
| matrix: | |
| organization: [ ooni, dw ] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup | |
| uses: ./.github/actions/setup | |
| - name: Set Xcode version | |
| run: | | |
| sudo xcode-select -switch /Applications/Xcode_26.0.1.app | |
| - name: Xcode Cache | |
| uses: irgaly/xcode-cache@v1 | |
| with: | |
| key: xcode-cache-deriveddata-${{ github.workflow }}-${{ matrix.organization }}-${{ github.sha }} | |
| restore-keys: xcode-cache-deriveddata-${{ github.workflow }}-${{ matrix.organization }}- | |
| - name: Kotlin Native Cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.konan | |
| key: kotlin-native-${{ hashFiles('**/libs.versions.toml') }} | |
| - name: CocoaPods Cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| Pods | |
| ~/Library/Caches/CocoaPods | |
| ~/.cocoapods | |
| key: pods-${{ hashFiles('**/Podfile.lock') }} | |
| restore-keys: pods- | |
| - name: Build iOS App | |
| run: bundle exec fastlane ios build organization:${{ matrix.organization }} | |
| continue-on-error: false | |
| build-desktop: | |
| name: Build Desktop | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup | |
| uses: ./.github/actions/setup | |
| - name: Package Desktop app | |
| run: ./gradlew copyBrandingToCommonResources packageDistributionForCurrentOS | |
| - name: Uploads artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: DesktopApp | |
| path: composeApp/build/compose/binaries/**/**/* | |
| retention-days: 7 | |
| distribute: | |
| name: Firebase App Distribution | |
| runs-on: ubuntu-latest | |
| needs: [build-android, 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: Download APK artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ${{ matrix.organization }}-release-APK | |
| path: composeApp/build/outputs/apk/full/release/ | |
| - 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-universal-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 |