name: Build and verify
on:
  pull_request:
  push:
    branches: [ master ]
permissions:
  contents: read
jobs:
  build:
    strategy:
      matrix:
        os: [ ubuntu-22.04 ]
        jdk: [ 17.0.13, 21.0.5, 23.0.1 ]
        distribution: [ temurin ]
        experimental: [ false ]
        include:
          - os: macos-14
            jdk: 17.0.13
            distribution: temurin
            experimental: false
          - os: windows-2022
            jdk: 17.0.13
            distribution: temurin
            experimental: false
    runs-on: ${{ matrix.os }}
    continue-on-error: ${{ matrix.experimental }}
    steps:
      - name: Install Harden-Runner
        uses: step-security/harden-runner@f086349bfa2bd1361f7909c78558e816508cdc10 # v2.8.0
        with:
          disable-sudo: true
          egress-policy: block
          allowed-endpoints: >
            api.adoptium.net:443
            github.com:443
            jitpack.io:443
            objects.githubusercontent.com:443
            repo.maven.apache.org:443
      # We run the build twice for each supported JDK: once against the
      # original Error Prone release, using only Error Prone checks available
      # on Maven Central, and once against the Picnic Error Prone fork,
      # additionally enabling all checks defined in this project and any Error
      # Prone checks available only from other artifact repositories.
      - name: Check out code and set up JDK and Maven
        uses: s4u/setup-maven-action@489441643219d2b93ee2a127b2402eb640a1b947 # v1.13.0
        with:
          java-version: ${{ matrix.jdk }}
          java-distribution: ${{ matrix.distribution }}
          maven-version: 3.9.9
      - name: Display build environment details
        run: mvn --version
      - name: Build project against vanilla Error Prone, compile Javadoc
        run: mvn -T1C install javadoc:jar
      - name: Build project with self-check against Error Prone fork
        run: mvn -T1C clean verify -Perror-prone-fork -Pnon-maven-central -Pself-check -s settings.xml
      - name: Remove installed project artifacts
        run: mvn build-helper:remove-project-artifact

# XXX: Enable Codecov once we "go public".
