1name: Continuous integration 2on: 3 pull_request: 4 push: 5 branches: 6 - master 7concurrency: 8 group: ${{ github.ref }} 9 cancel-in-progress: true 10jobs: 11 build: 12 name: "JDK ${{ matrix.java }} on ${{ matrix.os }} with Error Prone ${{ matrix.epVersion }}" 13 strategy: 14 matrix: 15 include: 16 - os: ubuntu-latest 17 java: 11 18 epVersion: 2.10.0 19 - os: ubuntu-latest 20 java: 17 21 epVersion: 2.10.0 22 - os: macos-latest 23 java: 11 24 epVersion: 2.24.1 25 - os: ubuntu-latest 26 java: 11 27 epVersion: 2.24.1 28 - os: windows-latest 29 java: 11 30 epVersion: 2.24.1 31 - os: ubuntu-latest 32 java: 17 33 epVersion: 2.24.1 34 fail-fast: false 35 runs-on: ${{ matrix.os }} 36 steps: 37 - name: Check out NullAway sources 38 uses: actions/checkout@v3 39 - name: 'Set up JDKs' 40 uses: actions/setup-java@v3 41 with: 42 java-version: | 43 21 44 17 45 ${{ matrix.java }} 46 distribution: 'temurin' 47 - name: Build and test using Java ${{ matrix.java }} and Error Prone ${{ matrix.epVersion }} 48 env: 49 ORG_GRADLE_PROJECT_epApiVersion: ${{ matrix.epVersion }} 50 uses: gradle/gradle-build-action@v2 51 with: 52 arguments: build 53 - name: Run shellcheck 54 uses: gradle/gradle-build-action@v2 55 with: 56 arguments: shellcheck 57 if: runner.os == 'Linux' 58 - name: Aggregate jacoco coverage 59 id: jacoco_report 60 uses: gradle/gradle-build-action@v2 61 env: 62 ORG_GRADLE_PROJECT_epApiVersion: ${{ matrix.epVersion }} 63 with: 64 arguments: codeCoverageReport 65 continue-on-error: true 66 if: runner.os == 'Linux' && matrix.java == '11' && matrix.epVersion == '2.24.1' && github.repository == 'uber/NullAway' 67 - name: Upload coverage reports to Codecov 68 uses: codecov/codecov-action@v3 69 with: 70 files: ./code-coverage-report/build/reports/jacoco/codeCoverageReport/codeCoverageReport.xml 71 if: steps.jacoco_report.outcome == 'success' 72 - name: Test publishToMavenLocal flow 73 env: 74 ORG_GRADLE_PROJECT_epApiVersion: ${{ matrix.epVersion }} 75 ORG_GRADLE_PROJECT_VERSION_NAME: '0.0.0.1-LOCAL' 76 ORG_GRADLE_PROJECT_RELEASE_SIGNING_ENABLED: 'false' 77 uses: gradle/gradle-build-action@v2 78 with: 79 arguments: publishToMavenLocal 80 if: matrix.java == '11' 81 - name: Check that Git tree is clean after build and test 82 run: ./.buildscript/check_git_clean.sh 83 publish_snapshot: 84 name: 'Publish snapshot' 85 needs: [build] 86 if: github.event_name == 'push' && github.repository == 'uber/NullAway' && github.ref == 'refs/heads/master' 87 runs-on: ubuntu-latest 88 steps: 89 - name: 'Check out repository' 90 uses: actions/checkout@v3 91 - name: 'Set up JDK 11' 92 uses: actions/setup-java@v3 93 with: 94 java-version: | 95 21 96 11 97 distribution: 'temurin' 98 - name: 'Publish' 99 uses: gradle/gradle-build-action@v2 100 env: 101 ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_NEXUS_USERNAME }} 102 ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} 103 with: 104 arguments: clean publish --no-daemon --no-parallel 105