name: Tests on: push: pull_request: jobs: build: runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 - name: Set up JDK 11 uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: 11 - name: Cache dependencies uses: actions/cache@v4 with: path: | ivyCache lib key: ivy-${{ hashFiles('**/ivy.xml') }} restore-keys: | ivy- - name: Build with Ant run: ant -noinput dist - uses: actions/upload-artifact@v4 with: name: lombok.jar path: dist/lombok.jar test-javac: runs-on: ubuntu-24.04 needs: build env: EA_JDK: 25 strategy: matrix: jdk: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25] goal: [javacCurrent] include: - jdk: 11 goal: javac6 - jdk: 11 goal: javac8 fail-fast: false steps: - name: Checkout uses: actions/checkout@v4 - name: Set up JDK ${{ matrix.jdk }} if: ${{ matrix.jdk < env.EA_JDK }} uses: actions/setup-java@v4 with: java-version: ${{ matrix.jdk }} distribution: 'zulu' - name: Set up JDK ${{ matrix.jdk }} Early Access release if: ${{ matrix.jdk >= env.EA_JDK }} uses: oracle-actions/setup-java@v1 with: website: jdk.java.net release: ${{ matrix.jdk }} version: latest - name: Cache dependencies uses: actions/cache@v4 with: path: | ivyCache lib key: ivy-${{ hashFiles('**/ivy.xml') }} restore-keys: | ivy- - name: Run tests run: ant -noinput test.${{ matrix.goal }} test-eclipse: runs-on: ubuntu-24.04 needs: build strategy: matrix: version: - eclipse-oxygen - eclipse-202006 - eclipse-202006-jdk8 - eclipse-202403 - eclipse-202503 - eclipse-I-build - eclipse-oxygen-full - eclipse-202403-full - eclipse-202503-full - eclipse-I-build-full - ecj11 - ecj14 - ecj16 - ecj19 fail-fast: false steps: - name: Checkout uses: actions/checkout@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: 21 distribution: 'zulu' - name: Cache dependencies uses: actions/cache@v4 with: path: | ivyCache lib key: ivy-${{ hashFiles('**/ivy.xml') }} restore-keys: | ivy- - name: Cache base testenv if: ${{ !endsWith(matrix.version, 'full') }} uses: actions/cache@v4 with: path: | testenv key: base-testenv-${{ hashFiles('**/setup.ant.xml') }} - name: Cache full testenv if: ${{ endsWith(matrix.version, 'full') }} uses: actions/cache@v4 with: path: | testenv key: ${{ matrix.version }}-testenv-${{ hashFiles('**/setup.ant.xml') }} - name: Build with Ant run: xvfb-run ant -noinput dist test.${{ matrix.version }} docker-integration-test: runs-on: ubuntu-24.04 needs: build strategy: matrix: jdk: [8, 11, 17, 21, 25] tool: - {name: "maven", cmd: "mvn compile"} - {name: "gradle", cmd: "gradle assemble", buildArgs: {"25": "--build-arg gradle=9.1.0"}} - {name: "ant", cmd: "ant dist"} - {name: "bazel", cmd: "bazel build //:ProjectRunner"} fail-fast: false env: IMAGE_NAME: lombok-${{ matrix.tool.name }}-jdk${{ matrix.jdk }} steps: - name: Checkout uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: name: lombok.jar - name: Build container working-directory: ./docker run: docker build --build-arg jdk=${{ matrix.jdk }} ${{ matrix.tool.buildArgs[matrix.jdk] }} -t $IMAGE_NAME -f ${{ matrix.tool.name }}/Dockerfile . - name: Compile in container run: docker run --entrypoint="" -v $(pwd)/lombok.jar:/workspace/lombok.jar $IMAGE_NAME /bin/bash -c "cd classpath; ${{ matrix.tool.cmd }}" manual-tests: runs-on: ubuntu-24.04 needs: build strategy: matrix: jdk: [8, 11, 17, 21, 25] dir: [compileTests] fail-fast: false steps: - name: Checkout uses: actions/checkout@v4 - name: Set up JDK ${{ matrix.jdk }} uses: actions/setup-java@v4 with: java-version: ${{ matrix.jdk }} distribution: 'zulu' - uses: actions/download-artifact@v4 with: name: lombok.jar path: dist - name: Run tests working-directory: ./test/manual/${{ matrix.dir }}/ run: ./runTests.sh