diff --git a/.github/workflows/infer.yml b/.github/workflows/infer.yml index a07c6f458083..b3c3f9251afa 100644 --- a/.github/workflows/infer.yml +++ b/.github/workflows/infer.yml @@ -1,9 +1,8 @@ ---- name: Infer 'on': workflow_dispatch: - push: + push: branches: - master pull_request: @@ -25,7 +24,7 @@ jobs: with: ocaml-compiler: 5 - - name: Get current year/weak + - name: Get current year/week run: echo "year_week=$(date +'%Y_%U')" >> $GITHUB_ENV - name: Cache infer build @@ -56,5 +55,55 @@ jobs: - name: Run infer run: | mvn clean - infer --fail-on-issue --print-logs --no-progress-bar -- mvn test -... + infer --fail-on-issue --print-logs --no-progress-bar -- mvn test + + pr_infer: + runs-on: ubuntu-latest + if: github.event_name == 'pull_request' + needs: run_infer # This ensures the 'run_infer' job completes before 'pr_infer' starts + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: 'temurin' + + - name: Set up OCaml + uses: ocaml/setup-ocaml@v3 + with: + ocaml-compiler: 5 + + - name: Get current year/week + run: echo "year_week=$(date +'%Y_%U')" >> $GITHUB_ENV + + - name: Cache infer build + id: cache-infer + uses: actions/cache@v4 + with: + path: infer + key: ${{ runner.os }}-infer-${{ env.year_week }} + + - name: Build infer + if: steps.cache-infer.outputs.cache-hit != 'true' + run: | + cd .. + git clone https://github.com/facebook/infer.git + cd infer + ./build-infer.sh java + cp -r infer ../Java + + - name: Add infer to PATH + run: | + echo "infer/bin" >> $GITHUB_PATH + + - name: Display infer version + run: | + which infer + infer --version + + - name: Run infer + run: | + mvn clean + infer --fail-on-issue --print-logs --no-progress-bar -- mvn test