Skip to content

Commit 5d92d75

Browse files
author
Daniel Meier
committed
Test Publishing of JVM Images
1 parent 45c23e9 commit 5d92d75

File tree

4 files changed

+55
-21
lines changed

4 files changed

+55
-21
lines changed

.github/workflows/check.yml

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,16 @@ jobs:
1515
runs-on: ubuntu-latest
1616
steps:
1717
- name: Checkout
18-
uses: actions/checkout@v3
18+
uses: actions/checkout@v4
1919

2020
- name: Set up JDK
21-
uses: actions/setup-java@v3
21+
uses: actions/setup-java@v4
2222
with:
2323
distribution: 'temurin'
2424
java-version: '21'
2525

2626
- name: Setup Gradle
27-
uses: gradle/gradle-build-action@v2
27+
uses: gradle/actions/setup-gradle@v3
2828

2929
- name: Run Gradle 'build' Task
3030
run: ./gradlew build
31-
32-
#- name: Copy OpenAPI Specification
33-
# run: ./gradlew copyOpenApiSpec
34-
35-
#- name: Build Svelte App
36-
# uses: docker/build-push-action@v4
37-
#with:
38-
#context: web

.github/workflows/publish.yml

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,39 @@
1-
name: Publish Docker image
1+
name: Publish Artifacts
22

33
on:
44
release:
55
types: [ released, prereleased ]
66

77
jobs:
8-
push_to_registry:
9-
name: Push Docker images to Docker Hub
8+
publish_artifacts:
9+
name: Publish Artifacts
1010
runs-on: ubuntu-latest
1111
steps:
1212
- name: Check out
13-
uses: actions/checkout@v3
13+
uses: actions/checkout@v4
1414

1515
- name: Set up JDK
16-
uses: actions/setup-java@v3
16+
uses: actions/setup-java@v4
1717
with:
1818
distribution: 'temurin'
1919
java-version: '21'
2020

2121
- name: Setup Gradle
22-
uses: gradle/gradle-build-action@v2
22+
uses: gradle/actions/setup-gradle@v3
2323

2424
- name: Log in to Docker Hub
2525
uses: docker/login-action@v3
2626
with:
2727
username: ${{ secrets.DOCKER_USERNAME }}
2828
password: ${{ secrets.DOCKER_PASSWORD }}
2929

30-
- name: Build and Push Backend Image
31-
run: ./gradlew build -Dquarkus.native.compression.level=9 -Dquarkus.container-image.push=true
30+
- name: Build and Push Native Image
31+
env:
32+
QUARKUS_CONTAINER_IMAGE_BUILD: true
33+
QUARKUS_CONTAINER_IMAGE_PUSH: true
34+
QUARKUS_PACKAGE_TYPE: native
35+
QUARKUS_NATIVE_COMPRESSION_LEVEL: 9
36+
run: ./gradlew build
3237

3338
- name: Copy Linux Binary to Temporary Folder
3439
run: cp app/build/tsa-*-runner $RUNNER_TEMP/tsa-linux-amd64
@@ -43,6 +48,15 @@ jobs:
4348
asset_name: tsa-linux-amd64
4449
asset_content_type: application/octet-stream
4550

51+
- name: Build and Push JVM Images
52+
env:
53+
QUARKUS_CONTAINER_IMAGE_BUILD: true
54+
QUARKUS_CONTAINER_IMAGE_PUSH: true
55+
QUARKUS_PACKAGE_TYPE: jar
56+
QUARKUS_DOCKER_BUILDX_PLATFORM: linux/amd64,linux/arm64
57+
QUARKUS_CONTAINER_IMAGE_TAG: $
58+
run: ./gradlew clean assemble -PimageTagSuffix=jvm
59+
4660
- name: Update Docker Hub description
4761
if: ${{ github.event.action == 'released' }}
4862
uses: peter-evans/dockerhub-description@v3

app/build.gradle.kts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,14 @@ spotless {
8484

8585
quarkus {
8686
set("native.container-build", "true")
87-
set("container-image.build", "true")
8887
set("container-image.group", "dnl50")
8988
set("container-image.name", "tsa-server")
90-
set("package.type", "native")
89+
set("container-image.tag", objects.property<String>().value(provider {
90+
if (project.hasProperty("imageTagSuffix")) {
91+
"${project.version}-${project.property("imageTagSuffix")}"
92+
} else {
93+
project.version.toString()
94+
}
95+
}))
9196
finalName.set("tsa-${project.version}")
9297
}

app/src/main/docker/Dockerfile.jvm

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Based on Quarkus' Dockerfile.jvm template for Gradle
2+
FROM registry.access.redhat.com/ubi8/openjdk-21-runtime:1.19
3+
4+
ENV LANGUAGE='en_US:en'
5+
6+
# We make four distinct layers so if there are application changes the library layers can be re-used
7+
COPY --chown=185 build/quarkus-app/lib/ /deployments/lib/
8+
COPY --chown=185 build/quarkus-app/*.jar /deployments/
9+
COPY --chown=185 build/quarkus-app/app/ /deployments/app/
10+
COPY --chown=185 build/quarkus-app/quarkus/ /deployments/quarkus/
11+
12+
USER root
13+
RUN mkdir -p /work/data \
14+
&& chown -R 185:root /work
15+
16+
EXPOSE 8080
17+
USER 185
18+
ENV JAVA_OPTS_APPEND="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
19+
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
20+
21+
VOLUME ["/work/data"]
22+
23+
ENTRYPOINT [ "/opt/jboss/container/java/run/run-java.sh" ]

0 commit comments

Comments
 (0)