diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml index 8549bfe7..9df1c32e 100644 --- a/.github/workflows/build-images.yml +++ b/.github/workflows/build-images.yml @@ -1,4 +1,4 @@ -name: Continuous Integration Build +name: Build on: pull_request: @@ -7,37 +7,54 @@ on: push: paths-ignore: - '.build/**' + deployment: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: jobs: build-images: - name: Build images + name: Build and Push images runs-on: ubuntu-latest strategy: fail-fast: false matrix: - ubi: - - "default" - - "9.1" include: - - name: "base images" - modules: "quarkus-distroless-base-image,quarkus-micro-base-image" - args: "" - - name: "s2i images" - modules: "quarkus-binary-s2i,quarkus-native-s2i" - args: "" - - name: "mandrel builder images" - modules: "quarkus-mandrel-builder-image" - args: "" - - name: "mandrel builder images 21 and 22.0" - modules: "quarkus-mandrel-builder-image" - args: "-Polder-mandrel" - - name: "graalvm ce builder images" - modules: "quarkus-graalvm-builder-image" - args: "" - - name: "graalvm ce builder images 21 and 22.0" - modules: "quarkus-graalvm-builder-image" - args: "-Polder-graalvm" + # Distroless image + - modules: quarkus-distroless-base-image + + # Default UBI base image + - modules: quarkus-micro-base-image + ubi: default + - modules: quarkus-binary-s2i,quarkus-native-s2i + ubi: default + - modules: quarkus-mandrel-builder-image + ubi: default + - modules: quarkus-mandrel-builder-image + args: -Polder-mandrel + ubi: default + - modules: quarkus-graalvm-builder-image + ubi: default + - modules: quarkus-graalvm-builder-image + args: -Polder-graalvm + ubi: default + + # UBI 9 base image + - modules: quarkus-micro-base-image + ubi: "9.1" + - modules: quarkus-binary-s2i,quarkus-native-s2i + ubi: "9.1" + - modules: quarkus-mandrel-builder-image + ubi: "9.1" + - modules: quarkus-mandrel-builder-image + args: -Polder-mandrel + ubi: "9.1" + - modules: quarkus-graalvm-builder-image + ubi: "9.1" + - modules: quarkus-graalvm-builder-image + args: -Polder-graalvm + ubi: "9.1" steps: - id: prepare @@ -50,12 +67,26 @@ jobs: df -h # Set up UBI params - if [ "${{ matrix.ubi }}" != "default" ]; then + if [ -n "${{ matrix.ubi }}" ] && [ "${{ matrix.ubi }}" != "default" ]; then IFS='.' read -r ubi_major ubi_minor <<< "${{ matrix.ubi }}" echo "ubi-args=-Dubi.tag=ubi${ubi_major} -Dubi.rel.major=${ubi_major} -Dubi.rel.minor=${ubi_minor}" >> "$GITHUB_OUTPUT" else echo "ubi-args=" >> "$GITHUB_OUTPUT" fi + + # Should publish images? + publish_types=(deployment schedule workflow_dispatch) + inarray=$(echo ${publish_types[@]} | grep -o "${{ github.event_name }}" | wc -w) + if (( inarray )) || \ + [ "${{ github.event_name }}" == "push" ] && \ + [ "${{ github.repository }}" == 'quarkusio/quarkus-images' ] && \ + [ "${{ github.ref }}" == 'main' ]; then + echo "publish=true" >> "$GITHUB_OUTPUT" + echo 'publish-args=-Ppush' >> "$GITHUB_OUTPUT + else + echo "publish=false" >> "$GITHUB_OUTPUT" + echo 'publish-args=' >> "$GITHUB_OUTPUT + fi - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: @@ -75,6 +106,15 @@ jobs: echo "Status: ${{ steps.buildx.outputs.status }}" echo "Flags: ${{ steps.buildx.outputs.flags }}" echo "Platforms: ${{ steps.buildx.outputs.platforms }}" + + - name: Login to GitHub Container Registry + if: ${{ steps.prepare.outputs.publish == 'true' }} + uses: docker/login-action@v2 + with: + registry: quay.io + username: ${{ secrets.QUAY_USER }} + password: ${{ secrets.QUAY_TOKEN }} + - name: Build ${{ matrix.name }} on ${{ matrix.ubi }} run: mvn install @@ -83,6 +123,7 @@ jobs: -DskipTests ${{ matrix.args }} ${{ steps.prepare.outputs.ubi-args }} + ${{ steps.prepare.outputs.publish-args }} - name: Print ${{ matrix.name}} if: always() run: docker images \ No newline at end of file diff --git a/.github/workflows/push-images.yml b/.github/workflows/push-images.yml deleted file mode 100644 index 0472b85d..00000000 --- a/.github/workflows/push-images.yml +++ /dev/null @@ -1,93 +0,0 @@ -name: Push Images to Quay -on: - deployment: - schedule: - - cron: '0 0 * * 0' - workflow_dispatch: - -jobs: - - build-images: - name: Build and Push images - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - ubi: - - "ubi8" - - "ubi9" - include: - - name: "base images" - modules: "quarkus-distroless-base-image,quarkus-micro-base-image" - args: "" - - name: "s2i images" - modules: "quarkus-binary-s2i,quarkus-native-s2i" - args: "" - - name: "mandrel builder images" - modules: "quarkus-mandrel-builder-image" - args: "" - - name: "mandrel builder images 21 and 22.0" - modules: "quarkus-mandrel-builder-image" - args: "-Polder-mandrel" - - name: "graalvm ce builder images" - modules: "quarkus-graalvm-builder-image" - args: "" - - name: "graalvm ce builder images 21 and 22.0" - modules: "quarkus-graalvm-builder-image" - args: "-Polder-graalvm" - steps: - - id: prepare - run: | - # Re-claim some disk space - sudo swapoff -a - sudo rm -f /swapfile - sudo apt-get clean - docker image ls -aq | xargs -r docker rmi - df -h - - # Set up UBI params - if [ "${{ matrix.ubi }}" != "default" ]; then - IFS='.' read -r ubi_major ubi_minor <<< "${{ matrix.ubi }}" - echo "ubi-args=-Dubi.tag=ubi${ubi_major} -Dubi.rel.major=${ubi_major} -Dubi.rel.minor=${ubi_minor}" >> "$GITHUB_OUTPUT" - else - echo "ubi-args=" >> "$GITHUB_OUTPUT" - fi - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: '17' - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v2 - with: - install: true - - name: Inspect builder - run: | - echo "Name: ${{ steps.buildx.outputs.name }}" - echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}" - echo "Status: ${{ steps.buildx.outputs.status }}" - echo "Flags: ${{ steps.buildx.outputs.flags }}" - echo "Platforms: ${{ steps.buildx.outputs.platforms }}" - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: quay.io - username: ${{ secrets.QUAY_USER }} - password: ${{ secrets.QUAY_TOKEN }} - - name: Build images on ${{ matrix.ubi }} - run: - mvn install - --projects ${{ matrix.modules }} - --also-make - -DskipTests - -Ppush - ${{ matrix.args }} - ${{ steps.prepare.outputs.ubi-args }} - - name: Print ${{ matrix.name}} - if: always() - run: | - df -h - docker images \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3e2184e8..9afaffdd 100644 --- a/pom.xml +++ b/pom.xml @@ -33,15 +33,15 @@ 17 17 - - ubi - ${ubi.rel.major}.${ubi.rel.minor} - 8 7 + + ubi + ${ubi.rel.major}.${ubi.rel.minor} + registry.access.redhat.com/ubi${ubi.rel.major}/ubi-minimal:${ubi.release} registry.access.redhat.com/ubi${ubi.rel.major}-micro:${ubi.release}