Skip to content

Commit 97b980b

Browse files
committed
Merge branch 'main' into management-console
2 parents 5079a00 + 39da2f3 commit 97b980b

3,776 files changed

Lines changed: 153235 additions & 375903 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
name: File Issues on bugzilla.sapsailing.com
3+
about: Please report bugs and issues on https://bugzilla.sapsailing.com instead
4+
title: 'Do not report issues here. Please to go https://bugzilla.sapsailing.com'
5+
labels: ''
6+
assignees: ''
7+
8+
---
9+
10+
Dear user, as mentioned in our [README](https://github.com/SAP/sailing-analytics?tab=readme-ov-file#contributing) we have our issue tracker at [https://bugzilla.sapsailing.com](bugzilla.sapsailing.com). Please register there and file bugs, issues, or feature/enhancement requests there. Thank you.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Issue Addressed by this PR
2+
[Bug XXXX](https://bugzilla.sapsailing.com/bugzilla/show_bug.cgi?id=XXXX)
3+
4+
## Description
5+
6+
_FILL IN DETAILS HERE_
7+
8+
## Checklist for Pull Requests
9+
10+
- [ ] Supplied as many details as possible on this change
11+
- [ ] Included the link to the associated Bugzilla issue in the Issue section above
12+
- [ ] New code has been formatted using the [code formatter](https://github.com/SAP/sailing-analytics/blob/main/java/CodeFormatter.xml)
13+
- [ ] The code has **unit tests** where applicable and is easily unit-testable
14+
- [ ] This branch is appropriately named for the associated issue, usually `bugXXXX`

.github/workflows/create-docker-image.yml

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
name: Create Docker Image
2+
permissions:
3+
contents: read
4+
packages: write
25
on:
36
workflow_run:
47
workflows: [release]
58
types: [completed]
6-
branches: [main, docker-17]
9+
branches: [main, docker-24, docker-25]
710
workflow_dispatch:
811
inputs:
912
release:
@@ -14,16 +17,28 @@ jobs:
1417
if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
1518
runs-on: ubuntu-latest
1619
steps:
20+
- name: Convert repo name to lowercase GHCR package
21+
id: ghcr
22+
env:
23+
GITHUB_REPOSITORY: ${{ github.repository }}
24+
run: |
25+
# $GITHUB_REPOSITORY is in format owner/repo
26+
OWNER=${GITHUB_REPOSITORY%%/*} # extract owner
27+
REPO=${GITHUB_REPOSITORY##*/} # extract repo
28+
OWNER_LOWER=$(echo "$OWNER" | tr '[:upper:]' '[:lower:]') # lowercase owner
29+
REPO_LOWER=$(echo "$REPO" | tr '[:upper:]' '[:lower:]') # lowercase repo
30+
PACKAGE="$OWNER_LOWER/$REPO_LOWER"
31+
echo "PACKAGE=${PACKAGE}" >> $GITHUB_OUTPUT
1732
- name: Checkout
1833
uses: actions/checkout@v4
1934
with:
2035
ref: ${{ github.event_name == 'workflow_dispatch' && github.workflow_dispatch.ref || github.event.workflow_run.head_branch }}
2136
- name: Set up QEMU
22-
uses: docker/setup-qemu-action@v3
37+
uses: docker/setup-qemu-action@53851d14592bedcffcf25ea515637cff71ef929a
2338
- name: Set up Docker Buildx
24-
uses: docker/setup-buildx-action@v3
39+
uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0
2540
- name: Login to ghcr.io to upload sailing-analytics image
26-
uses: docker/login-action@v3
41+
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
2742
with:
2843
registry: ghcr.io
2944
username: ${{ github.actor }}
@@ -47,22 +62,22 @@ jobs:
4762
- name: Download release
4863
shell: bash
4964
run: |
50-
RELEASE_TAR_GZ_FILENAME=$( configuration/github-download-release-assets.sh ${{ secrets.GITHUB_TOKEN }} ${{ env.RELEASE_PREFIX }} )
65+
RELEASE_TAR_GZ_FILENAME=$( configuration/github-download-release-assets.sh ${{ secrets.GITHUB_TOKEN }} ${{ env.RELEASE_PREFIX }} ${{ github.repository }} )
5166
RELEASE=$( echo ${RELEASE_TAR_GZ_FILENAME} | sed -e 's/\.tar\.gz$//' )
5267
if [ -n ${RELEASE_TAR_GZ_FILENAME} ]; then
5368
mv ${RELEASE_TAR_GZ_FILENAME} docker/
5469
fi
5570
echo "RELEASE=${RELEASE}" >>${GITHUB_ENV}
5671
- name: Build & push Docker image
57-
uses: docker/build-push-action@v5
72+
uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0
5873
with:
5974
build-args: RELEASE=${{ env.RELEASE }}
60-
tags: ghcr.io/sap/sailing-analytics:${{ env.RELEASE }}${{ env.BRANCH == 'main' && github.event.inputs.release == '' && ',ghcr.io/sap/sailing-analytics:latest' || env.BRANCH == 'docker-17' && github.event.inputs.release == '' && ',ghcr.io/sap/sailing-analytics:latest-17' || '' }}
75+
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) || '' }}
6176
annotations: |
6277
maintainer=axel.uhl@sap.com
6378
index:org.opencontainers.image.title=Sailing Analytics
6479
index:org.opencontainers.image.description=The Sailing Analytics Web Application
65-
file: ${{ env.BRANCH == 'docker-17' && 'docker/Dockerfile_sapsailing_on_sapmachine17' || 'docker/Dockerfile' }}
80+
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' }}
6681
context: docker/
6782
platforms: linux/amd64,linux/arm64
6883
push: true

.github/workflows/merge-main-into-docker-17.yml

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Merge main branch into docker-25 after successful build
2+
on:
3+
workflow_run:
4+
workflows: [release]
5+
types: [completed]
6+
branches: [main]
7+
workflow_dispatch: {}
8+
jobs:
9+
merge-main-into-docker-25:
10+
permissions:
11+
contents: write
12+
if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Checkout
16+
uses: actions/checkout@v4
17+
with:
18+
ref: docker-25
19+
fetch-depth: 0 # fetch the whole thing to make sure the histories merge
20+
token: ${{ secrets.REPO_TOKEN_FOR_MERGE_AND_PUSH }}
21+
- name: Determine merge commit
22+
id: merge-source
23+
run: |
24+
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
25+
echo "sha=$(git rev-parse origin/main)" >> "$GITHUB_OUTPUT"
26+
echo "label=main (latest)" >> "$GITHUB_OUTPUT"
27+
else
28+
echo "sha=${{ github.event.workflow_run.head_sha }}" >> "$GITHUB_OUTPUT"
29+
echo "label=main (${{ github.event.workflow_run.head_sha }})" >> "$GITHUB_OUTPUT"
30+
fi
31+
- name: Merge main into docker-25
32+
run: |
33+
git config user.name "github-actions[bot]"
34+
git config user.email "github-actions[bot]@users.noreply.github.com"
35+
echo "Merging ${{ steps.merge-source.outputs.sha }} into docker-25..."
36+
git merge ${{ steps.merge-source.outputs.sha }} \
37+
-m "Auto-merging ${{ steps.merge-source.outputs.label }} into docker-25 after successful release build"
38+
git push origin docker-25

.github/workflows/merge-sapsailing-com-main.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ on:
99
workflow_dispatch: {}
1010
jobs:
1111
merge-master-from-sapsailing-com:
12+
permissions:
13+
contents: write
1214
runs-on: ubuntu-latest
1315
steps:
1416
- name: Checkout
@@ -27,7 +29,7 @@ jobs:
2729
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git fetch sapsailing main:sapsailing_main
2830
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git push -f origin sapsailing_main:sapsailing_main
2931
- name: Merge sapsailing/main into main
30-
uses: devmasx/merge-branch@master
32+
uses: devmasx/merge-branch@854d3ac71ed1e9deb668e0074781b81fdd6e771f # v1.4.0
3133
env:
3234
GH_TOKEN: ${{ secrets.REPO_TOKEN_FOR_MERGE_AND_PUSH }}
3335
with:

.github/workflows/release.yml

Lines changed: 83 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ on:
55
- 'wiki/**'
66
- '.github/workflows/*'
77
- '**/*.md'
8+
- 'README.md'
9+
- 'docs/**'
810
workflow_dispatch:
911
inputs:
1012
skip_tests:
@@ -13,24 +15,60 @@ on:
1315
local_target_platform:
1416
description: Build with a local target platform (set to "true" to use local target platform)
1517
default: 'false'
18+
runner_cpus:
19+
description: Empty means ubuntu-latest, usually 4 CPUs with little disk/memory, but if you have runners named ubuntu-latest-Xcpu, it can be 4, 8, 16, and 64 as well, using, e.g., ubuntu-latest-16cpu; default is ubuntu-latest
20+
default: ''
21+
firefox_version:
22+
description: Version to use for Selenium tests; default is 137.0, but could, e.g., be "141.0" or "latest"
23+
default: '140.0'
1624

1725
jobs:
1826
build:
19-
runs-on: ubuntu-latest-64cpu
20-
#runs-on: ubuntu-latest-4cpu
27+
permissions:
28+
contents: write
29+
checks: write
30+
actions: read
31+
runs-on: ${{ github.event.inputs.runner_cpus != '' && format('ubuntu-latest-{0}cpu', github.event.inputs.runner_cpus) || 'ubuntu-latest' }}
2132
steps:
33+
- name: Free Disk Space (Ubuntu)
34+
uses: jlumbroso/free-disk-space@v1.3.1
35+
with:
36+
# this might remove tools that are actually needed,
37+
# if set to "true" but frees about 6 GB
38+
tool-cache: false
39+
# all of these default to true, but feel free to set to
40+
# "false" if necessary for your workflow
41+
android: false
42+
dotnet: true
43+
haskell: true
44+
large-packages: true
45+
docker-images: false
46+
swap-storage: true
2247
- name: Allocate swap space
2348
shell: bash
2449
run: |
25-
sudo dd if=/dev/zero of=/mnt/large-swapfile bs=1G count=10
50+
sudo dd if=/dev/zero of=/mnt/large-swapfile bs=1G count=30
2651
sudo chmod 600 /mnt/large-swapfile
2752
sudo mkswap /mnt/large-swapfile
2853
sudo chown root:root /mnt/large-swapfile
2954
sudo swapon /mnt/large-swapfile
55+
- name: Create TMP space under /mnt/tmp
56+
shell: bash
57+
run: |
58+
sudo mkdir /mnt/tmp
59+
sudo chmod 777 /mnt/tmp
3060
- name: Collect Workflow Telemetry
31-
uses: catchpoint/workflow-telemetry-action@v2
61+
uses: catchpoint/workflow-telemetry-action@94c3c3d9567a0205de6da68a76c428ce4e769af1 # v2.0.0
3262
with:
3363
comment_on_pr: false
64+
- name: Setup firefox
65+
id: setup-firefox
66+
uses: browser-actions/setup-firefox@5914774dda97099441f02628f8d46411fcfbd208 # v1.7.0
67+
with:
68+
firefox-version: ${{ github.event.inputs.firefox_version == '' && '140.0' || github.event.inputs.firefox_version }}
69+
- run: |
70+
echo Installed firefox versions: ${{ steps.setup-firefox.outputs.firefox-version }}
71+
${{ steps.setup-firefox.outputs.firefox-path }} --version
3472
- name: Check out the repository to the runner
3573
uses: actions/checkout@v4
3674
with:
@@ -41,26 +79,49 @@ jobs:
4179
distribution: 'temurin' # See 'Supported distributions' for available options
4280
java-version: '8'
4381
mvn-toolchain-id: 'JavaSE-1.8'
82+
- name: Install JDK 17
83+
uses: actions/setup-java@v4
84+
with:
85+
distribution: 'temurin' # See 'Supported distributions' for available options
86+
java-version: '17'
87+
mvn-toolchain-id: 'JavaSE-17'
88+
- name: Install JDK 25
89+
uses: actions/setup-java@v4
90+
with:
91+
distribution: 'temurin' # See 'Supported distributions' for available options
92+
java-version: '25'
93+
mvn-toolchain-id: 'JavaSE-25'
4494
- name: Setup Android SDK
45-
uses: android-actions/setup-android@v3
95+
uses: android-actions/setup-android@9fc6c4e9069bf8d3d10b2204b1fb8f6ef7065407 # v3.2.2
4696
with:
4797
log-accepted-android-sdk-licenses: 'false'
4898
cmdline-tools-version: 9123335 # This corresponds to human-friendly version number 8.0
4999
- name: Start MongoDB
50-
uses: supercharge/mongodb-github-action@1.11.0
100+
uses: supercharge/mongodb-github-action@315db7fe45ac2880b7758f1933e6e5d59afd5e94 #v1.12.1
51101
with:
52102
mongodb-version: 7.0
53103
- name: Start RabbitMQ
54-
uses: namoshek/rabbitmq-github-action@v1
104+
uses: Namoshek/rabbitmq-github-action@80a182e44c7f60bc3417a8689d6a24fe9d08b27b #v1.2.0
55105
with:
56106
version: '3.8.9'
57107
ports: '5672:5672'
58108
- shell: bash
59109
env: # Or as an environment variable
60-
APP_PARAMETERS: "-Daws.region=eu-west-1 -Dgoogle.maps.authenticationparams=${{ secrets.GOOGLE_MAPS_AUTHENTICATIONPARAMS }} -Daws.s3.test.s3AccessId=${{ secrets.AWS_S3_TEST_S3ACCESSID }} -Daws.s3.test.s3AccessKey=${{ secrets.AWS_S3_TEST_S3ACCESSKEY }}"
110+
TMP: /mnt/tmp
111+
AWS_S3_TEST_S3ACCESSID: ${{ secrets.AWS_S3_TEST_S3ACCESSID }}
112+
AWS_S3_TEST_S3ACCESSKEY: ${{ secrets.AWS_S3_TEST_S3ACCESSKEY }}
113+
GEONAMES_ORG_USERNAMES: ${{ secrets.GEONAMES_ORG_USERNAMES }}
114+
GOOGLE_MAPS_AUTHENTICATION_PARAMS: ${{ secrets.GOOGLE_MAPS_AUTHENTICATION_PARAMS }}
115+
POLAR_DATA_BASE_URL: ${{ secrets.POLAR_DATA_BASE_URL }}
116+
POLAR_DATA_BEARER_TOKEN: ${{ secrets.POLAR_DATA_BEARER_TOKEN }}
117+
APP_PARAMETERS: "-Daws.region=eu-west-1"
61118
JAVA8_HOME: ${{env.JAVA_HOME_8_X64}}
119+
JAVA17_HOME: ${{env.JAVA_HOME_17_X64}}
62120
run: |
63-
./configuration/buildAndUpdateProduct.sh -x 60 ${{ github.event.inputs.skip_tests == 'true' && '-t' || '' }} ${{ github.event.inputs.local_target_platform == 'true' && '-v' || '' }} build 2>&1
121+
./configuration/buildAndUpdateProduct.sh -x ${{ github.event.inputs.runner_cpus == '' && '4' || github.event.inputs.runner_cpus }} ${{ github.event.inputs.skip_tests == 'true' && '-t' || '' }} ${{ github.event.inputs.local_target_platform == 'true' && '-v' || '' }} build 2>&1
122+
- name: show disk stats
123+
if: always()
124+
run: df -h
64125
- name: Upload build log
65126
uses: actions/upload-artifact@v4
66127
if: always()
@@ -69,7 +130,7 @@ jobs:
69130
path: build.log
70131
retention-days: 90
71132
- name: Collect Test Reports
72-
uses: dorny/test-reporter@v1
133+
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5 # v1.9.1
73134
if: always()
74135
with:
75136
name: Maven Tests
@@ -80,7 +141,7 @@ jobs:
80141
reporter: java-junit
81142
fail-on-error: true
82143
- name: Build Release
83-
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-17' || startsWith(github.ref, 'refs/heads/releases/') }}
144+
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || github.ref == 'refs/heads/docker-25' || startsWith(github.ref, 'refs/heads/releases/') }}
84145
shell: bash
85146
run: |
86147
./configuration/buildAndUpdateProduct.sh -u -L ${{ github.event.inputs.skip_tests == 'true' && '-n untested' || '' }} release
@@ -97,23 +158,24 @@ jobs:
97158
retention-days: 90
98159
- name: Upload distribution artifact
99160
uses: actions/upload-artifact@v4
100-
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-17' || startsWith(github.ref, 'refs/heads/releases/') }}
161+
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || github.ref == 'refs/heads/docker-25' || startsWith(github.ref, 'refs/heads/releases/') }}
101162
with:
102163
name: ${{ env.SIMPLE_VERSION_INFO }}
103164
path: dist/**/*
104165
retention-days: 90
105166
- name: Create Release
106167
id: create_release
107-
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-17' || startsWith(github.ref, 'refs/heads/releases/') }}
108-
uses: softprops/action-gh-release@v2
168+
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || github.ref == 'refs/heads/docker-25' || startsWith(github.ref, 'refs/heads/releases/') }}
169+
uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2.2.1
109170
with:
110171
tag_name: ${{ env.SIMPLE_VERSION_INFO }}
172+
target_commitish: ${{ github.ref_name }}
111173
name: ${{ env.SIMPLE_VERSION_INFO }}
112174
draft: false
113175
prerelease: false
114176
- name: Upload Release Asset tar.gz
115177
id: upload-release-asset-tar-gz
116-
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-17' || startsWith(github.ref, 'refs/heads/releases/') }}
178+
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || github.ref == 'refs/heads/docker-25' || startsWith(github.ref, 'refs/heads/releases/') }}
117179
uses: actions/upload-release-asset@v1
118180
env:
119181
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -124,7 +186,7 @@ jobs:
124186
asset_content_type: application/x-tar
125187
- name: Upload Release Asset release_notes.txt
126188
id: upload-release-asset-release-notes-txt
127-
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-17' || startsWith(github.ref, 'refs/heads/releases/') }}
189+
if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docker-24' || github.ref == 'refs/heads/docker-25' || startsWith(github.ref, 'refs/heads/releases/') }}
128190
uses: actions/upload-release-asset@v1
129191
env:
130192
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -134,7 +196,11 @@ jobs:
134196
asset_name: release-notes.txt
135197
asset_content_type: text/plain
136198
- name: Trigger Hudson job
137-
if: always()
199+
env:
200+
HUDSON_JOB_USERNAME: ${{ secrets.HUDSON_JOB_USERNAME }}
201+
HUDSON_JOB_PASSWORD: ${{ secrets.HUDSON_JOB_PASSWORD }}
202+
HUDSON_JOB_TOKEN: ${{ secrets.HUDSON_JOB_TOKEN }}
203+
if: ${{ always() && env.HUDSON_JOB_USERNAME != '' && env.HUDSON_JOB_PASSWORD != '' && env.HUDSON_JOB_TOKEN != '' }}
138204
shell: bash
139205
run: |
140206
if [ "${{ github.ref }}" = "refs/heads/main" ]; then

.github/workflows/reuse-tool-license-updates.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ on:
44

55
jobs:
66
create_metadata_proposal:
7+
permissions:
8+
contents: write
79
runs-on: ubuntu-latest
810
name: "Metadata Creation Tool"
911
steps:
10-
- uses: SAP/metadata-creation-tool-for-reuse@main
12+
- uses: SAP/metadata-creation-tool-for-reuse@881317602f9e4df00d1c7073bf6f15cbade835c4 # main at 2025-01-29
1113
with:
1214
repository_url: "${{ github.server_url }}/${{ github.repository }}"
1315
access_token: "${{ secrets.REUSE_ACCESS_TOKEN }}"

0 commit comments

Comments
 (0)