Skip to content

Commit 27b2a01

Browse files
moritzschmitz-ovivarturner3
andauthoredFeb 5, 2024
Add docker build for java-spiffe-helper container (#187)
* Add docker build for java-spiffe-helper container Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Adopt JDK has been deprecated in favor of temurin Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Push image after build Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Remove build on pull request and fix image tag Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Set user non-root, add separate stage for gradle dependencies and version to gradle properties Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Fix entrypoint Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Add example config and default container command Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Revert changes to gradle workflow and rename container build workflow Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Pin gradle builder image version Co-authored-by: Ryan Turner <rturner3@users.noreply.github.com> Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Add buildx action Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Use github variable in image tag Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Add Qemu Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Login before push Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Adopt JDK has been deprecated in favor of temurin Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Remove build on pull request and fix image tag Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Revert changes to gradle workflow and rename container build workflow Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Use new properties example file Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Minor improvements according to PR comments Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> --------- Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> Co-authored-by: Ryan Turner <rturner3@users.noreply.github.com>
1 parent 666766a commit 27b2a01

File tree

7 files changed

+163
-2
lines changed

7 files changed

+163
-2
lines changed
 

‎.dockerignore

+110
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
### Java template
2+
# Compiled class file
3+
*.class
4+
5+
# Log file
6+
*.log
7+
8+
# BlueJ files
9+
*.ctxt
10+
11+
# Mobile Tools for Java (J2ME)
12+
.mtj.tmp/
13+
14+
# Package Files #
15+
*.jar
16+
*.war
17+
*.nar
18+
*.ear
19+
*.zip
20+
*.tar.gz
21+
*.rar
22+
23+
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
24+
hs_err_pid*
25+
replay_pid*
26+
27+
### JetBrains template
28+
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
29+
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
30+
31+
# User-specific stuff
32+
.idea/**/workspace.xml
33+
.idea/**/tasks.xml
34+
.idea/**/usage.statistics.xml
35+
.idea/**/dictionaries
36+
.idea/**/shelf
37+
38+
# AWS User-specific
39+
.idea/**/aws.xml
40+
41+
# Generated files
42+
.idea/**/contentModel.xml
43+
44+
# Sensitive or high-churn files
45+
.idea/**/dataSources/
46+
.idea/**/dataSources.ids
47+
.idea/**/dataSources.local.xml
48+
.idea/**/sqlDataSources.xml
49+
.idea/**/dynamic.xml
50+
.idea/**/uiDesigner.xml
51+
.idea/**/dbnavigator.xml
52+
53+
# Gradle
54+
.idea/**/gradle.xml
55+
.idea/**/libraries
56+
57+
# Gradle and Maven with auto-import
58+
# When using Gradle or Maven with auto-import, you should exclude module files,
59+
# since they will be recreated, and may cause churn. Uncomment if using
60+
# auto-import.
61+
# .idea/artifacts
62+
# .idea/compiler.xml
63+
# .idea/jarRepositories.xml
64+
# .idea/modules.xml
65+
# .idea/*.iml
66+
# .idea/modules
67+
# *.iml
68+
# *.ipr
69+
70+
# CMake
71+
cmake-build-*/
72+
73+
# Mongo Explorer plugin
74+
.idea/**/mongoSettings.xml
75+
76+
# File-based project format
77+
*.iws
78+
79+
# IntelliJ
80+
out/
81+
82+
# mpeltonen/sbt-idea plugin
83+
.idea_modules/
84+
85+
# JIRA plugin
86+
atlassian-ide-plugin.xml
87+
88+
# Cursive Clojure plugin
89+
.idea/replstate.xml
90+
91+
# SonarLint plugin
92+
.idea/sonarlint/
93+
94+
# Crashlytics plugin (for Android Studio and IntelliJ)
95+
com_crashlytics_export_strings.xml
96+
crashlytics.properties
97+
crashlytics-build.properties
98+
fabric.properties
99+
100+
# Editor-based Rest Client
101+
.idea/httpRequests
102+
103+
# Android studio 3.1+ serialized cache file
104+
.idea/caches/build_file_checksums.ser
105+
106+
# GitHub
107+
.github
108+
109+
# Git
110+
.git

‎.github/workflows/docker.yml

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: container build
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v[0-9]+.[0-9]+.[0-9]+'
7+
8+
jobs:
9+
publish:
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: read
13+
packages: write
14+
env:
15+
REGISTRY: ghcr.io
16+
steps:
17+
- uses: actions/checkout@v4
18+
- uses: docker/login-action@v3
19+
with:
20+
registry: ${{ env.REGISTRY }}
21+
username: ${{ github.actor }}
22+
password: ${{ secrets.GITHUB_TOKEN }}
23+
- uses: docker/setup-qemu-action@v3
24+
- uses: docker/setup-buildx-action@v3
25+
- run: echo "DOCKER_TAG=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV
26+
- name: Publish java-spiffe-helper
27+
uses: docker/build-push-action@v5
28+
with:
29+
context: .
30+
platforms: linux/amd64,linux/arm64
31+
push: true
32+
tags: ${{ env.REGISTRY }}/${{ github.repository }}-helper:${{ env.DOCKER_TAG }}
33+
cache-from: type=gha
34+
cache-to: type=gha,mode=max

‎Dockerfile

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
FROM gradle:8.5.0-jdk17 AS builder
2+
COPY --chown=gradle:gradle . /builder
3+
WORKDIR /builder
4+
RUN gradle dependencies
5+
RUN gradle java-spiffe-helper:assemble -ParchiveClassifier=docker -Pversion=docker
6+
7+
FROM eclipse-temurin:17-jre AS runner
8+
COPY --chown=nobody:nobody \
9+
conf/java-spiffe-helper.properties /app/java-spiffe-helper.properties
10+
COPY --from=builder \
11+
--chown=nobody:nobody \
12+
/builder/java-spiffe-helper/build/libs/java-spiffe-helper-docker-docker.jar /app/java-spiffe-helper.jar
13+
USER nobody
14+
ENTRYPOINT ["java", "-jar", "/app/java-spiffe-helper.jar"]
15+
CMD ["--config", "/app/java-spiffe-helper.properties"]

‎build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ allprojects {
1212

1313
subprojects {
1414
group = 'io.spiffe'
15-
version = '0.8.4'
15+
version = project.version
1616

1717
ext {
1818
grpcVersion = '1.61.1'

‎gradle.properties

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
version=0.8.4

‎java-spiffe-helper/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ assemble.dependsOn shadowJar
1010

1111
shadowJar {
1212
mergeServiceFiles()
13-
archiveClassifier = osdetector.classifier
13+
archiveClassifier = project.hasProperty('archiveClassifier') && project.archiveClassifier != "" ? project.archiveClassifier : osdetector.classifier
1414
manifest {
1515
attributes 'Main-Class': 'io.spiffe.helper.cli.Runner'
1616
}

‎java-spiffe-helper/gradle.properties

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
archiveClassifier=

0 commit comments

Comments
 (0)
Please sign in to comment.