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 213ef0c..6b50861 100644 --- a/backend/plugin/plugin.properties +++ b/backend/plugin/plugin.properties @@ -1,3 +1,3 @@ pluginGroupId=com.ritense.valtimoplugins pluginArtifactId=publictask -pluginVersion=2.1.2 +pluginVersion=2.1.3 diff --git a/build.gradle.kts b/build.gradle.kts index f35a011..760302b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -38,6 +38,7 @@ allprojects { mavenCentral() maven { url = uri("https://s01.oss.sonatype.org/content/repositories/releases/") } maven { url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots/") } + maven { url = uri("https://valtimo-releases.s3.eu-central-1.amazonaws.com/") } } } diff --git a/documentation/release-notes.md b/documentation/release-notes.md index c7fd7ed..b880639 100644 --- a/documentation/release-notes.md +++ b/documentation/release-notes.md @@ -2,6 +2,9 @@ Overzicht van wijzigingen per versie van de Publictask-plugin. +## 2.1.3 +Valtimo bijgewerkt naar versie 13.41.0. + ## 2.1.2 Gegevens uit een zaak worden in het publieke formulier altijd als tekst weergegeven en niet meer als opmaak of script uitgevoerd. Een link naar een publieke taak geeft het formulier daarnaast niet meer terug nadat de taak is afgerond of de uiterste datum is verstreken; links die al zijn verstuurd blijven werken. diff --git a/frontend/package.json b/frontend/package.json index e4c6357..f3da0ef 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 76bf985..f33d310 100644 --- a/frontend/projects/plugin/package.json +++ b/frontend/projects/plugin/package.json @@ -1,7 +1,7 @@ { "name": "@valtimo-plugins/publictask", "license": "EUPL-1.2", - "version": "2.1.2", + "version": "2.1.3", "peerDependencies": { "@angular/common": "19.2.20", "@angular/core": "19.2.20" diff --git a/gradle.properties b/gradle.properties index bc35750..50f2bbb 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.37.0.RELEASE +valtimoVersion=13.41.0.RELEASE diff --git a/gradle/publishing.gradle b/gradle/publishing.gradle index 8602c16..ccdbaa5 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) {