name: checks on: push: paths-ignore: - deployment/halt_deployment_marker branches: - master - release-branch-* pull_request: paths-ignore: - deployment/halt_deployment_marker branches: - '*' env: TERM: dumb GRADLE_OPTS: "-Dorg.gradle.daemon=false" GRADLE_USER_HOME: ".github_cache_gradle/" TMPDIR: "/tmp" jobs: checks: runs-on: ubuntu-18.04 container: menny/ndk_ask:1.14.0 steps: - uses: actions/checkout@v2 - uses: actions/cache@v1.1.2 with: path: .github_cache_gradle/ key: checks-gradle-v2-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/*.gradle') }}-${{ hashFiles('buildSrc/**/*.java') }} restore-keys: checks-gradle-v2-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}- - name: setup run: ./scripts/ci/ci_setup.sh - name: check run: ./scripts/ci/ci_check.sh - uses: ./.github/actions/collect-reports if: always() with: file_pattern: checkstyle*.html output_folder: collected_reports/checkstyle - uses: ./.github/actions/collect-reports if: always() with: file_pattern: lint-results-*.html output_folder: collected_reports/lint - uses: actions/upload-artifact@v1.0.0 if: always() with: name: checks-reports path: collected_reports app-tests-shards: runs-on: ubuntu-18.04 container: menny/ndk_ask:1.14.0 strategy: matrix: index: [0, 1] groups_count: [2] fail-fast: false steps: - uses: actions/checkout@v2 - uses: actions/cache@v1.1.2 with: path: .github_cache_gradle/ key: tests-shards-gradle-v2-${{ matrix.index }}-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/*.gradle') }}-${{ hashFiles('buildSrc/**/*.java') }} restore-keys: tests-shards-gradle-v2-${{ matrix.index }}-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}- - name: setup run: ./scripts/ci/ci_setup.sh - name: tests uses: ./.github/actions/test-shard-run with: index: ${{ matrix.index }} groups_count: ${{ matrix.groups_count }} module: ":ime:app:" extra_args: "-PexcludeTestClasses=\"**/*AllSdkTest*\"" - uses: ./.github/actions/codecov - uses: ./.github/actions/collect-reports if: always() with: file_pattern: "**/build/reports/tests/**" - uses: actions/upload-artifact@v1.0.0 if: always() with: name: app-tests-${{ matrix.index }} path: collected_reports - uses: actions/upload-artifact@v1.0.0 if: always() with: name: app-tests-${{ matrix.index }}-build-logging path: build-logging app-all-sdks-tests: runs-on: ubuntu-18.04 container: menny/ndk_ask:1.14.0 steps: - uses: actions/checkout@v2 - uses: actions/cache@v1.1.2 with: path: .github_cache_gradle/ key: tests-all-sdks-gradle-v2-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/*.gradle') }}-${{ hashFiles('buildSrc/**/*.java') }} restore-keys: tests-all-sdks-gradle-v2-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}- - name: setup run: ./scripts/ci/ci_setup.sh - name: tests uses: ./.github/actions/test-shard-run with: index: 0 groups_count: 1 module: ":ime:app:" extra_args: "--tests=*AllSdkTest*" - uses: ./.github/actions/codecov - uses: ./.github/actions/collect-reports if: always() with: file_pattern: "**/build/reports/tests/**" - uses: actions/upload-artifact@v1.0.0 if: always() with: name: app-less-tests path: collected_reports - uses: actions/upload-artifact@v1.0.0 if: always() with: name: app-all-sdks-tests-build-logging path: build-logging app-less-tests: runs-on: ubuntu-18.04 container: menny/ndk_ask:1.14.0 steps: - uses: actions/checkout@v2 - uses: actions/cache@v1.1.2 with: path: .github_cache_gradle/ key: tests-app-less-gradle-v2-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/*.gradle') }}-${{ hashFiles('buildSrc/**/*.java') }} restore-keys: tests-app-less-gradle-v2-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}- - name: setup run: ./scripts/ci/ci_setup.sh - name: tests uses: ./.github/actions/test-shard-run with: index: 0 groups_count: 1 module: "" extra_args: "-x :ime:app:testDebugUnitTest -x :ime:app:testDebugUnitTestCoverage" - uses: ./.github/actions/codecov - uses: ./.github/actions/collect-reports if: always() with: file_pattern: "**/build/reports/tests/**" - uses: actions/upload-artifact@v1.0.0 if: always() with: name: app-less-tests path: collected_reports - uses: actions/upload-artifact@v1.0.0 if: always() with: name: app-less-tests-build-logging path: build-logging verify-all-addons: runs-on: ubuntu-18.04 container: menny/ndk_ask:1.14.0 steps: - uses: actions/checkout@v2 - uses: actions/cache@v1.1.2 with: path: .github_cache_gradle/ key: verify-all-addons-gradle-v2-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/*.gradle') }}-${{ hashFiles('buildSrc/**/*.java') }} restore-keys: verify-all-addons-gradle-v2-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}- - name: setup run: ./scripts/ci/ci_setup.sh - name: verify-add-ons run: | ./scripts/download_robolectric_jars_to_machine.sh ./gradlew :ime:app:testAllAddOnsUnitTestCoverage :ime:app:testAllAddOnsUnitTest --tests="*LoadedKeyboardsVerificationTest*" chmod -R a+rwx . - uses: ./.github/actions/codecov - uses: ./.github/actions/collect-reports if: always() with: file_pattern: "**/build/reports/tests/**" - uses: actions/upload-artifact@v1.0.0 if: always() with: name: verify-all-addons path: collected_reports - uses: actions/upload-artifact@v1.0.0 if: always() with: name: verify-all-addons-build-logging path: build-logging deploy-dry-run: runs-on: ubuntu-18.04 container: menny/ndk_ask:1.14.0 steps: - uses: actions/checkout@v2 - uses: actions/cache@v1.1.2 with: path: .github_cache_gradle/ key: dry-run-deploy-gradle-v2-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/*.gradle') }}-${{ hashFiles('buildSrc/**/*.java') }} restore-keys: dry-run-deploy-gradle-v2-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}- - name: setup run: ./scripts/ci/ci_setup.sh - name: dry-run-release-build run: | mkdir -p /root/.android/ || true cp ./.github/actions/deploy/debug.keystore /root/.android/ || exit 1 ./gradlew -PwithAutoVersioning :generateFdroidYamls -DdeployChannel=alpha assembleRelease assembleCanary verifyReleaseResources generateReleasePlayResources generateCanaryPlayResources chmod -R a+rwx . - uses: actions/upload-artifact@v1.0.0 with: name: fdroid-metadata-dry-run path: outputs/fdroid master-green-requirement: needs: [checks, app-all-sdks-tests, app-tests-shards, app-less-tests, deploy-dry-run, verify-all-addons] runs-on: ubuntu-18.04 steps: - name: ready run: echo "DONE" deploy-request: if: github.event_name == 'push' needs: [master-green-requirement] runs-on: ubuntu-18.04 container: menny/android_base:1.14.0 steps: - uses: actions/checkout@v2 - uses: ./.github/actions/deploy-request name: request-new-deploys with: sha: ${{ github.sha }} ref: ${{ github.ref }} new_deploy: true api_username: ${{ secrets.BOT_MASTER_RW_GITHUB_USERNAME }} api_token: ${{ secrets.BOT_MASTER_RW_GITHUB_TOKEN }} merge-to-master: if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release-branch-') needs: [master-green-requirement] runs-on: ubuntu-18.04 container: menny/android_base:1.14.0 steps: - uses: actions/checkout@v2 with: token: ${{ secrets.BOT_MASTER_RW_GITHUB_TOKEN }} fetch-depth: 0 ref: master - name: create-merge-commit run: ./scripts/ci/ci_merge_to_master.sh ${{ github.ref }} - name: Create pull request uses: peter-evans/create-pull-request@v2.4.4 with: token: ${{ secrets.BOT_MASTER_RW_GITHUB_TOKEN }} commit-message: 'Merge to master from ${{ github.ref }}.' title: 'Automated Merge to master from ${{ github.ref }}' committer: 'Polyglot ' author: 'Polyglot ' body: 'Generated from commit ${{ github.sha }} on ${{ github.ref }}.' team-reviewers: maintainers branch: 'bot-pr/merge-to-master-from-${{ github.ref }}' base: master labels: automerge