Skip to content

Commit

Permalink
Use podman instead of docker for building and pushing images on main
Browse files Browse the repository at this point in the history
  • Loading branch information
edeandrea committed Oct 16, 2024
1 parent aa44e20 commit 202f033
Showing 1 changed file with 27 additions and 74 deletions.
101 changes: 27 additions & 74 deletions .github/workflows/build-push-container-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ jobs:
- check-commit-count
- calculate-modules
if: (needs.check-commit-count.outputs.has_commits == 'true') && (needs.calculate-modules.outputs.projects_matrix != '[]') && (github.repository == 'quarkusio/quarkus-super-heroes') && (contains(fromJSON('["workflow_dispatch", "schedule"]'), github.event_name) || ((github.event_name == 'worflow_run') && ((github.event.workflow_run.event == 'push') || (github.event.workflow_run.event == 'workflow_dispatch') && (github.event.workflow_run.conclusion == 'success') && (github.event.workflow_run.head_branch == 'main'))))
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
strategy:
matrix:
java:
Expand Down Expand Up @@ -149,40 +149,33 @@ jobs:
working-directory: .github/workflows/scripts
run: echo "CONTAINER_TAG=$(./compute-container-tag.sh "" ${{ matrix.java }} ${{ env.LATEST_IMAGE_TAG }} ${{ needs.check-commit-count.outputs.branch }} "${{ matrix.project.openai-type }}")" >> $GITHUB_ENV

- name: Set up QEMU
if: matrix.arch == 'arm64'
uses: docker/setup-qemu-action@v3
with:
platforms: ${{ matrix.arch }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
install: true

- name: Build JVM image (${{ matrix.project.name }}-java${{ matrix.java }}-${{ matrix.arch }}-${{ matrix.project.openai-type }})
working-directory: ${{ matrix.project.name }}
run: |
./mvnw -B quarkus:remove-extension -Dextension="quarkus-container-image-docker" &&
./mvnw -B quarkus:add-extension -Dextension="quarkus-container-image-podman" &&
./mvnw -B clean package -DskipTests \
-Dmaven.compiler.release=${{ matrix.java }} \
-Dquarkus.http.host=0.0.0.0 \
-Dquarkus.container-image.builder=podman \
-Dquarkus.container-image.build=true \
-Dquarkus.container-image.push=false \
-Dquarkus.container-image.tag=${{ env.CONTAINER_TAG }}-${{ matrix.arch }} \
-Dquarkus.docker.dockerfile-jvm-path=src/main/docker/${{ env.JVM_DOCKERFILE }} \
-Dquarkus.docker.buildx.platform=linux/${{ matrix.arch }}
-Dquarkus.podman.dockerfile-jvm-path=src/main/docker/${{ env.JVM_DOCKERFILE }} \
-Dquarkus.podman.platform=linux/${{ matrix.arch }}
- name: Save JVM Image (${{ matrix.project.name }}-java${{ matrix.java }}-${{ matrix.arch }}-${{ matrix.project.openai-type }})
uses: ishworkh/[email protected]
with:
image: "${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}-${{ matrix.arch }}"
container_engine: podman

build-native-images:
needs:
- check-commit-count
- calculate-modules
if: (needs.check-commit-count.outputs.has_commits == 'true') && (needs.calculate-modules.outputs.projects_matrix != '[]') && (github.repository == 'quarkusio/quarkus-super-heroes') && (contains(fromJSON('["workflow_dispatch", "schedule"]'), github.event_name) || ((github.event_name == 'worflow_run') && ((github.event.workflow_run.event == 'push') || (github.event.workflow_run.event == 'workflow_dispatch') && (github.event.workflow_run.conclusion == 'success') && (github.event.workflow_run.head_branch == 'main'))))
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -215,44 +208,37 @@ jobs:
working-directory: .github/workflows/scripts
run: echo "CONTAINER_TAG=$(./compute-container-tag.sh "native-" ${{ matrix.java.jvm }} ${{ env.LATEST_IMAGE_TAG }} ${{ needs.check-commit-count.outputs.branch }} "${{ matrix.project.openai-type }}")" >> $GITHUB_ENV

- name: Set up QEMU
if: matrix.arch == 'arm64'
uses: docker/setup-qemu-action@v3
with:
platforms: ${{ matrix.arch }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
install: true

- name: Build native image (${{ matrix.project.name }}-java${{ matrix.java.jvm }}-${{ matrix.arch }}-${{ matrix.project.openai-type }})
working-directory: ${{ matrix.project.name }}
run: |
./mvnw -B quarkus:remove-extension -Dextension="quarkus-container-image-docker" &&
./mvnw -B quarkus:add-extension -Dextension="quarkus-container-image-podman" &&
./mvnw -B clean package -DskipTests -Pnative \
-Dmaven.compiler.release=${{ matrix.java.jvm }} \
-Dquarkus.http.host=0.0.0.0 \
-Dquarkus.native.container-build=true \
-Dquarkus.native.builder-image=${{ env.MANDREL_IMAGE }}:jdk-${{ matrix.java.mandrel }} \
-Dquarkus.native.container-runtime-options=--platform=linux/${{ matrix.arch }} \
-Dquarkus.container-image.builder=podman \
-Dquarkus.container-image.build=true \
-Dquarkus.container-image.push=false \
-Dquarkus.container-image.tag=${{ env.CONTAINER_TAG }}-${{ matrix.arch }} \
-Dquarkus.docker.buildx.platform=linux/${{ matrix.arch }}
-Dquarkus.podman.platform=linux/${{ matrix.arch }}
- name: Save native Image (${{ matrix.project.name }}-java${{ matrix.java.jvm }}-${{ matrix.arch }}-${{ matrix.project.openai-type }})
uses: ishworkh/[email protected]
with:
image: "${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}-${{ matrix.arch }}"
container_engine: podman

push-app-images:
create-app-multiarch-manifests:
if: (needs.check-commit-count.outputs.has_commits == 'true') && (needs.calculate-modules.outputs.projects_matrix != '[]') && (github.repository == 'quarkusio/quarkus-super-heroes') && (contains(fromJSON('["workflow_dispatch", "schedule"]'), github.event_name) || ((github.event_name == 'worflow_run') && ((github.event.workflow_run.event == 'push') || (github.event.workflow_run.event == 'workflow_dispatch') && (github.event.workflow_run.conclusion == 'success') && (github.event.workflow_run.head_branch == 'main'))))
needs:
- check-commit-count
- calculate-modules
- build-jvm-images
- build-native-images
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
strategy:
matrix:
java:
Expand All @@ -261,10 +247,7 @@ jobs:
- ""
- "native-"
project: ${{ fromJson(needs.calculate-modules.outputs.projects_matrix) }}
arch:
- amd64
- arm64
name: "Push app images (${{ matrix.arch }}-${{ matrix.project.name }}-${{ matrix.kind }}java${{ matrix.java }}-${{ matrix.project.openai-type }})"
name: Create app multiarch manifests (${{ matrix.project.name }}-${{ matrix.kind }}java${{ matrix.java }}-${{ matrix.project.openai-type }})
steps:
- name: Checkout from ${{ needs.check-commit-count.outputs.ref }}
uses: actions/checkout@v4
Expand All @@ -275,47 +258,17 @@ jobs:
working-directory: .github/workflows/scripts
run: echo "CONTAINER_TAG=$(./compute-container-tag.sh "${{ matrix.kind }}" ${{ matrix.java }} ${{ env.LATEST_IMAGE_TAG }} ${{ needs.check-commit-count.outputs.branch }} "${{ matrix.project.openai-type }}")" >> $GITHUB_ENV

- name: Get saved images (${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}-${{ matrix.arch }})
- name: Get saved image (${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}-arm64)
uses: ishworkh/[email protected]
with:
image: "${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}-${{ matrix.arch }}"

- name: Login to quay
uses: docker/login-action@v3
with:
registry: quay.io
username: ${{ secrets.QUAY_REPO_USERNAME }}
password: ${{ secrets.QUAY_REPO_TOKEN }}

- name: Push images
working-directory: ${{ matrix.project.name }}
run: "docker push -a ${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}"
image: "${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}-arm64"
container_engine: podman

create-app-multiarch-manifests:
if: (needs.check-commit-count.outputs.has_commits == 'true') && (needs.calculate-modules.outputs.projects_matrix != '[]') && (github.repository == 'quarkusio/quarkus-super-heroes') && (contains(fromJSON('["workflow_dispatch", "schedule"]'), github.event_name) || ((github.event_name == 'worflow_run') && ((github.event.workflow_run.event == 'push') || (github.event.workflow_run.event == 'workflow_dispatch') && (github.event.workflow_run.conclusion == 'success') && (github.event.workflow_run.head_branch == 'main'))))
needs:
- check-commit-count
- calculate-modules
- push-app-images
runs-on: ubuntu-latest
strategy:
matrix:
java:
- '17'
kind:
- ""
- "native-"
project: ${{ fromJson(needs.calculate-modules.outputs.projects_matrix) }}
name: Create app multiarch manifests (${{ matrix.project.name }}-${{ matrix.kind }}java${{ matrix.java }}-${{ matrix.project.openai-type }})
steps:
- name: Checkout from ${{ needs.check-commit-count.outputs.ref }}
uses: actions/checkout@v4
- name: Get saved image (${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}-amd64)
uses: ishworkh/[email protected]
with:
ref: ${{ needs.check-commit-count.outputs.ref }}

- name: Create CONTAINER_TAG
working-directory: .github/workflows/scripts
run: echo "CONTAINER_TAG=$(./compute-container-tag.sh "${{ matrix.kind }}" ${{ matrix.java }} ${{ env.LATEST_IMAGE_TAG }} ${{ needs.check-commit-count.outputs.branch }} "${{ matrix.project.openai-type }}")" >> $GITHUB_ENV
image: "${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}-amd64"
container_engine: podman

- name: Login to quay
uses: docker/login-action@v3
Expand All @@ -326,10 +279,10 @@ jobs:

- name: Create and push multi-arch manifests
run: |
docker manifest create ${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }} \
-a ${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}-amd64 \
-a ${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}-arm64
docker manifest push ${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}
podman manifest create ${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }} \
${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}-amd64 \
${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}-arm64
podman manifest push --all ${{ env.IMAGE_BASE_NAME }}/${{ matrix.project.name }}:${{ env.CONTAINER_TAG }}
deploy-resources:
if: (needs.check-commit-count.outputs.has_commits == 'true') && (github.repository == 'quarkusio/quarkus-super-heroes') && (contains(fromJSON('["workflow_dispatch", "schedule"]'), github.event_name) || ((github.event_name == 'worflow_run') && ((github.event.workflow_run.event == 'push') || (github.event.workflow_run.event == 'workflow_dispatch') && (github.event.workflow_run.conclusion == 'success') && (github.event.workflow_run.head_branch == 'main'))))
Expand Down

0 comments on commit 202f033

Please sign in to comment.