diff --git a/build.gradle.kts b/build.gradle.kts index 02f871c..86de04c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -49,20 +49,25 @@ tasks.withType().configureEach { options.release.set(25) } -val dockerLibsDir = layout.buildDirectory.dir("docker/libs") +val libsDir = layout.buildDirectory.dir("libs") -tasks.register("prepareDockerLibs") { +tasks.register("prepareLibs") { group = "distribution" - description = "Copies all runtime dependencies (transitive) to build/docker/libs" + description = "Copies runtime deps to build/libs without deleting the app jar" - // Hvis du også vil bygge dit eget jar samtidig, så lad den stå – ellers kan du fjerne den. - dependsOn(tasks.named("jar")) + val jarTask = tasks.named("jar") + dependsOn(jarTask) - into(dockerLibsDir) + into(libsDir) // Kun deps (transitivt) from(configurations.runtimeClasspath) + // Bevar jar-filen som jar-tasken allerede har lagt i build/libs + preserve { + include(jarTask.get().archiveFileName.get()) + } + duplicatesStrategy = DuplicatesStrategy.EXCLUDE } diff --git a/build.sh b/build.sh index 8f2d22f..cf91cfe 100755 --- a/build.sh +++ b/build.sh @@ -13,13 +13,14 @@ export VERSION_LONG=${VERSION}_${GITHASH} # Build this artifact echo "Building 'NenjimHub v${VERSION_LONG}'..." -./gradlew -Pversion=$VERSION jar prepareDockerLibs +./gradlew -Pversion=$VERSION jar prepareLibs + # Prepare container dependencies -mkdir -p build/docker/conf +mkdir -p build/docker/{conf,libs} cd build/docker -cp ../../src/main/docker/start.sh start.sh -cp ../libs/hubd-impl-ref-*.jar libs -cp ../../conf/* conf +cp ../../src/main/docker/run.sh run.sh +cp ../libs/*.jar libs/ +cp ../../conf/* conf/ sed -e "s|_VERSION_|${VERSION}|g" \ -e "s|_JREVERSION_|${JREVERSION}|g" \ ../../src/main/docker/Dockerfile_template > Dockerfile diff --git a/libs b/libs new file mode 120000 index 0000000..6516765 --- /dev/null +++ b/libs @@ -0,0 +1 @@ +build/libs \ No newline at end of file diff --git a/publishCICD.sh b/publishCICD.sh deleted file mode 100755 index b7d08ac..0000000 --- a/publishCICD.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -export VERSION=$(git describe --tags --exact-match 2>/dev/null \ - || git symbolic-ref --short -q HEAD \ - || git rev-parse --short HEAD) - -echo "Publishing artifact ($VERSION)..." -./gradlew -Pversion=$VERSION publish - -echo "Publishing docker container ($VERSION)..." -./build/docker/publish.sh diff --git a/publishCICD.sh b/publishCICD.sh new file mode 120000 index 0000000..7269b3b --- /dev/null +++ b/publishCICD.sh @@ -0,0 +1 @@ +publish.sh \ No newline at end of file diff --git a/run.sh b/run.sh index 2120374..1c2de87 100755 --- a/run.sh +++ b/run.sh @@ -1,6 +1,17 @@ #!/usr/bin/env bash set -euo pipefail -./gradlew run \ - -Dlog4j.configurationFile="$PWD/config/log4j2.xml" \ - --args="foo bar baz" +shopt -s nullglob + +jars=(libs/*.jar) +if (( ${#jars[@]} == 0 )); then + echo "ERROR: No JARs found in libs/" >&2 + exit 1 +fi + +CLASSPATH=$(IFS=:; echo "${jars[*]}") + +exec java \ + -Dlog4j.configurationFile=conf/log4j2.xml \ + -cp "$CLASSPATH" \ + com.r35157.nenjim.hubd.impl.ref.Main diff --git a/src/main/docker/Dockerfile_template b/src/main/docker/Dockerfile_template index 57afb5d..4a2301a 100644 --- a/src/main/docker/Dockerfile_template +++ b/src/main/docker/Dockerfile_template @@ -13,7 +13,7 @@ WORKDIR nenjimhub RUN mkdir libs # These dirs are expected to be overshadowed by host mounts -RUN mkdir conf logs +RUN mkdir conf logs && chown user:user logs # Set timezone ENV TZ=Europe/Copenhagen @@ -29,14 +29,14 @@ RUN apt-get autoremove -y \ && rm -rf /var/lib/apt/lists/* # Install application and configuration (Do this as late as possible to be able to reuse layers between builds) -COPY start.sh . +COPY run.sh . COPY conf/* conf/ COPY libs/*.jar libs/ -RUN chmod 755 ./start.sh \ +RUN chmod 755 ./run.sh \ && chmod -R a+rX /usr/local/software/nenjimhub-_VERSION_ USER user:user -CMD ["./start.sh"] +CMD ["./run.sh"] diff --git a/src/main/docker/start.sh b/src/main/docker/run.sh similarity index 100% rename from src/main/docker/start.sh rename to src/main/docker/run.sh