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: macos-latest 17 java: 8 18 epVersion: 2.4.0 19 - os: macos-latest 20 java: 11 21 epVersion: 2.4.0 22 - os: ubuntu-latest 23 java: 8 24 epVersion: 2.4.0 25 - os: ubuntu-latest 26 java: 8 27 epVersion: 2.10.0 28 - os: ubuntu-latest 29 java: 11 30 epVersion: 2.4.0 31 - os: windows-latest 32 java: 8 33 epVersion: 2.4.0 34 - os: ubuntu-latest 35 java: 17 36 epVersion: 2.10.0 37 fail-fast: false 38 runs-on: ${{ matrix.os }} 39 steps: 40 - name: Check out NullAway sources 41 uses: actions/checkout@v2 42 - name: 'Set up JDK ${{ matrix.java }}' 43 uses: actions/setup-java@v2 44 with: 45 java-version: ${{ matrix.java }} 46 distribution: 'temurin' 47 - name: Build and test using Gradle, Java 8, and Error Prone ${{ matrix.epVersion }} 48 env: 49 ORG_GRADLE_PROJECT_epApiVersion: ${{ matrix.epVersion }} 50 uses: eskatos/gradle-command-action@v1 51 with: 52 arguments: verGJF build 53 if: matrix.java == '8' 54 - name: Build and test using Gradle and Java 11 55 uses: eskatos/gradle-command-action@v1 56 with: 57 arguments: build -x :sample-app:build 58 if: matrix.java == '11' 59 - name: Build and test using Gradle and Java 17 60 uses: eskatos/gradle-command-action@v1 61 with: 62 arguments: build -x :sample-app:build -x :jar-infer:jar-infer-lib:build -x :jar-infer:nullaway-integration-test:build -x :jar-infer:test-java-lib-jarinfer:build 63 if: matrix.java == '17' 64 - name: Report jacoco coverage 65 uses: eskatos/gradle-command-action@v1 66 env: 67 COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} 68 with: 69 arguments: coveralls 70 continue-on-error: true 71 if: runner.os == 'Linux' && matrix.java == '11' && matrix.epVersion == '2.4.0' && github.repository == 'uber/NullAway' 72 - name: Check that Git tree is clean after build and test 73 run: ./.buildscript/check_git_clean.sh 74 publish_snapshot: 75 name: 'Publish snapshot' 76 needs: [build] 77 if: github.event_name == 'push' && github.repository == 'uber/NullAway' && github.ref == 'refs/heads/master' 78 runs-on: ubuntu-latest 79 steps: 80 - name: 'Check out repository' 81 uses: actions/checkout@v2 82 - name: Cache Gradle caches 83 uses: actions/cache@v1 84 with: 85 path: ~/.gradle/caches 86 key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle') }} 87 restore-keys: ${{ runner.os }}-gradle-caches- 88 - name: Cache Gradle wrapper 89 uses: actions/cache@v1 90 with: 91 path: ~/.gradle/wrapper 92 key: ${{ runner.os }}-gradlew-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} 93 restore-keys: ${{ runner.os }}-gradlew-wrapper- 94 - name: 'Set up JDK 8' 95 uses: actions/setup-java@v1 96 with: 97 java-version: 8 98 - name: 'Publish' 99 env: 100 ORG_GRADLE_PROJECT_mavenCentralRepositoryUsername: ${{ secrets.SONATYPE_NEXUS_USERNAME }} 101 ORG_GRADLE_PROJECT_mavenCentralRepositoryPassword: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} 102 run: ./gradlew clean publish --no-daemon --no-parallel 103