Skip to content

Commit f8ab61a

Browse files
committed
Merge remote-tracking branch 'upstream/devel' into feature/cursor-indicator-link
2 parents 0d6a4fb + 2164df1 commit f8ab61a

File tree

70 files changed

+1431
-1052
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+1431
-1052
lines changed

.caddy/config-cache/.gitkeep

Whitespace-only changes.

.caddy/data/.gitkeep

Whitespace-only changes.

.caddy/php-socket/.gitkeep

Whitespace-only changes.

.docker-hub/print/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# build stage
2-
FROM node:20.14.0 AS build-stage
2+
FROM node:22.2.0 AS build-stage
33
ARG SENTRY_AUTH_TOKEN
44
ARG SENTRY_ORG
55
ARG SENTRY_PRINT_PROJECT
@@ -22,7 +22,7 @@ COPY print .
2222
RUN npm run build
2323

2424
# production stage
25-
FROM node:20.14.0 AS production-stage
25+
FROM node:22.2.0 AS production-stage
2626
WORKDIR /app
2727

2828
COPY --from=build-stage /app/.output ./.output

.github/workflows/continuous-integration.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ jobs:
6363

6464
- uses: actions/setup-node@v4
6565
with:
66-
node-version: '20.14.0'
66+
node-version: '22.2.0'
6767

6868
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
6969
with:
@@ -92,7 +92,7 @@ jobs:
9292

9393
- uses: actions/setup-node@v4
9494
with:
95-
node-version: '20.14.0'
95+
node-version: '22.2.0'
9696

9797
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
9898
with:
@@ -121,7 +121,7 @@ jobs:
121121

122122
- uses: actions/setup-node@v4
123123
with:
124-
node-version: '20.14.0'
124+
node-version: '22.2.0'
125125

126126
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
127127
with:
@@ -150,7 +150,7 @@ jobs:
150150

151151
- uses: actions/setup-node@v4
152152
with:
153-
node-version: '20.14.0'
153+
node-version: '22.2.0'
154154

155155
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
156156
with:
@@ -253,7 +253,7 @@ jobs:
253253

254254
- uses: actions/setup-node@v4
255255
with:
256-
node-version: '20.14.0'
256+
node-version: '22.2.0'
257257

258258
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
259259
with:
@@ -296,7 +296,7 @@ jobs:
296296

297297
- uses: actions/setup-node@v4
298298
with:
299-
node-version: '20.14.0'
299+
node-version: '22.2.0'
300300

301301
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
302302
with:
@@ -335,7 +335,7 @@ jobs:
335335

336336
- uses: actions/setup-node@v4
337337
with:
338-
node-version: '20.14.0'
338+
node-version: '22.2.0'
339339

340340
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
341341
with:

.github/workflows/reusable-build-and-push.yml

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -58,26 +58,13 @@ jobs:
5858
push: true
5959
file: api/Dockerfile
6060
tags: |
61-
${{ ((inputs.tag != '') && format('{0}/ecamp3-api-php:{1}', vars.DOCKER_HUB_USERNAME, inputs.tag) || '') }}
62-
${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-php:${{ inputs.sha }}
61+
${{ ((inputs.tag != '') && format('{0}/ecamp3-api:{1}', vars.DOCKER_HUB_USERNAME, inputs.tag) || '') }}
62+
${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api:${{ inputs.sha }}
6363
context: './api'
64-
target: api_platform_php
64+
target: frankenphp_prod
6565
cache-from: type=gha,scope=api
6666
cache-to: type=gha,scope=api,mode=max
6767

68-
- name: Build and push caddy docker image
69-
uses: docker/build-push-action@v5
70-
with:
71-
push: true
72-
file: api/Dockerfile
73-
tags: |
74-
${{ ((inputs.tag != '') && format('{0}/ecamp3-api-caddy:{1}', vars.DOCKER_HUB_USERNAME, inputs.tag) || '') }}
75-
${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-caddy:${{ inputs.sha }}
76-
context: './api'
77-
target: api_platform_caddy_prod
78-
cache-from: type=gha,scope=caddy
79-
cache-to: type=gha,scope=caddy,mode=max
80-
8168
- name: Build and push print docker image
8269
uses: docker/build-push-action@v5
8370
with:

.github/workflows/reusable-dev-deployment.yml

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,7 @@ jobs:
8383
--set imageTag=${{ inputs.sha }} \
8484
--set frontend.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-frontend' \
8585
--set print.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-print' \
86-
--set php.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-php' \
87-
--set caddy.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-caddy' \
86+
--set api.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api' \
8887
--set apiCache.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-varnish' \
8988
--set postgresql.dbBackupRestoreImage.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-db-backup-restore' \
9089
--set termsOfServiceLinkTemplate='https://ecamp3.ch/{lang}/tos' \
@@ -112,12 +111,12 @@ jobs:
112111
--set postgresql.restore.s3.accessKeyId='${{ secrets.RESTORE_S3_ACCESS_KEY_ID }}' \
113112
--set postgresql.restore.s3.accessKey='${{ secrets.RESTORE_S3_ACCESS_KEY }}' \
114113
--set postgresql.restore.encryptionKey=${{ secrets.RESTORE_ENCRYPTION_KEY != null && format('''{0}''', secrets.RESTORE_ENCRYPTION_KEY) || null }} \
115-
--set php.dataMigrationsDir='${{ vars.DATA_MIGRATIONS_DIR }}' \
116-
--set php.appSecret='${{ secrets.API_APP_SECRET }}' \
117-
--set php.sentryDsn='${{ secrets.API_SENTRY_DSN }}' \
118-
--set php.jwt.passphrase='${{ secrets.JWT_PASSPHRASE }}' \
119-
--set php.jwt.publicKey='${{ secrets.JWT_PUBLIC_KEY }}' \
120-
--set php.jwt.privateKey='${{ secrets.JWT_PRIVATE_KEY }}' \
114+
--set api.dataMigrationsDir='${{ vars.DATA_MIGRATIONS_DIR }}' \
115+
--set api.appSecret='${{ secrets.API_APP_SECRET }}' \
116+
--set api.sentryDsn='${{ secrets.API_SENTRY_DSN }}' \
117+
--set api.jwt.passphrase='${{ secrets.JWT_PASSPHRASE }}' \
118+
--set api.jwt.publicKey='${{ secrets.JWT_PUBLIC_KEY }}' \
119+
--set api.jwt.privateKey='${{ secrets.JWT_PRIVATE_KEY }}' \
121120
--set frontend.sentryDsn='${{ secrets.FRONTEND_SENTRY_DSN }}' \
122121
--set print.sentryDsn='${{ secrets.PRINT_SENTRY_DSN }}' \
123122
--set print.browserWsEndpoint='${{ secrets.BROWSER_WS_ENDPOINT }}' \

.github/workflows/reusable-e2e-tests-build.yml

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,27 +23,12 @@ jobs:
2323
context: './api'
2424
push: false
2525
load: true
26-
target: api_platform_php_dev
26+
target: frankenphp_dev
2727
builder: ${{ steps.buildx.outputs.name }}
28-
tags: ecamp/ecamp3-dev-api-php
28+
tags: ecamp/ecamp3-dev-api
2929
cache-from: type=gha,scope=api
3030
cache-to: type=gha,scope=api,mode=max
31-
outputs: type=docker,dest=/tmp/ecamp3-dev-api-php.tar
32-
33-
# build caddy (using cache; provide image to docker compose)
34-
- name: Build docker image (Caddy)
35-
uses: docker/build-push-action@v5
36-
with:
37-
file: api/Dockerfile
38-
context: './api'
39-
push: false
40-
load: true
41-
target: api_platform_caddy
42-
builder: ${{ steps.buildx.outputs.name }}
43-
tags: ecamp/ecamp3-dev-api-caddy
44-
cache-from: type=gha,scope=caddy
45-
cache-to: type=gha,scope=caddy,mode=max
46-
outputs: type=docker,dest=/tmp/ecamp3-dev-api-caddy.tar
31+
outputs: type=docker,dest=/tmp/ecamp3-dev-api.tar
4732

4833
- uses: actions/upload-artifact@v4
4934
with:

.github/workflows/reusable-e2e-tests-run.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ jobs:
3838

3939
- name: Load images
4040
run: |
41-
docker load --input /tmp/ecamp3-dev-api-php.tar
42-
docker load --input /tmp/ecamp3-dev-api-caddy.tar
41+
docker load --input /tmp/ecamp3-dev-api.tar
4342
docker image ls -a --digests
4443
4544
- name: Restore cache volumes (npm, composer)
@@ -51,7 +50,7 @@ jobs:
5150
docker-compose-
5251
5352
# start necessary containers
54-
- run: docker compose up -d php caddy frontend pdf print browserless database docker-host http-cache mail
53+
- run: docker compose up -d api frontend pdf print browserless database docker-host http-cache mail
5554

5655
- uses: cypress-io/[email protected]
5756
with:

.github/workflows/reusable-stage-prod-deployment.yml

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ jobs:
4242
--set imageTag=${{ github.sha }} \
4343
--set frontend.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-frontend' \
4444
--set print.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-print' \
45-
--set php.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-php' \
46-
--set caddy.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api-caddy' \
45+
--set api.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api' \
4746
--set apiCache.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-varnish' \
4847
--set postgresql.dbBackupRestoreImage.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-db-backup-restore' \
4948
--set termsOfServiceLinkTemplate='https://ecamp3.ch/{lang}/tos' \
@@ -71,23 +70,23 @@ jobs:
7170
--set postgresql.restore.s3.accessKey='${{ secrets.RESTORE_S3_ACCESS_KEY }}' \
7271
--set postgresql.restore.encryptionKey=${{ secrets.RESTORE_ENCRYPTION_KEY != null && format('''{0}''', secrets.RESTORE_ENCRYPTION_KEY) || null }} \
7372
--set postgresql.restore.inviteSupportAccountToInterestingCamps=${{ vars.RESTORE_INVITE_TO_INTERESTING_CAMPS != null && format('''{0}''', vars.RESTORE_INVITE_TO_INTERESTING_CAMPS) || false }} \
74-
--set php.dataMigrationsDir='${{ vars.DATA_MIGRATIONS_DIR }}' \
75-
--set php.appSecret='${{ secrets.API_APP_SECRET }}' \
76-
--set php.sentryDsn='${{ secrets.API_SENTRY_DSN }}' \
77-
--set php.jwt.passphrase='${{ secrets.JWT_PASSPHRASE }}' \
78-
--set php.jwt.publicKey='${{ secrets.JWT_PUBLIC_KEY }}' \
79-
--set php.jwt.privateKey='${{ secrets.JWT_PRIVATE_KEY }}' \
80-
--set php.oauth.google.clientId='${{ secrets.OAUTH_GOOGLE_CLIENT_ID }}' \
81-
--set php.oauth.google.clientSecret='${{ secrets.OAUTH_GOOGLE_CLIENT_SECRET }}' \
82-
--set php.oauth.pbsmidata.clientId='${{ secrets.OAUTH_PBSMIDATA_CLIENT_ID }}' \
83-
--set php.oauth.pbsmidata.clientSecret='${{ secrets.OAUTH_PBSMIDATA_CLIENT_SECRET }}' \
84-
--set php.oauth.pbsmidata.baseUrl='${{ secrets.OAUTH_PBSMIDATA_BASE_URL }}' \
85-
--set php.oauth.cevidb.clientId='${{ secrets.OAUTH_CEVIDB_CLIENT_ID }}' \
86-
--set php.oauth.cevidb.clientSecret='${{ secrets.OAUTH_CEVIDB_CLIENT_SECRET }}' \
87-
--set php.oauth.cevidb.baseUrl='${{ secrets.OAUTH_CEVIDB_BASE_URL }}' \
88-
--set php.oauth.jubladb.clientId='${{ secrets.OAUTH_JUBLADB_CLIENT_ID }}' \
89-
--set php.oauth.jubladb.clientSecret='${{ secrets.OAUTH_JUBLADB_CLIENT_SECRET }}' \
90-
--set php.oauth.jubladb.baseUrl='${{ secrets.OAUTH_JUBLADB_BASE_URL }}' \
73+
--set api.dataMigrationsDir='${{ vars.DATA_MIGRATIONS_DIR }}' \
74+
--set api.appSecret='${{ secrets.API_APP_SECRET }}' \
75+
--set api.sentryDsn='${{ secrets.API_SENTRY_DSN }}' \
76+
--set api.jwt.passphrase='${{ secrets.JWT_PASSPHRASE }}' \
77+
--set api.jwt.publicKey='${{ secrets.JWT_PUBLIC_KEY }}' \
78+
--set api.jwt.privateKey='${{ secrets.JWT_PRIVATE_KEY }}' \
79+
--set api.oauth.google.clientId='${{ secrets.OAUTH_GOOGLE_CLIENT_ID }}' \
80+
--set api.oauth.google.clientSecret='${{ secrets.OAUTH_GOOGLE_CLIENT_SECRET }}' \
81+
--set api.oauth.pbsmidata.clientId='${{ secrets.OAUTH_PBSMIDATA_CLIENT_ID }}' \
82+
--set api.oauth.pbsmidata.clientSecret='${{ secrets.OAUTH_PBSMIDATA_CLIENT_SECRET }}' \
83+
--set api.oauth.pbsmidata.baseUrl='${{ secrets.OAUTH_PBSMIDATA_BASE_URL }}' \
84+
--set api.oauth.cevidb.clientId='${{ secrets.OAUTH_CEVIDB_CLIENT_ID }}' \
85+
--set api.oauth.cevidb.clientSecret='${{ secrets.OAUTH_CEVIDB_CLIENT_SECRET }}' \
86+
--set api.oauth.cevidb.baseUrl='${{ secrets.OAUTH_CEVIDB_BASE_URL }}' \
87+
--set api.oauth.jubladb.clientId='${{ secrets.OAUTH_JUBLADB_CLIENT_ID }}' \
88+
--set api.oauth.jubladb.clientSecret='${{ secrets.OAUTH_JUBLADB_CLIENT_SECRET }}' \
89+
--set api.oauth.jubladb.baseUrl='${{ secrets.OAUTH_JUBLADB_BASE_URL }}' \
9190
--set frontend.sentryDsn='${{ secrets.FRONTEND_SENTRY_DSN }}' \
9291
--set print.sentryDsn='${{ secrets.PRINT_SENTRY_DSN }}' \
9392
--set print.ingress.readTimeoutSeconds='${{ vars.PRINT_INGRESS_READ_TIMEOUT_SECONDS }}' \
@@ -103,11 +102,9 @@ jobs:
103102
--set browserless.connectionTimeout=${{ vars.BROWSERLESS_CONNECTION_TIMEOUT_MS || '30000' }} \
104103
--set browserless.resources.requests.cpu=${{ vars.BROWSERLESS_CPU || '500m' }} \
105104
--set browserless.resources.requests.memory=${{ vars.BROWSERLESS_MEMORY || '800Mi' }} \
106-
--set caddy.resources.requests.cpu=50m \
107-
--set caddy.resources.limits.cpu=500m \
108-
--set php.resources.requests.cpu=${{ vars.PHP_CPU || '1000m' }} \
109-
--set php.resources.requests.memory=${{ vars.PHP_MEMORY || '500Mi' }} \
110-
--set php.resources.limits.cpu=${{ vars.PHP_CPULIMIT || '1900m' }} \
105+
--set api.resources.requests.cpu=${{ vars.PHP_CPU || '1000m' }} \
106+
--set api.resources.requests.memory=${{ vars.PHP_MEMORY || '500Mi' }} \
107+
--set api.resources.limits.cpu=${{ vars.PHP_CPULIMIT || '1900m' }} \
111108
--set frontend.resources.requests.cpu=50m \
112109
--set print.resources.requests.cpu=${{ vars.PRINT_CPU || '300m' }} \
113110
--set print.resources.requests.memory=${{ vars.PRINT_MEMORY || '150Mi' }} \

0 commit comments

Comments
 (0)