mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-16 02:38:44 +00:00
add docker-25 workflows and docker support to main branch
This commit is contained in:
@@ -6,7 +6,7 @@ on:
|
||||
workflow_run:
|
||||
workflows: [release]
|
||||
types: [completed]
|
||||
branches: [main, docker-24]
|
||||
branches: [main, docker-24, docker-25]
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
release:
|
||||
@@ -72,12 +72,12 @@ jobs:
|
||||
uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0
|
||||
with:
|
||||
build-args: RELEASE=${{ env.RELEASE }}
|
||||
tags: ghcr.io/${{steps.ghcr.outputs.PACKAGE}}:${{ env.RELEASE }}${{ env.BRANCH == 'main' && github.event.inputs.release == '' && format(',ghcr.io/{0}:latest', steps.ghcr.outputs.PACKAGE) || env.BRANCH == 'docker-17' && github.event.inputs.release == '' && format(',ghcr.io/{0}:latest-17', steps.ghcr.outputs.PACKAGE) || env.BRANCH == 'docker-21' && github.event.inputs.release == '' && format(',ghcr.io/{0}:latest-21', steps.ghcr.outputs.PACKAGE) || env.BRANCH == 'docker-24' && github.event.inputs.release == '' && format(',ghcr.io/{0}:latest-24', steps.ghcr.outputs.PACKAGE) || '' }}
|
||||
tags: ghcr.io/${{steps.ghcr.outputs.PACKAGE}}:${{ env.RELEASE }}${{ env.BRANCH == 'main' && github.event.inputs.release == '' && format(',ghcr.io/{0}:latest', steps.ghcr.outputs.PACKAGE) || env.BRANCH == 'docker-17' && github.event.inputs.release == '' && format(',ghcr.io/{0}:latest-17', steps.ghcr.outputs.PACKAGE) || env.BRANCH == 'docker-21' && github.event.inputs.release == '' && format(',ghcr.io/{0}:latest-21', steps.ghcr.outputs.PACKAGE) || env.BRANCH == 'docker-24' && github.event.inputs.release == '' && format(',ghcr.io/{0}:latest-24', steps.ghcr.outputs.PACKAGE) || env.BRANCH == 'docker-25' && github.event.inputs.release == '' && format(',ghcr.io/{0}:latest-25', steps.ghcr.outputs.PACKAGE) || '' }}
|
||||
annotations: |
|
||||
maintainer=axel.uhl@sap.com
|
||||
index:org.opencontainers.image.title=Sailing Analytics
|
||||
index:org.opencontainers.image.description=The Sailing Analytics Web Application
|
||||
file: ${{ env.BRANCH == 'docker-17' && 'docker/Dockerfile_sapsailing_on_sapmachine17' || env.BRANCH == 'docker-21' && 'docker/Dockerfile_sapsailing_on_sapmachine21' || env.BRANCH == 'docker-24' && 'docker/Dockerfile_sapsailing_on_sapmachine24' || 'docker/Dockerfile' }}
|
||||
file: ${{ env.BRANCH == 'docker-17' && 'docker/Dockerfile_sapsailing_on_sapmachine17' || env.BRANCH == 'docker-21' && 'docker/Dockerfile_sapsailing_on_sapmachine21' || env.BRANCH == 'docker-24' && 'docker/Dockerfile_sapsailing_on_sapmachine24' || env.BRANCH == 'docker-25' && 'docker/Dockerfile_sapsailing_on_sapmachine25' || 'docker/Dockerfile' }}
|
||||
context: docker/
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
name: Merge main branch into docker-25 after successful build
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: [release]
|
||||
types: [completed]
|
||||
branches: [main]
|
||||
workflow_dispatch: {}
|
||||
jobs:
|
||||
merge-main-into-docker-25:
|
||||
permissions:
|
||||
contents: write
|
||||
if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: docker-25
|
||||
fetch-depth: 0 # fetch the whole thing to make sure the histories merge
|
||||
- name: Merge main into docker-25
|
||||
uses: devmasx/merge-branch@854d3ac71ed1e9deb668e0074781b81fdd6e771f # v1.4.0
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.REPO_TOKEN_FOR_MERGE_AND_PUSH }}
|
||||
with:
|
||||
type: now
|
||||
from_branch: main
|
||||
target_branch: docker-25
|
||||
message: Auto-merging main into docker-25 after successful release build
|
||||
github_token: ${{ secrets.REPO_TOKEN_FOR_MERGE_AND_PUSH }}
|
||||
@@ -78,12 +78,12 @@ jobs:
|
||||
distribution: 'temurin' # See 'Supported distributions' for available options
|
||||
java-version: '8'
|
||||
mvn-toolchain-id: 'JavaSE-1.8'
|
||||
- name: Install JDK 17
|
||||
- name: Install JDK 25
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'temurin' # See 'Supported distributions' for available options
|
||||
java-version: '17'
|
||||
mvn-toolchain-id: 'JavaSE-17'
|
||||
java-version: '25'
|
||||
mvn-toolchain-id: 'JavaSE-25'
|
||||
- name: Setup Android SDK
|
||||
uses: android-actions/setup-android@9fc6c4e9069bf8d3d10b2204b1fb8f6ef7065407 # v3.2.2
|
||||
with:
|
||||
@@ -131,7 +131,7 @@ jobs:
|
||||
reporter: java-junit
|
||||
fail-on-error: true
|
||||
- name: Build Release
|
||||
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || startsWith(github.ref, 'refs/heads/releases/') }}
|
||||
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || github.ref == 'refs/heads/docker-25' || startsWith(github.ref, 'refs/heads/releases/') }}
|
||||
shell: bash
|
||||
run: |
|
||||
./configuration/buildAndUpdateProduct.sh -u -L ${{ github.event.inputs.skip_tests == 'true' && '-n untested' || '' }} release
|
||||
@@ -148,14 +148,14 @@ jobs:
|
||||
retention-days: 90
|
||||
- name: Upload distribution artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || startsWith(github.ref, 'refs/heads/releases/') }}
|
||||
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || github.ref == 'refs/heads/docker-25' || startsWith(github.ref, 'refs/heads/releases/') }}
|
||||
with:
|
||||
name: ${{ env.SIMPLE_VERSION_INFO }}
|
||||
path: dist/**/*
|
||||
retention-days: 90
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || startsWith(github.ref, 'refs/heads/releases/') }}
|
||||
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || github.ref == 'refs/heads/docker-25' || startsWith(github.ref, 'refs/heads/releases/') }}
|
||||
uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2.2.1
|
||||
with:
|
||||
tag_name: ${{ env.SIMPLE_VERSION_INFO }}
|
||||
@@ -164,7 +164,7 @@ jobs:
|
||||
prerelease: false
|
||||
- name: Upload Release Asset tar.gz
|
||||
id: upload-release-asset-tar-gz
|
||||
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || startsWith(github.ref, 'refs/heads/releases/') }}
|
||||
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || github.ref == 'refs/heads/docker-25' || startsWith(github.ref, 'refs/heads/releases/') }}
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -175,7 +175,7 @@ jobs:
|
||||
asset_content_type: application/x-tar
|
||||
- name: Upload Release Asset release_notes.txt
|
||||
id: upload-release-asset-release-notes-txt
|
||||
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || startsWith(github.ref, 'refs/heads/releases/') }}
|
||||
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || github.ref == 'refs/heads/docker-25' || startsWith(github.ref, 'refs/heads/releases/') }}
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
FROM sapmachine:25.0.1
|
||||
# This Dockerfile assumes that the release to use is provided as
|
||||
# ${RELEASE}.tar.gz in the current Docker workspace. Use, e.g.,
|
||||
# the configuration/github-download-release-assets.sh script to
|
||||
# obtain the tar.gz file for a specific or the latest "main" release.
|
||||
ARG RELEASE
|
||||
LABEL maintainer=axel.uhl@sap.com
|
||||
LABEL org.opencontainers.image.description="Sailing Analytics with Java 25"
|
||||
# Download and extract the release
|
||||
WORKDIR /home/sailing/servers/server
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y wget apt-utils vim telnet dnsutils net-tools jq
|
||||
COPY vimrc /root/.vimrc
|
||||
RUN wget -O /tmp/rds.pem https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem \
|
||||
&& ${JAVA_HOME}/bin/keytool -importcert -alias AWSRDS -file /tmp/rds.pem -keystore ${JAVA_HOME}/lib/security/cacerts -noprompt -storepass changeit \
|
||||
&& rm /tmp/rds.pem
|
||||
COPY ${RELEASE}.tar.gz /tmp
|
||||
RUN tar xzvpf /tmp/${RELEASE}.tar.gz \
|
||||
&& rm /tmp/${RELEASE}.tar.gz
|
||||
COPY env.sh .
|
||||
RUN cat env-default-rules.sh >>env.sh
|
||||
COPY start .
|
||||
COPY JavaSE-11.profile .
|
||||
EXPOSE 8888 14888 8000 7091 6666
|
||||
CMD [ "/home/sailing/servers/server/start", "docker" ]
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
FROM sapmachine:25.0.1
|
||||
LABEL maintainer=axel.uhl@sap.com
|
||||
# Download and extract the release
|
||||
WORKDIR /home/sailing
|
||||
RUN chmod 777 /home/sailing; mkdir logs; mkdir dump
|
||||
RUN apt-get -y update; apt-get -y upgrade; apt-get -y install apt-utils wget curl
|
||||
RUN curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add -
|
||||
RUN echo "deb [arch=amd64,arm64] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" >/etc/apt/sources.list.d/mongodb-org-4.4.list
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y vim mongodb-org-shell
|
||||
COPY vimrc /root/.vimrc
|
||||
RUN wget -O /tmp/rds.pem https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem \
|
||||
&& ${JAVA_HOME}/bin/keytool -importcert -alias AWSRDS -file /tmp/rds.pem -keystore ${JAVA_HOME}/lib/security/cacerts -noprompt -storepass changeit \
|
||||
&& rm /tmp/rds.pem
|
||||
RUN wget -O /home/sailing/WindEstimationModelsTraining.jar https://static.sapsailing.com/WindEstimationModelsTraining.jar
|
||||
CMD exec java "${MEMORY}" -Dmongo.uri="${MONGODB_URI}" -XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump/ -Xlog:gc*=info,gc+region*=info,gc+ergo*=info,gc+humongous*=info,gc+liveness=trace:file=logs/gc.log:time,level,tags:filecount=10,filesize=100000000 -jar WindEstimationModelsTraining.jar "${BEARER_TOKEN}" ${TRAINING_DATA_PERCENT}
|
||||
@@ -0,0 +1,19 @@
|
||||
version: "3.10"
|
||||
services:
|
||||
sailing-analytics:
|
||||
image: "ghcr.io/sap/sailing-analytics:latest-25"
|
||||
ports:
|
||||
- "8888:8888"
|
||||
- "6666:6666"
|
||||
- "14888:14888"
|
||||
environment:
|
||||
MONGODB_URI: mongodb://mongo/test
|
||||
SERVER_NAME: test
|
||||
REPLICATION_HOST: rabbitmq
|
||||
REPLICATION_CHANNEL: test
|
||||
REPLICATION_PORT: 5672
|
||||
mongo:
|
||||
image: "mongo:7"
|
||||
rabbitmq:
|
||||
image: "rabbitmq:3.13"
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
release_prefix=$1
|
||||
GITROOT="`dirname $0`/.."
|
||||
DOCKERDIR="${GITROOT}/docker"
|
||||
DOCKERFILE="$DOCKERDIR/Dockerfile"
|
||||
if [ "${release_prefix}" = "" ]; then
|
||||
SET_LATEST=1
|
||||
release_prefix="docker-25-"
|
||||
fi
|
||||
pushd "${DOCKERDIR}"
|
||||
RELEASE_TAR_GZ_FILENAME=$( ${GITROOT}/configuration/github-download-release-assets.sh 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 "${release_prefix}" )
|
||||
if [ "${RELEASE_TAR_GZ_FILENAME}" = "" ]; then
|
||||
echo "No release with prefix ${release_prefix} found" >&2
|
||||
else
|
||||
release=$( echo ${RELEASE_TAR_GZ_FILENAME} | sed -e 's/\.tar\.gz//' )
|
||||
echo Release is ${release}
|
||||
echo "Copying files from GITROOT $GITROOT into Docker workspace"
|
||||
cp "$GITROOT/java/target/env.sh" "$DOCKERDIR"
|
||||
cp "$GITROOT/java/target/start" "$DOCKERDIR"
|
||||
cp "$GITROOT/java/target/configuration/JavaSE-11.profile" "$DOCKERDIR"
|
||||
cd "$DOCKERDIR"
|
||||
docker build --build-arg RELEASE=${release} -t ghcr.io/sap/sailing-analytics:${release} -f Dockerfile_sapsailing_on_sapmachine25 .
|
||||
echo "Cleaning up..."
|
||||
rm start env.sh JavaSE-11.profile ${RELEASE_TAR_GZ_FILENAME} release-notes.txt
|
||||
docker push ghcr.io/sap/sailing-analytics:${release}
|
||||
if [ "$SET_LATEST" = "1" ]; then
|
||||
docker tag ghcr.io/sap/sailing-analytics:${release} ghcr.io/sap/sailing-analytics:latest-25
|
||||
docker push ghcr.io/sap/sailing-analytics:latest-25
|
||||
fi
|
||||
fi
|
||||
popd
|
||||
Reference in New Issue
Block a user