| name: CI |
| |
| on: |
| push: |
| branches: |
| - master |
| pull_request: |
| |
| jobs: |
| bazel-test: |
| name: 'Bazel tests' |
| runs-on: ubuntu-latest |
| steps: |
| - name: 'Check out repository' |
| uses: actions/checkout@v2 |
| - name: 'Cache local Maven repository' |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ~/.m2/repository |
| !~/.m2/repository/com/google/dagger |
| key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} |
| restore-keys: | |
| ${{ runner.os }}-maven- |
| - name: 'Cache Bazel files' |
| uses: actions/cache@v2 |
| with: |
| path: ~/.cache/bazel |
| key: ${{ runner.os }}-bazel-${{ github.sha }} |
| restore-keys: | |
| ${{ runner.os }}-bazel- |
| - name: 'Cache Gradle files' |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ~/.gradle/caches |
| ~/.gradle/wrapper |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} |
| restore-keys: | |
| ${{ runner.os }}-gradle- |
| - name: 'Run Bazel tests' |
| run: bazel test --test_output=errors //... |
| shell: bash |
| - name: 'Install local snapshot' |
| run: ./util/install-local-snapshot.sh |
| shell: bash |
| - name: 'Upload local snapshot for tests' |
| uses: actions/upload-artifact@v2 |
| with: |
| name: local-snapshot |
| path: ~/.m2/repository/com/google/dagger |
| artifact-local-tests: |
| name: 'Artifact local tests' |
| needs: bazel-test |
| runs-on: ubuntu-latest |
| steps: |
| - name: 'Check out repository' |
| uses: actions/checkout@v2 |
| - name: 'Cache Gradle files' |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ~/.gradle/caches |
| ~/.gradle/wrapper |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} |
| restore-keys: | |
| ${{ runner.os }}-gradle- |
| - name: 'Download local snapshot for tests' |
| uses: actions/download-artifact@v2 |
| with: |
| name: local-snapshot |
| path: ~/.m2/repository/com/google/dagger |
| - name: 'Gradle tests' |
| run: ./util/run-local-gradle-tests.sh |
| shell: bash |
| artifact-emulator-tests: |
| name: 'Artifact emulator tests (AGP ${{ matrix.agp }})' |
| needs: bazel-test |
| runs-on: ubuntu-latest |
| strategy: |
| matrix: |
| agp: ['4.1.0', '4.2.0-beta01'] |
| steps: |
| - name: 'Check out repository' |
| uses: actions/checkout@v2 |
| - name: 'Cache Gradle files' |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ~/.gradle/caches |
| ~/.gradle/wrapper |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} |
| restore-keys: | |
| ${{ runner.os }}-gradle- |
| - name: 'Download local snapshot for tests' |
| uses: actions/download-artifact@v2 |
| with: |
| name: local-snapshot |
| path: ~/.m2/repository/com/google/dagger |
| - name: 'Gradle Android tests (AGP ${{ matrix.agp }})' |
| run: ./util/run-local-gradle-android-tests.sh "${{ matrix.agp }}" |
| shell: bash |
| env: |
| ADB_INSTALL_TIMEOUT: 10 # In Minutes |
| publish-snapshot: |
| name: 'Publish snapshot' |
| needs: [bazel-test, artifact-local-tests, artifact-emulator-tests] |
| if: github.event_name == 'push' && github.repository == 'google/dagger' && github.ref == 'refs/heads/master' |
| runs-on: ubuntu-latest |
| steps: |
| - name: 'Check out repository' |
| uses: actions/checkout@v2 |
| - name: 'Cache local Maven repository' |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ~/.m2/repository |
| !~/.m2/repository/com/google/dagger |
| key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} |
| restore-keys: | |
| ${{ runner.os }}-maven- |
| - name: 'Cache Bazel files' |
| uses: actions/cache@v2 |
| with: |
| path: ~/.cache/bazel |
| key: ${{ runner.os }}-bazel-${{ github.sha }} |
| restore-keys: | |
| ${{ runner.os }}-bazel- |
| - name: 'Cache Gradle files' |
| uses: actions/cache@v2 |
| with: |
| path: | |
| ~/.gradle/caches |
| ~/.gradle/wrapper |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} |
| restore-keys: | |
| ${{ runner.os }}-gradle- |
| - name: 'Publish latest snapshot' |
| run: ./util/publish-snapshot-on-commit.sh |
| shell: bash |
| env: |
| CI_DEPLOY_USERNAME: ${{ secrets.CI_DEPLOY_USERNAME }} |
| CI_DEPLOY_PASSWORD: ${{ secrets.CI_DEPLOY_PASSWORD }} |