From 3e2cea7d57c3c408404d83804dc0641333c38804 Mon Sep 17 00:00:00 2001 From: Klaas Schuijtemaker Date: Mon, 17 Aug 2026 13:15:58 +0200 Subject: [PATCH] Upgrade Valtimo to 13.41.0 and dual-publish the backend Bump the backend to Valtimo 13.41.0.RELEASE (from 13.24.0.RELEASE) and the frontend to the matching @valtimo/* 13.41.0 packages. Backend and frontend are released under one version number: 6.0.0 -> 6.0.1. Add the S3 leg of the dual publish next to Sonatype, wired up only when -PpublishToS3=true so a plain Sonatype publish needs no AWS credentials. The workflow step is skipped with a warning when the S3 secrets are absent. Align the plugin library's Angular peer dependencies with the workspace (19.x). Add a release-notes entry. --- .github/workflows/publish-backend.yaml | 39 +++++++++++++- backend/plugin/plugin.properties | 2 +- documentation/release-notes.md | 4 ++ frontend/package.json | 74 +++++++++++++------------- frontend/projects/plugin/package.json | 12 ++--- gradle.properties | 2 +- gradle/publishing.gradle | 20 +++++++ 7 files changed, 107 insertions(+), 46 deletions(-) diff --git a/.github/workflows/publish-backend.yaml b/.github/workflows/publish-backend.yaml index 9325afd..bcca008 100644 --- a/.github/workflows/publish-backend.yaml +++ b/.github/workflows/publish-backend.yaml @@ -79,13 +79,50 @@ jobs: env: CHANGED_DIR: ${{ matrix.value }} + - id: gradleS3TaskAlize + name: Construct Gradle S3 publish task name from matrix variant + run: CHANGED_DIR=${{ matrix.value }}; echo "TASK_NAME=$(echo :$CHANGED_DIR:publishAllPublicationsToS3Repository | sed -e 's/\//:/g')">>${GITHUB_OUTPUT} + env: + CHANGED_DIR: ${{ matrix.value }} + - name: Test run: ./gradlew ${{ steps.gradleTestTaskAlize.outputs.TASK_NAME }} - - name: Publish + - name: Publish to Sonatype (Maven Central) run: ./gradlew ${{ steps.gradleTaskAlize.outputs.TASK_NAME }} env: SIGNING_KEY: ${{ secrets.SIGNING_KEY }} SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }} SONATYPE_USR: ${{ secrets.SONATYPE_USR }} SONATYPE_PSW: ${{ secrets.SONATYPE_PSW }} + + # The AWS credentials are not configured in every fork/environment yet, so the + # second leg of the dual publish is skipped rather than failed when they are absent. + - id: s3Credentials + name: Check whether S3 credentials are available + env: + AWS_ACCESS_KEY_ID: ${{ secrets.VALTIMO_RELEASE_S3_BUCKET_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.VALTIMO_RELEASE_S3_BUCKET_ACCESS_KEY_SECRET }} + run: | + if [[ -n "$AWS_ACCESS_KEY_ID" && -n "$AWS_SECRET_ACCESS_KEY" ]]; then + echo "available=true" >> "${GITHUB_OUTPUT}" + else + echo "available=false" >> "${GITHUB_OUTPUT}" + echo "::warning::S3 credentials (VALTIMO_RELEASE_S3_BUCKET_ACCESS_KEY_ID / _SECRET) are not set — skipping the S3 publish." + fi + + # Second leg of the dual publish: the same artifacts, same coordinates and version, + # pushed to the Valtimo AWS S3 bucket (valtimo-releases, eu-central-1). + - name: Publish to S3 (AWS) + if: steps.s3Credentials.outputs.available == 'true' + run: | + ./gradlew --no-parallel ${{ steps.gradleS3TaskAlize.outputs.TASK_NAME }} \ + -PpublishToS3=true \ + -Ps3Bucket=valtimo-releases \ + -Ps3Region=eu-central-1 + env: + SIGNING_KEY: ${{ secrets.SIGNING_KEY }} + SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }} + # Gradle's `AwsCredentials` reads these standard AWS env var names. + AWS_ACCESS_KEY_ID: ${{ secrets.VALTIMO_RELEASE_S3_BUCKET_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.VALTIMO_RELEASE_S3_BUCKET_ACCESS_KEY_SECRET }} diff --git a/backend/plugin/plugin.properties b/backend/plugin/plugin.properties index 340747b..09ef0b9 100644 --- a/backend/plugin/plugin.properties +++ b/backend/plugin/plugin.properties @@ -1,3 +1,3 @@ pluginGroupId=com.ritense.valtimoplugins pluginArtifactId=slack -pluginVersion=6.0.0 +pluginVersion=6.0.1 diff --git a/documentation/release-notes.md b/documentation/release-notes.md index e1912d0..0c7ba24 100644 --- a/documentation/release-notes.md +++ b/documentation/release-notes.md @@ -2,6 +2,10 @@ Overzicht van wijzigingen per versie van de Slack-plugin. +## 6.0.1 + +Valtimo bijgewerkt naar versie 13.41.0. + ## 6.0.0 Ondergebracht in een eigen repository met voorbeeldapplicatie, aparte documentatie en een PR-checks workflow. Broncode gesynchroniseerd met de monorepo en ktlint-issues opgelost. diff --git a/frontend/package.json b/frontend/package.json index 69d3fc0..fa0e102 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -44,43 +44,43 @@ "@ng-bootstrap/ng-bootstrap": "11.0.1", "@ngx-translate/core": "16.0.4", "@ngx-translate/http-loader": "16.0.1", - "@valtimo/access-control": "13.24.0", - "@valtimo/access-control-management": "13.24.0", - "@valtimo/account": "13.24.0", - "@valtimo/analyse": "13.24.0", - "@valtimo/bootstrap": "13.24.0", - "@valtimo/building-block-management": "13.24.0", - "@valtimo/case": "13.24.0", - "@valtimo/case-management": "13.24.0", - "@valtimo/case-migration": "13.24.0", - "@valtimo/choice-field": "13.24.0", - "@valtimo/components": "13.24.0", - "@valtimo/dashboard": "13.24.0", - "@valtimo/dashboard-management": "13.24.0", - "@valtimo/decision": "13.24.0", - "@valtimo/document": "13.24.0", - "@valtimo/form": "13.24.0", - "@valtimo/form-flow-management": "13.24.0", - "@valtimo/form-management": "13.24.0", - "@valtimo/iko": "13.24.0", - "@valtimo/keycloak": "13.24.0", - "@valtimo/layout": "13.24.0", - "@valtimo/logging": "13.24.0", - "@valtimo/migration": "13.24.0", - "@valtimo/milestone": "13.24.0", - "@valtimo/plugin": "13.24.0", - "@valtimo/plugin-management": "13.24.0", - "@valtimo/process": "13.24.0", - "@valtimo/process-link": "13.24.0", - "@valtimo/process-management": "13.24.0", - "@valtimo/resource": "13.24.0", - "@valtimo/security": "13.24.0", - "@valtimo/shared": "13.24.0", - "@valtimo/sse": "13.24.0", - "@valtimo/swagger": "13.24.0", - "@valtimo/task": "13.24.0", - "@valtimo/task-management": "13.24.0", - "@valtimo/teams": "13.24.0", + "@valtimo/access-control": "13.41.0", + "@valtimo/access-control-management": "13.41.0", + "@valtimo/account": "13.41.0", + "@valtimo/analyse": "13.41.0", + "@valtimo/bootstrap": "13.41.0", + "@valtimo/building-block-management": "13.41.0", + "@valtimo/case": "13.41.0", + "@valtimo/case-management": "13.41.0", + "@valtimo/case-migration": "13.41.0", + "@valtimo/choice-field": "13.41.0", + "@valtimo/components": "13.41.0", + "@valtimo/dashboard": "13.41.0", + "@valtimo/dashboard-management": "13.41.0", + "@valtimo/decision": "13.41.0", + "@valtimo/document": "13.41.0", + "@valtimo/form": "13.41.0", + "@valtimo/form-flow-management": "13.41.0", + "@valtimo/form-management": "13.41.0", + "@valtimo/iko": "13.41.0", + "@valtimo/keycloak": "13.41.0", + "@valtimo/layout": "13.41.0", + "@valtimo/logging": "13.41.0", + "@valtimo/migration": "13.41.0", + "@valtimo/milestone": "13.41.0", + "@valtimo/plugin": "13.41.0", + "@valtimo/plugin-management": "13.41.0", + "@valtimo/process": "13.41.0", + "@valtimo/process-link": "13.41.0", + "@valtimo/process-management": "13.41.0", + "@valtimo/resource": "13.41.0", + "@valtimo/security": "13.41.0", + "@valtimo/shared": "13.41.0", + "@valtimo/sse": "13.41.0", + "@valtimo/swagger": "13.41.0", + "@valtimo/task": "13.41.0", + "@valtimo/task-management": "13.41.0", + "@valtimo/teams": "13.41.0", "@webcomponents/custom-elements": "1.6.0", "ajv": "8.17.1", "angular-split": "19.0.0", diff --git a/frontend/projects/plugin/package.json b/frontend/projects/plugin/package.json index cabca03..5d252c4 100644 --- a/frontend/projects/plugin/package.json +++ b/frontend/projects/plugin/package.json @@ -1,16 +1,16 @@ { "name": "@valtimo-plugins/slack", "license": "EUPL-1.2", - "version": "6.0.0", + "version": "6.0.1", "peerDependencies": { - "@angular/common": "^17.2.2", - "@angular/core": "^17.2.2" + "@angular/common": "19.2.20", + "@angular/core": "19.2.20" }, "dependencies": { - "@angular/forms": "^17.2.2", - "ngx-spinner": "17.0.0", + "@angular/forms": "19.2.20", + "ngx-spinner": "19.0.0", "ngx-toastr": "19.0.0", - "tslib": "2.6.3" + "tslib": "2.8.1" }, "scripts": { "build": "ng build @valtimo-plugins/slack", diff --git a/gradle.properties b/gradle.properties index 80b6305..cc457dc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ sumXmlWsVersion=4.0.3 nettyResolverDnsNativeMacOsVersion=4.2.0.Final operatonVersion=1.0.3 -valtimoVersion=13.24.0.RELEASE +valtimoVersion=13.41.0.RELEASE diff --git a/gradle/publishing.gradle b/gradle/publishing.gradle index 009d468..da4d618 100644 --- a/gradle/publishing.gradle +++ b/gradle/publishing.gradle @@ -15,6 +15,16 @@ */ def sonatypeCentralStagingDir = "sonatypeCentralStaging" +// The S3 repository is only wired up when -PpublishToS3=true, so a plain Sonatype +// publish never sees it and never needs AWS credentials. +def publishToS3 = project.hasProperty('publishToS3') && project.property('publishToS3') == 'true' +def s3Bucket = project.findProperty('s3Bucket') ?: 'valtimo-releases' +// The region has to be part of the host for AWS: Gradle's S3 transport has no region property +// and its client ignores AWS_REGION, so a bare s3:// URL is signed for us-east-1 and +// rejected by buckets elsewhere. Leave s3Region empty for a non-AWS S3-compatible store, which +// is addressed with -Dorg.gradle.s3.endpoint at invocation time instead. +def s3Region = project.findProperty('s3Region') ?: '' +def s3Host = s3Region ? "${s3Bucket}.s3.${s3Region}.amazonaws.com" : s3Bucket def signingConfigSet = false if (System.getenv('SIGNING_KEY') && System.getenv('SIGNING_KEY_PASSWORD') @@ -39,6 +49,16 @@ publishing { name "Sonatype" url = sonatypeCentralStagingDir } + if (publishToS3) { + maven { + name "S3" + credentials(AwsCredentials) { + accessKey System.getenv('AWS_ACCESS_KEY_ID') + secretKey System.getenv('AWS_SECRET_ACCESS_KEY') + } + url = uri("s3://${s3Host}") + } + } } publications { maven(MavenPublication) {