From 304637fcb23afc44b68f488364c15d80e164e658 Mon Sep 17 00:00:00 2001 From: Antonio Tarricone <110115827+antoniotarricone@users.noreply.github.com> Date: Fri, 9 Jun 2023 16:45:50 +0200 Subject: [PATCH] fix: Build automation and securing. (#2) --- .github/workflows/pr-validation.yml | 92 + .github/workflows/release.yml | 184 ++ .gitignore | 3 + .releaserc.json | 23 + dep-sha256.json | 2174 +++++++++++++++++ pom.xml | 116 +- src/main/docker/Dockerfile.jvm | 95 - src/main/docker/Dockerfile.legacy-jar | 91 - src/main/docker/Dockerfile.native | 27 - src/main/docker/Dockerfile.native-micro | 21 +- src/main/resources/application.properties | 8 +- src/main/terraform/identity/01_data.tf | 18 + .../identity/02_application_environment_cd.tf | 31 + .../identity/03_github_environment_cd.tf | 60 + src/main/terraform/identity/99_locals.tf | 4 + src/main/terraform/identity/99_main.tf | 32 + src/main/terraform/identity/99_main.tf.ci | 30 + src/main/terraform/identity/99_outputs.tf | 7 + src/main/terraform/identity/99_variables.tf | 51 + .../terraform/identity/env/dev/backend.ini | 1 + .../terraform/identity/env/dev/backend.tfvars | 4 + .../identity/env/dev/terraform.tfvars | 12 + .../terraform/identity/env/prod/backend.ini | 1 + .../identity/env/prod/backend.tfvars | 4 + .../identity/env/prod/terraform.tfvars | 46 + .../terraform/identity/env/uat/backend.ini | 1 + .../terraform/identity/env/uat/backend.tfvars | 4 + .../identity/env/uat/terraform.tfvars | 46 + src/main/terraform/identity/terraform.sh | 64 + 29 files changed, 2956 insertions(+), 294 deletions(-) create mode 100644 .github/workflows/pr-validation.yml create mode 100644 .github/workflows/release.yml create mode 100644 .releaserc.json create mode 100644 dep-sha256.json delete mode 100644 src/main/docker/Dockerfile.jvm delete mode 100644 src/main/docker/Dockerfile.legacy-jar delete mode 100644 src/main/docker/Dockerfile.native create mode 100644 src/main/terraform/identity/01_data.tf create mode 100644 src/main/terraform/identity/02_application_environment_cd.tf create mode 100644 src/main/terraform/identity/03_github_environment_cd.tf create mode 100644 src/main/terraform/identity/99_locals.tf create mode 100644 src/main/terraform/identity/99_main.tf create mode 100644 src/main/terraform/identity/99_main.tf.ci create mode 100644 src/main/terraform/identity/99_outputs.tf create mode 100644 src/main/terraform/identity/99_variables.tf create mode 100644 src/main/terraform/identity/env/dev/backend.ini create mode 100644 src/main/terraform/identity/env/dev/backend.tfvars create mode 100644 src/main/terraform/identity/env/dev/terraform.tfvars create mode 100644 src/main/terraform/identity/env/prod/backend.ini create mode 100644 src/main/terraform/identity/env/prod/backend.tfvars create mode 100644 src/main/terraform/identity/env/prod/terraform.tfvars create mode 100644 src/main/terraform/identity/env/uat/backend.ini create mode 100644 src/main/terraform/identity/env/uat/backend.tfvars create mode 100644 src/main/terraform/identity/env/uat/terraform.tfvars create mode 100755 src/main/terraform/identity/terraform.sh diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml new file mode 100644 index 0000000..415899e --- /dev/null +++ b/.github/workflows/pr-validation.yml @@ -0,0 +1,92 @@ +name: Pull request validation + +on: + pull_request: + branches: + - main + types: + - opened + - edited + - synchronize + +jobs: + pr-validation: + runs-on: ubuntu-latest + + steps: + - name: PR title validation + uses: amannn/action-semantic-pull-request@c3cd5d1ea3580753008872425915e343e351ab54 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + types: | + docs + refactor + chore + fix + feat + breaking + requireScope: false + subjectPattern: ^[A-Z].+$ + subjectPatternError: | + The subject "{subject}" found in the pull request title "{title}" + doesn't match the configured pattern. Please ensure that the subject + starts with an uppercase character. + wip: false + + - name: Checkout the source code + uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab + with: + token: ${{ secrets.GIT_PAT }} + fetch-depth: 0 + + - name: Cache JDK + uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 + id: cache-jdk + with: + key: OpenJDK17U-jdk_x64_linux_hotspot_17.0.7_7.tar.gz + path: | + ${{ runner.temp }}/jdk_setup.tar.gz + ${{ runner.temp }}/jdk_setup.sha256 + + - name: Download JDK and verify its hash + if: steps.cache-jdk.outputs.cache-hit != 'true' + run: | + echo "e9458b38e97358850902c2936a1bb5f35f6cffc59da9fcd28c63eab8dbbfbc3b ${{ runner.temp }}/jdk_setup.tar.gz" >> ${{ runner.temp }}/jdk_setup.sha256 + curl -L "/~https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.7%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.7_7.tar.gz" -o "${{ runner.temp }}/jdk_setup.tar.gz" + sha256sum --check --status "${{ runner.temp }}/jdk_setup.sha256" + + - name: Setup JDK + uses: actions/setup-java@5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2 + with: + distribution: "jdkfile" + jdkFile: "${{ runner.temp }}/jdk_setup.tar.gz" + java-version: "17" + cache: maven + + - name: Cache Maven + uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 + id: cache-maven + with: + key: apache-maven-3.9.2-bin.tar.gz + path: | + ${{ runner.temp }}/maven_setup.tar.gz + ${{ runner.temp }}/maven_setup.sha256 + + - name: Download Maven and verify its hash + if: steps.cache-maven.outputs.cache-hit != 'true' + run: | + echo "809ef3220c6d179195c06c324cb9a6d34d8ecba566c5cfd8eb83167bc034117d ${{ runner.temp }}/maven_setup.tar.gz" >> ${{ runner.temp }}/maven_setup.sha256 + curl -L "https://dlcdn.apache.org/maven/maven-3/3.9.2/binaries/apache-maven-3.9.2-bin.tar.gz" -o "${{ runner.temp }}/maven_setup.tar.gz" + sha256sum --check --status "${{ runner.temp }}/maven_setup.sha256" + + - name: Setup Maven + run: | + mkdir ${{ runner.temp }}/maven + tar -xvf ${{ runner.temp }}/maven_setup.tar.gz -C ${{ runner.temp }}/maven --strip-components=1 + echo "github${{ secrets.GIT_USER }}${{ secrets.GIT_PAT }}" >> ${{ runner.temp }}/settings.xml + + - name: Execute unit-test + Calculate test coverage + SCA with Sonar + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: ${{ runner.temp }}/maven/bin/mvn verify -Pvalidate -s ${{ runner.temp }}/settings.xml --no-transfer-progress \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..18a1575 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,184 @@ +name: Release a new version + +on: + pull_request: + types: + - closed + branches: + - main + +jobs: + release: + if: github.event.pull_request.merged == true + + runs-on: ubuntu-latest + + outputs: + new_release_published: ${{ steps.semantic.outputs.new_release_published }} + new_release_version: ${{ steps.semantic.outputs.new_release_version }} + + steps: + # + # Checkout the source code. + # + - name: Checkout the source code + uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab + with: + token: ${{ secrets.GIT_PAT }} + fetch-depth: 0 + + # + # Calculation of the new version (dry-run). + # + - name: Calculation of the new version (dry-run) + uses: cycjimmy/semantic-release-action@8e58d20d0f6c8773181f43eb74d6a05e3099571d + id: semantic + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + semantic_version: 19 + branch: main + extra_plugins: | + @semantic-release/release-notes-generator@10.0.3 + @semantic-release/git@10.0.1 + dry_run: true + + # + # Cache JDK. + # + - name: Cache JDK + uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 + id: cache-jdk + with: + key: OpenJDK17U-jdk_x64_linux_hotspot_17.0.7_7.tar.gz + path: | + ${{ runner.temp }}/jdk_setup.tar.gz + ${{ runner.temp }}/jdk_setup.sha256 + + # + # Download JDK and verify its hash. + # + - name: Download JDK and verify its hash + if: steps.cache-jdk.outputs.cache-hit != 'true' + run: | + echo "e9458b38e97358850902c2936a1bb5f35f6cffc59da9fcd28c63eab8dbbfbc3b ${{ runner.temp }}/jdk_setup.tar.gz" >> ${{ runner.temp }}/jdk_setup.sha256 + curl -L "/~https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.7%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.7_7.tar.gz" -o "${{ runner.temp }}/jdk_setup.tar.gz" + sha256sum --check --status "${{ runner.temp }}/jdk_setup.sha256" + + # + # Setup JDK. + # + - name: Setup JDK + uses: actions/setup-java@5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2 + with: + distribution: "jdkfile" + jdkFile: "${{ runner.temp }}/jdk_setup.tar.gz" + java-version: "17" + cache: maven + + # + # Cache Maven. + # + - name: Cache Maven + uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 + id: cache-maven + with: + key: apache-maven-3.9.2-bin.tar.gz + path: | + ${{ runner.temp }}/maven_setup.tar.gz + ${{ runner.temp }}/maven_setup.sha256 + + # + # Download Maven and verify its hash. + # + - name: Download Maven and verify its hash + if: steps.cache-maven.outputs.cache-hit != 'true' + run: | + echo "809ef3220c6d179195c06c324cb9a6d34d8ecba566c5cfd8eb83167bc034117d ${{ runner.temp }}/maven_setup.tar.gz" >> ${{ runner.temp }}/maven_setup.sha256 + curl -L "https://dlcdn.apache.org/maven/maven-3/3.9.2/binaries/apache-maven-3.9.2-bin.tar.gz" -o "${{ runner.temp }}/maven_setup.tar.gz" + sha256sum --check --status "${{ runner.temp }}/maven_setup.sha256" + + # + # Setup Maven. + # + - name: Setup Maven + run: | + mkdir ${{ runner.temp }}/maven + tar -xvf ${{ runner.temp }}/maven_setup.tar.gz -C ${{ runner.temp }}/maven --strip-components=1 + echo "github${{ secrets.GIT_USER }}${{ secrets.GIT_PAT }}" >> ${{ runner.temp }}/settings.xml + + # + # Update of pom.xml with the new version + Git add + commit + push of the updated pom.xml. + # + - name: Update of pom.xml with the new version + Git add + commit + push of the updated pom.xml + if: steps.semantic.outputs.new_release_published == 'true' + run: | + ${{ runner.temp }}/maven/bin/mvn versions:set -DnewVersion=${{ steps.semantic.outputs.new_release_version }} -s ${{ runner.temp }}/settings.xml --no-transfer-progress + git config user.name "GitHub Workflow" + git config user.email "<>" + git add pom.xml + git commit -m "pom.xml updated with new version ${{ steps.semantic.outputs.new_release_version }}" + git push origin main + + # + # Calculation of the new version (again) with tagging + releasing + etc. + # + - name: Calculation of the new version (again) with tagging + releasing + etc + if: steps.semantic.outputs.new_release_published == 'true' + uses: cycjimmy/semantic-release-action@8e58d20d0f6c8773181f43eb74d6a05e3099571d + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + semantic_version: 19 + branch: main + extra_plugins: | + @semantic-release/release-notes-generator@10.0.3 + @semantic-release/git@10.0.1 + dry_run: false + + # + # Execute unit-test + Calculate test coverage + SCA with Sonar + Build native image + Docker build + Docker login + Docker push + # + - name: Execute unit-test + Calculate test coverage + SCA with Sonar + Build native image + Docker build + Docker login + Docker push + if: steps.semantic.outputs.new_release_published == 'true' + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: | + ${{ runner.temp }}/maven/bin/mvn verify -Pvalidate -s ${{ runner.temp }}/settings.xml --no-transfer-progress + ${{ runner.temp }}/maven/bin/mvn clean package -Pnative -Dmaven.test.skip=true -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel-builder-image@sha256:05baf3fd2173f6f25ad35216b6b066c35fbfb97f06daba75efb5b22bc0a85b9c -s ${{ runner.temp }}/settings.xml --no-transfer-progress + docker build -f src/main/docker/Dockerfile.native-micro -t ghcr.io/${{ github.repository }}:latest -t ghcr.io/${{ github.repository }}:${{ steps.semantic.outputs.new_release_version }} . + echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin + docker push -a ghcr.io/${{ github.repository }} + + deploy: + needs: release + + if: needs.release.outputs.new_release_published == 'true' + + runs-on: ubuntu-latest + + environment: dev-cd + + permissions: + id-token: write + + steps: + # + # Login to Azure. + # + - name: Login to Azure + uses: azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 + with: + client-id: ${{ secrets.AZURE_CLIENT_ID }} + tenant-id: ${{ secrets.AZURE_TENANT_ID }} + subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + + # + # Update Container App + # + - name: Update Container App + uses: azure/CLI@fa0f960f00db49b95fdb54328a767aee31e80105 + with: + inlineScript: | + az config set extension.use_dynamic_install=yes_without_prompt + az containerapp update -n ${{ secrets.AZURE_CONTAINER_APP_NAME }} -g ${{ secrets.AZURE_RESOURCE_GROUP_NAME }} --image ghcr.io/${{ github.repository }}:${{ needs.release.outputs.new_release_version }} diff --git a/.gitignore b/.gitignore index 693002a..03b5d93 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,6 @@ nb-configuration.xml # Local environment .env + +src/main/terraform/identity/.terraform +src/main/terraform/identity/.terraform.lock.hcl diff --git a/.releaserc.json b/.releaserc.json new file mode 100644 index 0000000..20031e7 --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,23 @@ +{ + "branches": [ + "main" + ], + "ci": false, + "tagFormat": "${version}", + "plugins": [ + [ + "@semantic-release/commit-analyzer", + { + "preset": "angular", + "releaseRules": [ + { + "type": "breaking", + "release": "major" + } + ] + } + ], + "@semantic-release/release-notes-generator", + "@semantic-release/github" + ] +} diff --git a/dep-sha256.json b/dep-sha256.json new file mode 100644 index 0000000..97b51df --- /dev/null +++ b/dep-sha256.json @@ -0,0 +1,2174 @@ +{ + "dependencies": [ + { + "id": "io.quarkus:quarkus-resteasy-reactive-jackson:jar:3.1.0.Final", + "artifactId": "quarkus-resteasy-reactive-jackson", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "PXs4okE49O3GExTNaEtprFIsR1y5F1iyCFlNmp9S-ts=" + }, + { + "id": "io.quarkus:quarkus-resteasy-reactive-jackson-common:jar:3.1.0.Final", + "artifactId": "quarkus-resteasy-reactive-jackson-common", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "JDnGxsnHGg65o06U-8rNA08RoQ3eJXfRXWzTBbBlBj0=" + }, + { + "id": "io.quarkus:quarkus-hibernate-validator:jar:3.1.0.Final", + "artifactId": "quarkus-hibernate-validator", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "n3tBrqzJ0Klm_hhY87yrPIinILeD3smvvOjfq_TzA9o=" + }, + { + "id": "io.quarkus:quarkus-core:jar:3.1.0.Final", + "artifactId": "quarkus-core", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "uGcsTEi8IRHBxSN0bUC5fee1JcUDmBskjhFNCiLDtiY=" + }, + { + "id": "jakarta.enterprise:jakarta.enterprise.cdi-api:jar:4.0.1", + "artifactId": "jakarta.enterprise.cdi-api", + "groupId": "jakarta.enterprise", + "version": "4.0.1", + "sha256": "vq90xPJhgYkwnj9KCcQ-_6tjPdlqofbcWKa6fuAEJxc=" + }, + { + "id": "jakarta.enterprise:jakarta.enterprise.lang-model:jar:4.0.1", + "artifactId": "jakarta.enterprise.lang-model", + "groupId": "jakarta.enterprise", + "version": "4.0.1", + "sha256": "U6yv5ltu8Blfobig7yZQ5aoCTDLLQFnE3zctazIInNM=" + }, + { + "id": "jakarta.interceptor:jakarta.interceptor-api:jar:2.1.0", + "artifactId": "jakarta.interceptor-api", + "groupId": "jakarta.interceptor", + "version": "2.1.0", + "sha256": "73h9P3E_xv9PAs1LDb7Qj5PYrzQAyQy7Q_tLXAWDcQs=" + }, + { + "id": "jakarta.inject:jakarta.inject-api:jar:2.0.1", + "artifactId": "jakarta.inject-api", + "groupId": "jakarta.inject", + "version": "2.0.1", + "sha256": "99yYBi_M8UEmq7dRtk-rEsMSVm6MvchINZi__OqTr3w=" + }, + { + "id": "io.smallrye.common:smallrye-common-os:jar:2.1.0", + "artifactId": "smallrye-common-os", + "groupId": "io.smallrye.common", + "version": "2.1.0", + "sha256": "zxlEyMicsNEN4f9L4UMpMJ4FzAW0xIx6RBfc2SjO1r4=" + }, + { + "id": "io.quarkus:quarkus-ide-launcher:jar:3.1.0.Final", + "artifactId": "quarkus-ide-launcher", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "ApNfumCqsWUJikh62tSRIsfv4sf-XkAqYMS4XZk2gj0=" + }, + { + "id": "io.quarkus:quarkus-development-mode-spi:jar:3.1.0.Final", + "artifactId": "quarkus-development-mode-spi", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "X0O6AvQQAwmy8xgjZOLgE4hawBgvsIr_19GSe_fmEwU=" + }, + { + "id": "io.smallrye.config:smallrye-config:jar:3.2.1", + "artifactId": "smallrye-config", + "groupId": "io.smallrye.config", + "version": "3.2.1", + "sha256": "OBGFYr_Ptdle7uo6wQ1mMwFNAqcHAeHmIWMco61LzyY=" + }, + { + "id": "io.smallrye.config:smallrye-config-core:jar:3.2.1", + "artifactId": "smallrye-config-core", + "groupId": "io.smallrye.config", + "version": "3.2.1", + "sha256": "5KtGfWXFQTipZXYELXxyEEqcW6D5KvdYAx8ghJAcwGk=" + }, + { + "id": "org.eclipse.microprofile.config:microprofile-config-api:jar:3.0.3", + "artifactId": "microprofile-config-api", + "groupId": "org.eclipse.microprofile.config", + "version": "3.0.3", + "sha256": "bJe41cNkmp0D5z2DAMqc6RKjny4V5qNg9STn2ZZiojw=" + }, + { + "id": "io.smallrye.common:smallrye-common-expression:jar:2.1.0", + "artifactId": "smallrye-common-expression", + "groupId": "io.smallrye.common", + "version": "2.1.0", + "sha256": "h1R7mgBYaYSi6q_E1dBcKUPSHGSUvFMnHzTgdgzGHgU=" + }, + { + "id": "io.smallrye.common:smallrye-common-function:jar:2.1.0", + "artifactId": "smallrye-common-function", + "groupId": "io.smallrye.common", + "version": "2.1.0", + "sha256": "fFygFWVh0aWwTwfOwbSgEvjVnXV5CeR0KOE2dugvoNs=" + }, + { + "id": "io.smallrye.common:smallrye-common-classloader:jar:2.1.0", + "artifactId": "smallrye-common-classloader", + "groupId": "io.smallrye.common", + "version": "2.1.0", + "sha256": "Jwb_NxWPio3lezngd1CInHpwuNrtGseXdBSYOW0T9AI=" + }, + { + "id": "io.smallrye.config:smallrye-config-common:jar:3.2.1", + "artifactId": "smallrye-config-common", + "groupId": "io.smallrye.config", + "version": "3.2.1", + "sha256": "KYr0DmE95RsNSH7hMPALpdXu_ExpsHJVCnbA98cdYm4=" + }, + { + "id": "org.jboss.logmanager:jboss-logmanager-embedded:jar:1.1.1", + "artifactId": "jboss-logmanager-embedded", + "groupId": "org.jboss.logmanager", + "version": "1.1.1", + "sha256": "SDI6QtNWLT8EIOxgvJiO0OoCmCy5M0qI66cEIRNQwpE=" + }, + { + "id": "org.jboss.logging:jboss-logging-annotations:jar:2.2.1.Final", + "artifactId": "jboss-logging-annotations", + "groupId": "org.jboss.logging", + "version": "2.2.1.Final", + "sha256": "8VJPydftOvyH02WrDSgO8mDI3Rg2Q1aJ6DAP1aUe0Xg=" + }, + { + "id": "org.jboss.threads:jboss-threads:jar:3.5.0.Final", + "artifactId": "jboss-threads", + "groupId": "org.jboss.threads", + "version": "3.5.0.Final", + "sha256": "4VC2en9ShSX-aN1ghBUgwi1Z4Kgx6iN8RacE3ki5kLE=" + }, + { + "id": "org.jboss.slf4j:slf4j-jboss-logmanager:jar:2.0.0.Final", + "artifactId": "slf4j-jboss-logmanager", + "groupId": "org.jboss.slf4j", + "version": "2.0.0.Final", + "sha256": "J3iFEEtyeiE-94S6sxSZ0jIhB03tKLBIJ-gJ0vVIlpM=" + }, + { + "id": "org.graalvm.sdk:graal-sdk:jar:22.3.2", + "artifactId": "graal-sdk", + "groupId": "org.graalvm.sdk", + "version": "22.3.2", + "sha256": "gv3rMmA7mxIfO8RVkH1-Pv_LJo6X1y160P0z_dfT6zs=" + }, + { + "id": "org.wildfly.common:wildfly-common:jar:1.5.4.Final-format-001", + "artifactId": "wildfly-common", + "groupId": "org.wildfly.common", + "version": "1.5.4.Final-format-001", + "sha256": "mIT3kfgV0P7YxRdxr3EWSv1I-W5iHyYAn56-eRwFPxs=" + }, + { + "id": "io.quarkus:quarkus-bootstrap-runner:jar:3.1.0.Final", + "artifactId": "quarkus-bootstrap-runner", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "b0HJmZ92FKZ7qq9Zc9b5nZKH9il06JE3WengkLfJDUI=" + }, + { + "id": "io.quarkus:quarkus-fs-util:jar:0.0.9", + "artifactId": "quarkus-fs-util", + "groupId": "io.quarkus", + "version": "0.0.9", + "sha256": "6go6O0a6DWDu4xhpH22d2k0M1H0ghRK5DYOmLU7NyjY=" + }, + { + "id": "org.hibernate.validator:hibernate-validator:jar:8.0.0.Final", + "artifactId": "hibernate-validator", + "groupId": "org.hibernate.validator", + "version": "8.0.0.Final", + "sha256": "V6Ms2gWDREsZ0C_XbHtPIwNc24d-C2xz6DQ4AJTiIUU=" + }, + { + "id": "jakarta.validation:jakarta.validation-api:jar:3.0.2", + "artifactId": "jakarta.validation-api", + "groupId": "jakarta.validation", + "version": "3.0.2", + "sha256": "KRwl5pEMxqfr2W1Ma66_bXw3Z2xUgsLZYUbpAbYsH8k=" + }, + { + "id": "com.fasterxml:classmate:jar:1.5.1", + "artifactId": "classmate", + "groupId": "com.fasterxml", + "version": "1.5.1", + "sha256": "qrTeMAaAjAnSXdT_SjYRz7Y8lUY8_ZnnPS4WgNIpozs=" + }, + { + "id": "org.glassfish.expressly:expressly:jar:5.0.0", + "artifactId": "expressly", + "groupId": "org.glassfish.expressly", + "version": "5.0.0", + "sha256": "sMhyc3u4OBkhswTQlShUZm0boyC5s8W_TXCgmoa2FSQ=" + }, + { + "id": "jakarta.el:jakarta.el-api:jar:5.0.1", + "artifactId": "jakarta.el-api", + "groupId": "jakarta.el", + "version": "5.0.1", + "sha256": "kEMtGCgXF7NjuBmXjGoXJDOiZUt364fIY8IvwZwg7O0=" + }, + { + "id": "io.smallrye.config:smallrye-config-validator:jar:3.2.1", + "artifactId": "smallrye-config-validator", + "groupId": "io.smallrye.config", + "version": "3.2.1", + "sha256": "PzK_I5gjhBkVpxLwanPVbLuQ3hipXNrdQrWXSNLTxig=" + }, + { + "id": "jakarta.ws.rs:jakarta.ws.rs-api:jar:3.1.0", + "artifactId": "jakarta.ws.rs-api", + "groupId": "jakarta.ws.rs", + "version": "3.1.0", + "sha256": "azs2KLi0rt2g0kwzVDNemFSX2O88UQuPMCjpINW4Zj0=" + }, + { + "id": "io.quarkus:quarkus-smallrye-health:jar:3.1.0.Final", + "artifactId": "quarkus-smallrye-health", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "vVJB745P-rZZE58v4bmmX0I3C7308uv4zH2RoPMXur4=" + }, + { + "id": "io.smallrye:smallrye-health:jar:4.0.1", + "artifactId": "smallrye-health", + "groupId": "io.smallrye", + "version": "4.0.1", + "sha256": "SyPcEyJs1loRZNH5VhllXzCcWOq951Jkc1NVDE28JBA=" + }, + { + "id": "org.eclipse.microprofile.health:microprofile-health-api:jar:4.0.1", + "artifactId": "microprofile-health-api", + "groupId": "org.eclipse.microprofile.health", + "version": "4.0.1", + "sha256": "uJyktsT3oEQlDTHAZz9rwiHkD9Zp_Fhx261eWgdpykc=" + }, + { + "id": "io.smallrye:smallrye-health-api:jar:4.0.1", + "artifactId": "smallrye-health-api", + "groupId": "io.smallrye", + "version": "4.0.1", + "sha256": "76nYih3yhmgIi6-z04ZkjruBsT1weshDtlVKfF6ZJJ4=" + }, + { + "id": "jakarta.json:jakarta.json-api:jar:2.1.1", + "artifactId": "jakarta.json-api", + "groupId": "jakarta.json", + "version": "2.1.1", + "sha256": "w8D_55ZVOS9_9APc-b8B5xApm1oEBvboSJ6fJKCPgyc=" + }, + { + "id": "io.smallrye:smallrye-health-provided-checks:jar:4.0.1", + "artifactId": "smallrye-health-provided-checks", + "groupId": "io.smallrye", + "version": "4.0.1", + "sha256": "RSfC9buC6Sx2qrv79jKUflVSNUus0cjIm22nYKMqOmQ=" + }, + { + "id": "io.quarkus:quarkus-vertx-http:jar:3.1.0.Final", + "artifactId": "quarkus-vertx-http", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "t0uMXjBQIRUqvIsVwFHAGIaQG954oBbb7V5cSP9-eXQ=" + }, + { + "id": "io.quarkus:quarkus-security-runtime-spi:jar:3.1.0.Final", + "artifactId": "quarkus-security-runtime-spi", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "_WMHlba9PWrMa_i6KGXwV7Y7hKcWDWd8Ycf8OMMcHtM=" + }, + { + "id": "io.quarkus:quarkus-credentials:jar:3.1.0.Final", + "artifactId": "quarkus-credentials", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "n5dmYY3K-qJ6OzzVFcXLBwqwRWTWFdjRTaTLVvTl6HI=" + }, + { + "id": "io.smallrye.common:smallrye-common-vertx-context:jar:2.1.0", + "artifactId": "smallrye-common-vertx-context", + "groupId": "io.smallrye.common", + "version": "2.1.0", + "sha256": "FGtrg-XDonRrOC6Sng_ng9WsT3NfNkUYdTxI5thGbKE=" + }, + { + "id": "io.vertx:vertx-core:jar:4.4.2", + "artifactId": "vertx-core", + "groupId": "io.vertx", + "version": "4.4.2", + "sha256": "UzKuUoA_mmpjaSE434BH5k2ommo8jZVVrZ-HjKni3Jc=" + }, + { + "id": "io.netty:netty-common:jar:4.1.92.Final", + "artifactId": "netty-common", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "r4xXdB-1RgbekJCxM7XA-C8qWpQIwa48LY-tuayhVA4=" + }, + { + "id": "io.netty:netty-buffer:jar:4.1.92.Final", + "artifactId": "netty-buffer", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "XOvv4hlfpFMYNDY0VMecdnVVFRjKI2tkCJxAPaeWd3A=" + }, + { + "id": "io.netty:netty-transport:jar:4.1.92.Final", + "artifactId": "netty-transport", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "dHTl4npPkIoAOs5JZZZMzbb4zKICsYDqIPzK_r5Xypk=" + }, + { + "id": "io.netty:netty-handler:jar:4.1.92.Final", + "artifactId": "netty-handler", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "0sPBeHnzYZohYwdkSxDa7t2rGwShKH3_UGdKh9oUQ7I=" + }, + { + "id": "io.netty:netty-transport-native-unix-common:jar:4.1.92.Final", + "artifactId": "netty-transport-native-unix-common", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "s3ubG371z1Ym2S05HeVCLV_VoYFhk0R-57thxwqi2zE=" + }, + { + "id": "io.netty:netty-handler-proxy:jar:4.1.92.Final", + "artifactId": "netty-handler-proxy", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "q0Agm9pa4lVmfaaXjrf4tig0JPiSiWtkYeJWSZrQy_o=" + }, + { + "id": "io.netty:netty-codec-socks:jar:4.1.92.Final", + "artifactId": "netty-codec-socks", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "hXSAtt6lJUOFHWONZcycK6hbhbzShieXpzCZDVcLTHU=" + }, + { + "id": "io.netty:netty-codec-http:jar:4.1.92.Final", + "artifactId": "netty-codec-http", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "qwUch9RsMrXp5IbmESQDWNLfpemvhUG2y0dqCd3F5Ug=" + }, + { + "id": "io.netty:netty-codec-http2:jar:4.1.92.Final", + "artifactId": "netty-codec-http2", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "7MTQhhDyimhI7OSnirpjfghU66bpXbjiCZve8WZ3H8M=" + }, + { + "id": "io.netty:netty-resolver:jar:4.1.92.Final", + "artifactId": "netty-resolver", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "SUF3OFjz_duEx8bSzGfPDEyZH8PrimCJFtmYLmmXrU0=" + }, + { + "id": "io.netty:netty-resolver-dns:jar:4.1.92.Final", + "artifactId": "netty-resolver-dns", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "mbZewhWt4pA34x1_iEo_lxL5hssexcGIv-ElHLdTGZ0=" + }, + { + "id": "io.netty:netty-codec-dns:jar:4.1.92.Final", + "artifactId": "netty-codec-dns", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "PCsL12Eyz8-cP6mpOIIXkOF0vDBRmkRHkwJMrArdTnM=" + }, + { + "id": "io.smallrye.common:smallrye-common-constraint:jar:2.1.0", + "artifactId": "smallrye-common-constraint", + "groupId": "io.smallrye.common", + "version": "2.1.0", + "sha256": "Fp3rJq6MT9Ae11u619ktSjDSnXxemjynE_DgjfYoh6Y=" + }, + { + "id": "io.quarkus:quarkus-vertx-http-dev-console-runtime-spi:jar:3.1.0.Final", + "artifactId": "quarkus-vertx-http-dev-console-runtime-spi", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "93hxnC40LfPg7ZBbooz3H6M9Zax12FbaV8-IvWvpX_A=" + }, + { + "id": "io.quarkus.security:quarkus-security:jar:2.0.2.Final", + "artifactId": "quarkus-security", + "groupId": "io.quarkus.security", + "version": "2.0.2.Final", + "sha256": "-7Nfls8Zn0EMx5xmVOQFjo3VrqiwtSRxIYRHpTXNJdQ=" + }, + { + "id": "io.quarkus:quarkus-vertx:jar:3.1.0.Final", + "artifactId": "quarkus-vertx", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "ZAUaljhwhT9Q9BnBhfPVLo-7lNEpO4B9PnA9yeObNIA=" + }, + { + "id": "io.quarkus:quarkus-netty:jar:3.1.0.Final", + "artifactId": "quarkus-netty", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "ETIoYz60zHwXJj1hPnxd3hJBHIrsL1v2rqb5SRmH7gs=" + }, + { + "id": "io.netty:netty-codec:jar:4.1.92.Final", + "artifactId": "netty-codec", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "_IqakUDaAcfpGT88-FBAtFMwWfFRoEjUF11EdlWfZ1E=" + }, + { + "id": "com.aayushatharva.brotli4j:brotli4j:jar:1.11.0", + "artifactId": "brotli4j", + "groupId": "com.aayushatharva.brotli4j", + "version": "1.11.0", + "sha256": "XvoDngc9wW0wVKQ7OF1CXBdHzwH1Jn4aSlFO7DqXrD8=" + }, + { + "id": "com.aayushatharva.brotli4j:service:jar:1.11.0", + "artifactId": "service", + "groupId": "com.aayushatharva.brotli4j", + "version": "1.11.0", + "sha256": "8XkfMr5OWeFX_srCcjXP9HIu5iWL4qMZM78JwfN_nTI=" + }, + { + "id": "com.aayushatharva.brotli4j:native-osx-aarch64:jar:1.11.0", + "artifactId": "native-osx-aarch64", + "groupId": "com.aayushatharva.brotli4j", + "version": "1.11.0", + "sha256": "LCxbfByd8uYohfSWydvcfO63dqxSJsJG51luCsRnPgE=" + }, + { + "id": "com.aayushatharva.brotli4j:native-linux-x86_64:jar:1.11.0", + "artifactId": "native-linux-x86_64", + "groupId": "com.aayushatharva.brotli4j", + "version": "1.11.0", + "sha256": "bD-neL_jA9OBHsi6E-qQisZH9ymMf_HGOptXgpF18m0=" + }, + { + "id": "io.netty:netty-codec-haproxy:jar:4.1.92.Final", + "artifactId": "netty-codec-haproxy", + "groupId": "io.netty", + "version": "4.1.92.Final", + "sha256": "Xnm3j6tFiMQE2qZ9Jo7m5F9OMA0ymOAQ5zRZXonLmp0=" + }, + { + "id": "io.quarkus:quarkus-vertx-latebound-mdc-provider:jar:3.1.0.Final", + "artifactId": "quarkus-vertx-latebound-mdc-provider", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "fFunrigjJJjjLsTgjJv9jwHbI4PzpVJjubh0Ww9WMmQ=" + }, + { + "id": "io.smallrye:smallrye-fault-tolerance-vertx:jar:6.2.2", + "artifactId": "smallrye-fault-tolerance-vertx", + "groupId": "io.smallrye", + "version": "6.2.2", + "sha256": "laieRRclc0tCyliXP4pqullBSTDu1amSMB1WocmLgQY=" + }, + { + "id": "io.smallrye.reactive:smallrye-mutiny-vertx-web:jar:3.3.0", + "artifactId": "smallrye-mutiny-vertx-web", + "groupId": "io.smallrye.reactive", + "version": "3.3.0", + "sha256": "EKfuSiucZKGk3BZ4z_0NoM9SQE4CyrbFdXQqn-AdgNk=" + }, + { + "id": "io.smallrye.reactive:smallrye-mutiny-vertx-web-common:jar:3.3.0", + "artifactId": "smallrye-mutiny-vertx-web-common", + "groupId": "io.smallrye.reactive", + "version": "3.3.0", + "sha256": "PEbrry6llXQlA4W1MwFIp9Lexxa5p8Uk-RWJSV-hOIY=" + }, + { + "id": "io.smallrye.reactive:smallrye-mutiny-vertx-auth-common:jar:3.3.0", + "artifactId": "smallrye-mutiny-vertx-auth-common", + "groupId": "io.smallrye.reactive", + "version": "3.3.0", + "sha256": "ZmLIDTzAANZ3QHQ-MI7tQv44t5iR0KWQsxhVN-wOynI=" + }, + { + "id": "io.smallrye.reactive:smallrye-mutiny-vertx-bridge-common:jar:3.3.0", + "artifactId": "smallrye-mutiny-vertx-bridge-common", + "groupId": "io.smallrye.reactive", + "version": "3.3.0", + "sha256": "DaEizb6OUnmZzmYXp_83kHWND5HiYHUQR-hcX6Mwrz0=" + }, + { + "id": "io.smallrye.reactive:smallrye-mutiny-vertx-uri-template:jar:3.3.0", + "artifactId": "smallrye-mutiny-vertx-uri-template", + "groupId": "io.smallrye.reactive", + "version": "3.3.0", + "sha256": "-8gIy3H_2Eu0HnipACydIHMBgUuLi_zNSRA01Dxjsk4=" + }, + { + "id": "io.vertx:vertx-uri-template:jar:4.4.2", + "artifactId": "vertx-uri-template", + "groupId": "io.vertx", + "version": "4.4.2", + "sha256": "k37tXZko0urphBlCOESHRu2xLlR-fJczUUNCSIb5PUA=" + }, + { + "id": "io.vertx:vertx-web:jar:4.4.2", + "artifactId": "vertx-web", + "groupId": "io.vertx", + "version": "4.4.2", + "sha256": "meYbrlFjcZCwCrqdpQNFXYLFWfzR5Kj6cV0RvOOoln0=" + }, + { + "id": "io.vertx:vertx-web-common:jar:4.4.2", + "artifactId": "vertx-web-common", + "groupId": "io.vertx", + "version": "4.4.2", + "sha256": "uyCJRNiOSRN0jSA4xGBsgswBRvF3ytUZkMoWypI11q8=" + }, + { + "id": "io.vertx:vertx-auth-common:jar:4.4.2", + "artifactId": "vertx-auth-common", + "groupId": "io.vertx", + "version": "4.4.2", + "sha256": "vFqd0P-vhCQlRZnMHKCuLwOVJ_5Zhh-urpL61S2RYwk=" + }, + { + "id": "io.vertx:vertx-bridge-common:jar:4.4.2", + "artifactId": "vertx-bridge-common", + "groupId": "io.vertx", + "version": "4.4.2", + "sha256": "TofB79Az9V2SLeFgE7SwvfzNyZj89y5wcCXy1E0Dn84=" + }, + { + "id": "io.github.crac:org-crac:jar:0.1.3", + "artifactId": "org-crac", + "groupId": "io.github.crac", + "version": "0.1.3", + "sha256": "13oMYo0Tme5oJziFHcoT0GD-9RYBrtrW0e_NMYX5rwk=" + }, + { + "id": "io.quarkus:quarkus-jsonp:jar:3.1.0.Final", + "artifactId": "quarkus-jsonp", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "NsW73GoAFuGqJF2VwyiVKltHWDvl2B4YHfBaolRY_AI=" + }, + { + "id": "org.eclipse.parsson:parsson:jar:1.1.1", + "artifactId": "parsson", + "groupId": "org.eclipse.parsson", + "version": "1.1.1", + "sha256": "TWNoZrAQ7DCv2AEQLqwM1wqzOm5OxtOaYZrgE-pf_9M=" + }, + { + "id": "io.quarkus:quarkus-arc:jar:3.1.0.Final", + "artifactId": "quarkus-arc", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "Eb-4APo0ixksKasixqRjdp-fgXXEP6WnFlDC0X3g5S0=" + }, + { + "id": "io.quarkus.arc:arc:jar:3.1.0.Final", + "artifactId": "arc", + "groupId": "io.quarkus.arc", + "version": "3.1.0.Final", + "sha256": "1ZJkU2XVz4R7mutuCnNTouu5I7zi-W6X9qKYHW3RW4Y=" + }, + { + "id": "jakarta.transaction:jakarta.transaction-api:jar:2.0.1", + "artifactId": "jakarta.transaction-api", + "groupId": "jakarta.transaction", + "version": "2.0.1", + "sha256": "UMCnx2DBOubAQqzxgrKPAEdBPblbRjb7iHm8_6tbqHU=" + }, + { + "id": "org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:jar:1.3", + "artifactId": "microprofile-context-propagation-api", + "groupId": "org.eclipse.microprofile.context-propagation", + "version": "1.3", + "sha256": "aczARIfod3nUlwqlDGc8w0qd8IDBwOjY6rLotG-CXPQ=" + }, + { + "id": "io.quarkus:quarkus-resteasy-reactive:jar:3.1.0.Final", + "artifactId": "quarkus-resteasy-reactive", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "qp0xZWJhU7869pbMquxpGYc1E33SyltJKSsiyO2R9EY=" + }, + { + "id": "io.quarkus:quarkus-resteasy-reactive-common:jar:3.1.0.Final", + "artifactId": "quarkus-resteasy-reactive-common", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "2WAycgjy6ElCaGsgdkl3sr-6LiEh_7arIZirrwZ_j_k=" + }, + { + "id": "io.quarkus.resteasy.reactive:resteasy-reactive-common:jar:3.1.0.Final", + "artifactId": "resteasy-reactive-common", + "groupId": "io.quarkus.resteasy.reactive", + "version": "3.1.0.Final", + "sha256": "zNhP4qte6Mj088SChE6korUI2JXD1CuGnbNMtVf8_NQ=" + }, + { + "id": "io.quarkus.resteasy.reactive:resteasy-reactive-common-types:jar:3.1.0.Final", + "artifactId": "resteasy-reactive-common-types", + "groupId": "io.quarkus.resteasy.reactive", + "version": "3.1.0.Final", + "sha256": "8vPoay6U8P5pXPtG50TQmk4nlC1lVYClLf-6N4DIzdM=" + }, + { + "id": "io.quarkus.resteasy.reactive:resteasy-reactive-vertx:jar:3.1.0.Final", + "artifactId": "resteasy-reactive-vertx", + "groupId": "io.quarkus.resteasy.reactive", + "version": "3.1.0.Final", + "sha256": "eoIVAQwIKGe1Nu-GfZp68d5y-15MEvTHmWeUG7oFwoU=" + }, + { + "id": "io.smallrye.reactive:smallrye-mutiny-vertx-core:jar:3.3.0", + "artifactId": "smallrye-mutiny-vertx-core", + "groupId": "io.smallrye.reactive", + "version": "3.3.0", + "sha256": "ZmMkkW_yRrlkCn0NyGZAB-g5rLmd8p6KE3X7WK_AgAo=" + }, + { + "id": "io.smallrye.reactive:smallrye-mutiny-vertx-runtime:jar:3.3.0", + "artifactId": "smallrye-mutiny-vertx-runtime", + "groupId": "io.smallrye.reactive", + "version": "3.3.0", + "sha256": "d1CSNGZ6vb8Pp7M1OLkTHEDyH8lgE7n1gJWPkLmzQHs=" + }, + { + "id": "io.smallrye.reactive:vertx-mutiny-generator:jar:3.3.0", + "artifactId": "vertx-mutiny-generator", + "groupId": "io.smallrye.reactive", + "version": "3.3.0", + "sha256": "POOTxlbBumVSxFpHZxEePDzpx6IY3U0vu_4omAKI6wk=" + }, + { + "id": "io.vertx:vertx-codegen:jar:4.4.2", + "artifactId": "vertx-codegen", + "groupId": "io.vertx", + "version": "4.4.2", + "sha256": "B3GAnHPcg-0IjuBU0UL3GWhFvcVwQ_uzqWZs1zijr3g=" + }, + { + "id": "io.quarkus.resteasy.reactive:resteasy-reactive:jar:3.1.0.Final", + "artifactId": "resteasy-reactive", + "groupId": "io.quarkus.resteasy.reactive", + "version": "3.1.0.Final", + "sha256": "e1XyQI3RBA1X2vny402VuMTne7PnPf4tqGsl-gcdujc=" + }, + { + "id": "org.jboss.logging:commons-logging-jboss-logging:jar:1.0.0.Final", + "artifactId": "commons-logging-jboss-logging", + "groupId": "org.jboss.logging", + "version": "1.0.0.Final", + "sha256": "8SF2Jj6iX054u0-ks20zWilzjd5qgSPhttqJplXRUP8=" + }, + { + "id": "jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.0", + "artifactId": "jakarta.xml.bind-api", + "groupId": "jakarta.xml.bind", + "version": "4.0.0", + "sha256": "V-N5atV1NkAIj1-dPFPBg_LCULfa2QUp6j4ZpVFaoSI=" + }, + { + "id": "jakarta.activation:jakarta.activation-api:jar:2.1.2", + "artifactId": "jakarta.activation-api", + "groupId": "jakarta.activation", + "version": "2.1.2", + "sha256": "9T9XjdDrQXDBlaTiFcWaOKv7QSPcuV3ZAv75KHZJn7s=" + }, + { + "id": "io.quarkus:quarkus-rest-client-reactive:jar:3.1.0.Final", + "artifactId": "quarkus-rest-client-reactive", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "oEYCf4cuN6gOjy9z0bhSiO0EvKY7lar31P_JZ9HjGjU=" + }, + { + "id": "io.quarkus:quarkus-jaxrs-client-reactive:jar:3.1.0.Final", + "artifactId": "quarkus-jaxrs-client-reactive", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "vthh4lVyQq1pMizLOhrJT78bU-LkaUWOUK8PIBYntx4=" + }, + { + "id": "io.quarkus.resteasy.reactive:resteasy-reactive-client:jar:3.1.0.Final", + "artifactId": "resteasy-reactive-client", + "groupId": "io.quarkus.resteasy.reactive", + "version": "3.1.0.Final", + "sha256": "M_cnN2VQ2EUfDrbZdHknKSkg9cQzR3Cs0oiEc1OCcWo=" + }, + { + "id": "io.vertx:vertx-web-client:jar:4.4.2", + "artifactId": "vertx-web-client", + "groupId": "io.vertx", + "version": "4.4.2", + "sha256": "yutnhBLYsB-tO1eNK13rDiz3Hy-Crxvf22y2pMfBHFU=" + }, + { + "id": "io.quarkus:quarkus-smallrye-stork:jar:3.1.0.Final", + "artifactId": "quarkus-smallrye-stork", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "wkVQmH5csj_JZ5uv83mLfR8-Y9wYKX5wvRvuG2AYM44=" + }, + { + "id": "io.quarkus:quarkus-rest-client-config:jar:3.1.0.Final", + "artifactId": "quarkus-rest-client-config", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "eHWjI9b8rGPBy4S7sToV4tdK0JSnyTEn9aTV6l99Hho=" + }, + { + "id": "io.smallrye:jandex:jar:3.1.1", + "artifactId": "jandex", + "groupId": "io.smallrye", + "version": "3.1.1", + "sha256": "FP3vJDxsU0EA1CCc9P8ORZtRIBHGrPesN0wDPnk2VJ8=" + }, + { + "id": "io.smallrye.stork:stork-api:jar:2.2.0", + "artifactId": "stork-api", + "groupId": "io.smallrye.stork", + "version": "2.2.0", + "sha256": "BMYAdNq7xXhGLidjDIkUOE_Qxce6Ir9kTEisNXzHljA=" + }, + { + "id": "io.smallrye.stork:stork-core:jar:2.2.0", + "artifactId": "stork-core", + "groupId": "io.smallrye.stork", + "version": "2.2.0", + "sha256": "9SEzjWk-426yyc5QAwC2wrgAeHRyXfjxKp-7DlIDOiw=" + }, + { + "id": "org.eclipse.microprofile.rest.client:microprofile-rest-client-api:jar:3.0.1", + "artifactId": "microprofile-rest-client-api", + "groupId": "org.eclipse.microprofile.rest.client", + "version": "3.0.1", + "sha256": "K3Fpi5XIksxlkjX0_-ZjteLxFRzrTncmiyP_KwxjIcs=" + }, + { + "id": "io.quarkus:quarkus-mongodb-panache:jar:3.1.0.Final", + "artifactId": "quarkus-mongodb-panache", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "JpvAXtj1eY8MRXhwmwUHIU7wAzPKsa9OTjOO4-5pMD8=" + }, + { + "id": "io.quarkus:quarkus-panache-common:jar:3.1.0.Final", + "artifactId": "quarkus-panache-common", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "phj1ajdvbPPdRpzIlQMNrbTCB9qqEuU5G7gWwHpyMWg=" + }, + { + "id": "io.quarkus:quarkus-mongodb-panache-common:jar:3.1.0.Final", + "artifactId": "quarkus-mongodb-panache-common", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "z54r2I5V0NS-cFxRhxxZmadVA89AniuBDIxfVSlWjD4=" + }, + { + "id": "io.quarkus:quarkus-mongodb-client:jar:3.1.0.Final", + "artifactId": "quarkus-mongodb-client", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "PC_sMnm4Mx2XKgxIHIZzDEuAnit2fn6rrq0g59Z-zeA=" + }, + { + "id": "org.mongodb:mongodb-driver-sync:jar:4.9.1", + "artifactId": "mongodb-driver-sync", + "groupId": "org.mongodb", + "version": "4.9.1", + "sha256": "X85UEBNq6AjuW6XJ6xdcuFsQwBseZjCtpmAc-jnrCLs=" + }, + { + "id": "org.mongodb:bson:jar:4.9.1", + "artifactId": "bson", + "groupId": "org.mongodb", + "version": "4.9.1", + "sha256": "RZpeIF-plqVfX1KjbVvwN0XFMaDWxg_j0c8kyhA19lw=" + }, + { + "id": "org.mongodb:mongodb-driver-core:jar:4.9.1", + "artifactId": "mongodb-driver-core", + "groupId": "org.mongodb", + "version": "4.9.1", + "sha256": "-Cvzl82DHHdxE3HL2xl4IZJNSRHXt9D_5lq6v6NDlxQ=" + }, + { + "id": "org.mongodb:bson-record-codec:jar:4.9.1", + "artifactId": "bson-record-codec", + "groupId": "org.mongodb", + "version": "4.9.1", + "sha256": "CAxgIiXg2cIM_g7yGsE1l08VImjPJwVtXZA3qo2HVPU=" + }, + { + "id": "org.mongodb:mongodb-driver-reactivestreams:jar:4.9.1", + "artifactId": "mongodb-driver-reactivestreams", + "groupId": "org.mongodb", + "version": "4.9.1", + "sha256": "ABviZXeUPPSuhvjmLJ1gaDMN9WYvvTrNfKuYwwPQBrA=" + }, + { + "id": "io.projectreactor:reactor-core:jar:3.5.0", + "artifactId": "reactor-core", + "groupId": "io.projectreactor", + "version": "3.5.0", + "sha256": "e8tnFp-GFxqTQOJEoCZoTI41vfGQX4zIaYpYU_KKlvs=" + }, + { + "id": "org.mongodb:mongodb-crypt:jar:1.7.3", + "artifactId": "mongodb-crypt", + "groupId": "org.mongodb", + "version": "1.7.3", + "sha256": "H8YFSfOQoYzMQDQAoCLYJ8UJNY2rMKS0eo4w9huLSRs=" + }, + { + "id": "io.quarkus:quarkus-panacheql:jar:3.1.0.Final", + "artifactId": "quarkus-panacheql", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "cboXsCodEdXaQP-ASDa88L6Yhu7BUXtMtmvc3YIO8hY=" + }, + { + "id": "org.antlr:antlr4-runtime:jar:4.10.1", + "artifactId": "antlr4-runtime", + "groupId": "org.antlr", + "version": "4.10.1", + "sha256": "2ma-DJis-ym8cIMA0F8aMmnED5mEpMuSUc8roYmNEzQ=" + }, + { + "id": "io.quarkus:quarkus-narayana-jta:jar:3.1.0.Final", + "artifactId": "quarkus-narayana-jta", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "d_BDV_zNXt9PC2OnO5pci0T__xi73NmWJbnYFhKo9a8=" + }, + { + "id": "io.quarkus:quarkus-transaction-annotations:jar:3.1.0.Final", + "artifactId": "quarkus-transaction-annotations", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "XN1jMaVSubvpGEWqwtbiP8KuM_e4x90tJVfcMxN7jGQ=" + }, + { + "id": "io.smallrye:smallrye-context-propagation-jta:jar:2.1.0", + "artifactId": "smallrye-context-propagation-jta", + "groupId": "io.smallrye", + "version": "2.1.0", + "sha256": "kwoNodHB80MJcmG84etWktoNHu7BQ5SZ6eS3yumGpGY=" + }, + { + "id": "io.smallrye.reactive:smallrye-reactive-converter-mutiny:jar:3.0.0", + "artifactId": "smallrye-reactive-converter-mutiny", + "groupId": "io.smallrye.reactive", + "version": "3.0.0", + "sha256": "ZTUth3TJ83Dfze4ADLSpOaBDnoON7sUOnGyDqlvEgdQ=" + }, + { + "id": "org.jboss.narayana.jta:narayana-jta:jar:6.0.1.Final", + "artifactId": "narayana-jta", + "groupId": "org.jboss.narayana.jta", + "version": "6.0.1.Final", + "sha256": "iNqRq2SAgJsXF5dO8ghBRSn9aYh48hiz9X0hT04cRQ0=" + }, + { + "id": "org.jboss:jboss-transaction-spi:jar:8.0.0.Final", + "artifactId": "jboss-transaction-spi", + "groupId": "org.jboss", + "version": "8.0.0.Final", + "sha256": "B-TmLOrgdajBGnFdibGZksh59QW0i-aycn9b55hWKuE=" + }, + { + "id": "jakarta.resource:jakarta.resource-api:jar:2.0.0", + "artifactId": "jakarta.resource-api", + "groupId": "jakarta.resource", + "version": "2.0.0", + "sha256": "0PQlBOXd9zHT1bYj5pYY77Woki4ltf-DtuA0CVHMB5A=" + }, + { + "id": "org.jboss.invocation:jboss-invocation:jar:2.0.0.Final", + "artifactId": "jboss-invocation", + "groupId": "org.jboss.invocation", + "version": "2.0.0.Final", + "sha256": "75vrO_-FkwcQs2e2-E1Av3ISiJjKbM3zd1U3eTt0sGc=" + }, + { + "id": "jakarta.ejb:jakarta.ejb-api:jar:4.0.1", + "artifactId": "jakarta.ejb-api", + "groupId": "jakarta.ejb", + "version": "4.0.1", + "sha256": "RspS6aHfRwEuvMy1MZtXCfWwxyFPlU8zN-bt0t_myxU=" + }, + { + "id": "org.jboss.narayana.jts:narayana-jts-integration:jar:6.0.1.Final", + "artifactId": "narayana-jts-integration", + "groupId": "org.jboss.narayana.jts", + "version": "6.0.1.Final", + "sha256": "pz7JaGMDk_t-SzfqaPPb0yE_BGPk0M5IN6UN-lbvIo0=" + }, + { + "id": "org.apache.commons:commons-lang3:jar:3.12.0", + "artifactId": "commons-lang3", + "groupId": "org.apache.commons", + "version": "3.12.0", + "sha256": "2RnZBEhsA3-NGTQS2gyS4iqfokIwudZ6V4VcXDHH6U4=" + }, + { + "id": "it.pagopa.swclient.mil:common:jar:2.0.2", + "artifactId": "common", + "groupId": "it.pagopa.swclient.mil", + "version": "2.0.2", + "sha256": "ntDsMD3I1EDFqEs4rg-6ZuUG5fASYx_71DIxCz8fwmw=" + }, + { + "id": "io.quarkus:quarkus-container-image-docker:jar:3.1.0.Final", + "artifactId": "quarkus-container-image-docker", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "S70LYmILKCp5_8K9ZV-GdiWBUclnZ_gnacg8-P0paBc=" + }, + { + "id": "io.quarkus:quarkus-container-image:jar:3.1.0.Final", + "artifactId": "quarkus-container-image", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "2Ngn4oVxvd4Z134kM-lmdlCx_aqj_6gJ9OXjE1j59_c=" + }, + { + "id": "io.quarkus:quarkus-rest-client-reactive-jackson:jar:3.1.0.Final", + "artifactId": "quarkus-rest-client-reactive-jackson", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "2fThhcFyu7inY4lcjK5RlbCGdsccgrncXQnwh1zMJ6A=" + }, + { + "id": "io.quarkus.resteasy.reactive:resteasy-reactive-jackson:jar:3.1.0.Final", + "artifactId": "resteasy-reactive-jackson", + "groupId": "io.quarkus.resteasy.reactive", + "version": "3.1.0.Final", + "sha256": "4YiPmFxMs1E6wz5audzWgfsg5QWRZdZcF3D54rQdMqM=" + }, + { + "id": "com.fasterxml.jackson.core:jackson-databind:jar:2.15.0", + "artifactId": "jackson-databind", + "groupId": "com.fasterxml.jackson.core", + "version": "2.15.0", + "sha256": "AMWl1a5xrI6NW42mBoQeIlHIBjVZOctdUcTNxrZEoNw=" + }, + { + "id": "com.fasterxml.jackson.core:jackson-core:jar:2.15.0", + "artifactId": "jackson-core", + "groupId": "com.fasterxml.jackson.core", + "version": "2.15.0", + "sha256": "W0g_aPqd1qo32jfR953VxLlGQjj08GYKJCy2tccklQw=" + }, + { + "id": "io.quarkus:quarkus-smallrye-reactive-messaging-kafka:jar:3.1.0.Final", + "artifactId": "quarkus-smallrye-reactive-messaging-kafka", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "l98yEeFyNFeKGTslKltoFEjL3TW9SV8vztMljOgDzTo=" + }, + { + "id": "io.quarkus:quarkus-kafka-client:jar:3.1.0.Final", + "artifactId": "quarkus-kafka-client", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "BCODKwYrIHj1pvhdyYfOqodlOAAfKlk99DRbgBCsOOs=" + }, + { + "id": "io.quarkus:quarkus-caffeine:jar:3.1.0.Final", + "artifactId": "quarkus-caffeine", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "G-2b66CHrBghibti14oDF1GzkDLklnmGgUyR-xwhDew=" + }, + { + "id": "com.github.ben-manes.caffeine:caffeine:jar:3.1.5", + "artifactId": "caffeine", + "groupId": "com.github.ben-manes.caffeine", + "version": "3.1.5", + "sha256": "AsNP0rp4sZVu9uXemskVrum_pJhYmWb6hyVfuttlNJk=" + }, + { + "id": "com.google.errorprone:error_prone_annotations:jar:2.19.1", + "artifactId": "error_prone_annotations", + "groupId": "com.google.errorprone", + "version": "2.19.1", + "sha256": "rdOZAphQH9y27Fj_8mYIwdKY-13-L4DXSGe_D1xTlmg=" + }, + { + "id": "io.smallrye.reactive:smallrye-reactive-messaging-kafka:jar:4.5.0", + "artifactId": "smallrye-reactive-messaging-kafka", + "groupId": "io.smallrye.reactive", + "version": "4.5.0", + "sha256": "F-7H0Dibwd0_RuWeFkJuApOa7lpogjwJSDKpA_hSFIU=" + }, + { + "id": "io.smallrye.reactive:smallrye-reactive-messaging-kafka-api:jar:4.5.0", + "artifactId": "smallrye-reactive-messaging-kafka-api", + "groupId": "io.smallrye.reactive", + "version": "4.5.0", + "sha256": "lcrJ08YnpjJIiIUaEvWDNx8b-3e0vEIeHhwXhTKCK78=" + }, + { + "id": "io.smallrye.reactive:smallrye-reactive-messaging-otel:jar:4.5.0", + "artifactId": "smallrye-reactive-messaging-otel", + "groupId": "io.smallrye.reactive", + "version": "4.5.0", + "sha256": "A-mbV-kMwHKQrboBM6NyhqXSc-ZiH3kBX3chqlsRxRM=" + }, + { + "id": "io.opentelemetry:opentelemetry-api:jar:1.25.0", + "artifactId": "opentelemetry-api", + "groupId": "io.opentelemetry", + "version": "1.25.0", + "sha256": "iRQjrLUg8Pgho3GN6HeRMy8Apf3Kz6RhCiIaeJma9IE=" + }, + { + "id": "io.opentelemetry:opentelemetry-context:jar:1.25.0", + "artifactId": "opentelemetry-context", + "groupId": "io.opentelemetry", + "version": "1.25.0", + "sha256": "4uAxnDKQJ4YRs2CGIFPdodjQpzMPhFXBf2c7jx4NNVE=" + }, + { + "id": "io.opentelemetry:opentelemetry-semconv:jar:1.25.0-alpha", + "artifactId": "opentelemetry-semconv", + "groupId": "io.opentelemetry", + "version": "1.25.0-alpha", + "sha256": "B0zDaXVdoysxHl1vJqUJhZ9L49c3cBpXW3vj34-FXiI=" + }, + { + "id": "io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:jar:1.25.0", + "artifactId": "opentelemetry-instrumentation-api", + "groupId": "io.opentelemetry.instrumentation", + "version": "1.25.0", + "sha256": "Yt-1c1puZHRMof1oeOKn0v0-BP6Y6Uc5axGz7vIzlbY=" + }, + { + "id": "io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-semconv:jar:1.25.0-alpha", + "artifactId": "opentelemetry-instrumentation-api-semconv", + "groupId": "io.opentelemetry.instrumentation", + "version": "1.25.0-alpha", + "sha256": "fuPyBOXDDcIOABfHqxsxxNsOfAum3S2FRCAuzX-TrXI=" + }, + { + "id": "io.quarkus:quarkus-jackson:jar:3.1.0.Final", + "artifactId": "quarkus-jackson", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "MkTlJJPXGkO889caSSkj7Zc-25JueJbl6b1gGWVhoQc=" + }, + { + "id": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.15.0", + "artifactId": "jackson-datatype-jsr310", + "groupId": "com.fasterxml.jackson.datatype", + "version": "2.15.0", + "sha256": "1d65LVlmio3grI2oGNXZwP37Tbay8dZqd5_jV_MQ1kg=" + }, + { + "id": "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.15.0", + "artifactId": "jackson-datatype-jdk8", + "groupId": "com.fasterxml.jackson.datatype", + "version": "2.15.0", + "sha256": "YIxserorUSOU4zghnMCboNv-hbaDBF2bj0FZksJ0a3E=" + }, + { + "id": "com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.15.0", + "artifactId": "jackson-module-parameter-names", + "groupId": "com.fasterxml.jackson.module", + "version": "2.15.0", + "sha256": "DNhSpOXD5O9emIJphiPVnuGhiz3TzeRSKz2sESuWzVs=" + }, + { + "id": "org.apache.kafka:kafka-clients:jar:3.4.0", + "artifactId": "kafka-clients", + "groupId": "org.apache.kafka", + "version": "3.4.0", + "sha256": "SPON7eab8u03CeJwr7a3L6yGllH8JYmXcn26NQMzrGQ=" + }, + { + "id": "com.github.luben:zstd-jni:jar:1.5.2-1", + "artifactId": "zstd-jni", + "groupId": "com.github.luben", + "version": "1.5.2-1", + "sha256": "k_fky8kHwmUPifnwvslIc3NaWPHktmpUlzKU5OwYeOg=" + }, + { + "id": "org.lz4:lz4-java:jar:1.8.0", + "artifactId": "lz4-java", + "groupId": "org.lz4", + "version": "1.8.0", + "sha256": "10ozNPs1GVAJszipUfkYID1rvKPR01kDPcM-3Rytye8=" + }, + { + "id": "org.xerial.snappy:snappy-java:jar:1.1.8.4", + "artifactId": "snappy-java", + "groupId": "org.xerial.snappy", + "version": "1.1.8.4", + "sha256": "JMTR_B6J4HgzGrj0AamcrWhZm95KLkUWBCy1SMUbHD4=" + }, + { + "id": "io.quarkus:quarkus-smallrye-reactive-messaging:jar:3.1.0.Final", + "artifactId": "quarkus-smallrye-reactive-messaging", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "6fqmbaZu-i0t_fCiig59Huc8qle5Y4G7ui_8cuHtIU8=" + }, + { + "id": "io.quarkus:quarkus-mutiny-reactive-streams-operators:jar:3.1.0.Final", + "artifactId": "quarkus-mutiny-reactive-streams-operators", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "stbBMmhNLem7rGKwP_Y4gqDut2akhJsImvEbNtMXhYw=" + }, + { + "id": "org.eclipse.microprofile.reactive-streams-operators:microprofile-reactive-streams-operators-api:jar:3.0", + "artifactId": "microprofile-reactive-streams-operators-api", + "groupId": "org.eclipse.microprofile.reactive-streams-operators", + "version": "3.0", + "sha256": "pThfputVk5xP4vimVz-KqTttfbTm9ReKC9LLPSYyiQU=" + }, + { + "id": "org.eclipse.microprofile.reactive-streams-operators:microprofile-reactive-streams-operators-core:jar:3.0", + "artifactId": "microprofile-reactive-streams-operators-core", + "groupId": "org.eclipse.microprofile.reactive-streams-operators", + "version": "3.0", + "sha256": "91cVMVN6gkGtbGWRNLRwIK0_ZtOg2SouHKCn2BC36Z8=" + }, + { + "id": "io.smallrye.reactive:mutiny-reactive-streams-operators:jar:2.1.0", + "artifactId": "mutiny-reactive-streams-operators", + "groupId": "io.smallrye.reactive", + "version": "2.1.0", + "sha256": "y2Kq3ddVDFeDCPoy-cqygZCsshQJJZMbziya4ee-frg=" + }, + { + "id": "io.quarkus:quarkus-smallrye-reactive-messaging-kotlin:jar:3.1.0.Final", + "artifactId": "quarkus-smallrye-reactive-messaging-kotlin", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "zb76ve-vu7Sv8FWkJlLVlV0JpN8vAVQz-jrFLtim80k=" + }, + { + "id": "io.smallrye.common:smallrye-common-annotation:jar:2.1.0", + "artifactId": "smallrye-common-annotation", + "groupId": "io.smallrye.common", + "version": "2.1.0", + "sha256": "ucbZrBiH9kUlnY0Nb_R1W8F9lh4uAug-rW9pmuPW-Mc=" + }, + { + "id": "io.smallrye.reactive:smallrye-reactive-messaging-health:jar:4.5.0", + "artifactId": "smallrye-reactive-messaging-health", + "groupId": "io.smallrye.reactive", + "version": "4.5.0", + "sha256": "se9rU1XA2E1OFT9kSfbNmA646DMwzBFKnXOjbf3jNTY=" + }, + { + "id": "io.smallrye.reactive:smallrye-reactive-messaging-provider:jar:4.5.0", + "artifactId": "smallrye-reactive-messaging-provider", + "groupId": "io.smallrye.reactive", + "version": "4.5.0", + "sha256": "VnJ36tmzYXC8EwdnjMRiXHTwu4WlAAglv-U8LvOKwQ0=" + }, + { + "id": "io.smallrye.reactive:smallrye-reactive-messaging-api:jar:4.5.0", + "artifactId": "smallrye-reactive-messaging-api", + "groupId": "io.smallrye.reactive", + "version": "4.5.0", + "sha256": "mYrt8LddEK0WdaT3F3_SHTROVth73HHQvs3VElzQCE0=" + }, + { + "id": "jakarta.annotation:jakarta.annotation-api:jar:2.1.1", + "artifactId": "jakarta.annotation-api", + "groupId": "jakarta.annotation", + "version": "2.1.1", + "sha256": "X2X9r0JO7itV4diCupuzdr6T-wmze4CL5uIuiFHJCf4=" + }, + { + "id": "io.smallrye.reactive:smallrye-reactive-messaging-in-memory:jar:4.5.0", + "artifactId": "smallrye-reactive-messaging-in-memory", + "groupId": "io.smallrye.reactive", + "version": "4.5.0", + "sha256": "5VE5YbZEwPTArTQneQveulv8iyI58QSwmnlwgwTQ3SA=" + }, + { + "id": "org.jboss.logging:jboss-logging:jar:3.5.0.Final", + "artifactId": "jboss-logging", + "groupId": "org.jboss.logging", + "version": "3.5.0.Final", + "sha256": "e7E1sIGVL20y2DN0YZrlIBsFyjv4YqKN0REBbOGbLAc=" + }, + { + "id": "io.smallrye.reactive:smallrye-reactive-converter-api:jar:3.0.0", + "artifactId": "smallrye-reactive-converter-api", + "groupId": "io.smallrye.reactive", + "version": "3.0.0", + "sha256": "U8oj7z6Q2G01LZDC1Fv6ISJXd0KYLc0uPUpwydGtppI=" + }, + { + "id": "org.reactivestreams:reactive-streams:jar:1.0.4", + "artifactId": "reactive-streams", + "groupId": "org.reactivestreams", + "version": "1.0.4", + "sha256": "91yll3ibPaxY9hhXuawuEDSmj6Zy2zUFWo-0UJ4yXyg=" + }, + { + "id": "io.smallrye.reactive:mutiny:jar:2.1.0", + "artifactId": "mutiny", + "groupId": "io.smallrye.reactive", + "version": "2.1.0", + "sha256": "UnxMJd0bD1xsEQB0u97UKq20qNsXokro0hhCRuSD36A=" + }, + { + "id": "io.smallrye.reactive:mutiny-zero:jar:1.0.0", + "artifactId": "mutiny-zero", + "groupId": "io.smallrye.reactive", + "version": "1.0.0", + "sha256": "bgKnB3u9tgqovLYoC5PunGgBONqSUVfi7YJMruKgAAg=" + }, + { + "id": "io.smallrye.reactive:mutiny-zero-flow-adapters:jar:1.0.0", + "artifactId": "mutiny-zero-flow-adapters", + "groupId": "io.smallrye.reactive", + "version": "1.0.0", + "sha256": "tcTuAhmpyCYpGEYkZRN2C9kAHUkpJm8VRPGoSUZmalI=" + }, + { + "id": "org.testcontainers:testcontainers:jar:1.18.1", + "artifactId": "testcontainers", + "groupId": "org.testcontainers", + "version": "1.18.1", + "sha256": "mTH2juAaZzLzZvgZafJlB6ei5og9iBz6Jsecnr-ZoRk=" + }, + { + "id": "junit:junit:jar:4.13.2", + "artifactId": "junit", + "groupId": "junit", + "version": "4.13.2", + "sha256": "jklbY0Rp1k-4rPo0laBly6zIoP_1XOHjEAe-TBbcV9M=" + }, + { + "id": "org.slf4j:slf4j-api:jar:2.0.6", + "artifactId": "slf4j-api", + "groupId": "org.slf4j", + "version": "2.0.6", + "sha256": "LyqS1BCyaBOdfWO3XtJeIZlc_kEAwZvyNXfP28gHe9o=" + }, + { + "id": "org.apache.commons:commons-compress:jar:1.23.0", + "artifactId": "commons-compress", + "groupId": "org.apache.commons", + "version": "1.23.0", + "sha256": "wmfxcWDp72YrTXi38p3KfIKxXFz_LLaphl70qz3Vt4c=" + }, + { + "id": "org.rnorth.duct-tape:duct-tape:jar:1.0.8", + "artifactId": "duct-tape", + "groupId": "org.rnorth.duct-tape", + "version": "1.0.8", + "sha256": "Mc7xLd7JedH4bXz3CMQaF9pSPQXGhf1mQunQsq3bckA=" + }, + { + "id": "org.jetbrains:annotations:jar:24.0.1", + "artifactId": "annotations", + "groupId": "org.jetbrains", + "version": "24.0.1", + "sha256": "YWZtvOfkLmyFtDwE_PuCk6Idy1WzyA6GknDOQsAaazU=" + }, + { + "id": "com.github.docker-java:docker-java-api:jar:3.3.0", + "artifactId": "docker-java-api", + "groupId": "com.github.docker-java", + "version": "3.3.0", + "sha256": "JZWi-XaCZOGYeCmdx3OQJH5QCd_IykiLiU6kaI0dzE4=" + }, + { + "id": "com.fasterxml.jackson.core:jackson-annotations:jar:2.15.0", + "artifactId": "jackson-annotations", + "groupId": "com.fasterxml.jackson.core", + "version": "2.15.0", + "sha256": "ka3NPc9f2aFkmZNOdTaiPUVmkqAJPj1P1S8TjDk2NIw=" + }, + { + "id": "com.github.docker-java:docker-java-transport-zerodep:jar:3.3.0", + "artifactId": "docker-java-transport-zerodep", + "groupId": "com.github.docker-java", + "version": "3.3.0", + "sha256": "_6-vkFntNZKAZVayrUjD_VuWjDs50mgBIyYKprc7wy8=" + }, + { + "id": "com.github.docker-java:docker-java-transport:jar:3.3.0", + "artifactId": "docker-java-transport", + "groupId": "com.github.docker-java", + "version": "3.3.0", + "sha256": "JR7QpLExzfeLlRMm1GkEpPgxjjNR-kd0SeNMlw9jxKg=" + }, + { + "id": "net.java.dev.jna:jna:jar:5.8.0", + "artifactId": "jna", + "groupId": "net.java.dev.jna", + "version": "5.8.0", + "sha256": "kwJzzBxJLyVmHqYkE6baP9f24BvxxNzAgX_IaWp7B6w=" + }, + { + "id": "io.quarkus:quarkus-junit5:jar:3.1.0.Final", + "artifactId": "quarkus-junit5", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "gPGsuXew_GznOkdS7GEJdu9a-Iys4foq5wJ5yodGcIU=" + }, + { + "id": "io.quarkus:quarkus-bootstrap-core:jar:3.1.0.Final", + "artifactId": "quarkus-bootstrap-core", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "AihONrK96gK8lAd8xk6bRHzpR4q_WhjapSH2v3AJHFk=" + }, + { + "id": "io.quarkus:quarkus-bootstrap-app-model:jar:3.1.0.Final", + "artifactId": "quarkus-bootstrap-app-model", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "bM4RXT0ELcHgR2ESBPOn-swAjEcjddGBW8UPbAXkXYs=" + }, + { + "id": "io.smallrye.common:smallrye-common-io:jar:2.1.0", + "artifactId": "smallrye-common-io", + "groupId": "io.smallrye.common", + "version": "2.1.0", + "sha256": "0bM8h_DqyHX6lYENhksCbf6s5UZS8HUtDzNVbPsJv1Q=" + }, + { + "id": "org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.5", + "artifactId": "org.eclipse.sisu.inject", + "groupId": "org.eclipse.sisu", + "version": "0.3.5", + "sha256": "xZlAELzc4dK9YDpNUMRxkd29eHXRFXsjqqJtM8gv2hM=" + }, + { + "id": "io.quarkus:quarkus-test-common:jar:3.1.0.Final", + "artifactId": "quarkus-test-common", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "Ti7msfJLKRsxj7ViDO8XBFbeYF2_CvuBBJesC8qt_IY=" + }, + { + "id": "io.quarkus:quarkus-core-deployment:jar:3.1.0.Final", + "artifactId": "quarkus-core-deployment", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "nYskDjL0L_rlU11UNhyQnpyhZ8-PH-Xuk_sRSubB5KY=" + }, + { + "id": "org.aesh:readline:jar:2.4", + "artifactId": "readline", + "groupId": "org.aesh", + "version": "2.4", + "sha256": "pilUF2mhVkkwUfLsWV8TQjmE1KBfg8hJ3FoDmgB-d3s=" + }, + { + "id": "org.fusesource.jansi:jansi:jar:2.4.0", + "artifactId": "jansi", + "groupId": "org.fusesource.jansi", + "version": "2.4.0", + "sha256": "bNkZkTI917L7KMqT16wSr1qGovUyeeKzWCezAxP9C58=" + }, + { + "id": "org.aesh:aesh:jar:2.7", + "artifactId": "aesh", + "groupId": "org.aesh", + "version": "2.7", + "sha256": "NNtAwroutEG4Y09fOscw_1fYJWyVATbzGV8Mx6XGIeM=" + }, + { + "id": "io.quarkus.gizmo:gizmo:jar:1.6.1.Final", + "artifactId": "gizmo", + "groupId": "io.quarkus.gizmo", + "version": "1.6.1.Final", + "sha256": "PSqXTZ-3C1O07_u_DAHAyQasl8oSJjqa7x4CMNoq7kw=" + }, + { + "id": "org.ow2.asm:asm-util:jar:9.5", + "artifactId": "asm-util", + "groupId": "org.ow2.asm", + "version": "9.5", + "sha256": "xGfxuzwIiI9HJD4tR1IJs0p3LWJ-RPygZ1Lhi7A4vXQ=" + }, + { + "id": "org.ow2.asm:asm-analysis:jar:9.5", + "artifactId": "asm-analysis", + "groupId": "org.ow2.asm", + "version": "9.5", + "sha256": "OfHPF5EzVwHDsCyueyvCEFfsmlWyJAeJy21VKyssYvo=" + }, + { + "id": "io.quarkus:quarkus-class-change-agent:jar:3.1.0.Final", + "artifactId": "quarkus-class-change-agent", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "V7SZ-RzIyvPRaq5d0ZHy1XakXPUQj4A9ddL1w7XudoY=" + }, + { + "id": "io.quarkus:quarkus-devtools-utilities:jar:3.1.0.Final", + "artifactId": "quarkus-devtools-utilities", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "NuKE-zd3fECO4mvpvFzhZc7GDiR9HX9CagbtOg6aFSU=" + }, + { + "id": "io.quarkus:quarkus-builder:jar:3.1.0.Final", + "artifactId": "quarkus-builder", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "Qqf38rj2P5AaIMRKfnc1tMvyB5UmckU4ELLEu8G4QNU=" + }, + { + "id": "org.junit.platform:junit-platform-launcher:jar:1.9.3", + "artifactId": "junit-platform-launcher", + "groupId": "org.junit.platform", + "version": "1.9.3", + "sha256": "hRXpGAignIya9eNZGFtZkbXna4rc8YW5o9q07I5bqP8=" + }, + { + "id": "io.quarkus:quarkus-bootstrap-maven-resolver:jar:3.1.0.Final", + "artifactId": "quarkus-bootstrap-maven-resolver", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "o0LlJGu7gAZTKiWAlBoYpB6zX5jJw8qdIAwoHfKI3Ww=" + }, + { + "id": "io.smallrye.beanbag:smallrye-beanbag-maven:jar:1.1.0", + "artifactId": "smallrye-beanbag-maven", + "groupId": "io.smallrye.beanbag", + "version": "1.1.0", + "sha256": "9srzaK-4FCXyliCQ6T05cSEaMOm4prykDXaAuV2HgUk=" + }, + { + "id": "io.smallrye.beanbag:smallrye-beanbag-sisu:jar:1.1.0", + "artifactId": "smallrye-beanbag-sisu", + "groupId": "io.smallrye.beanbag", + "version": "1.1.0", + "sha256": "FT2rLdCrWFq-OKRcpoyJthXWgADqlKSuCKNawA-Hf00=" + }, + { + "id": "io.smallrye.beanbag:smallrye-beanbag:jar:1.1.0", + "artifactId": "smallrye-beanbag", + "groupId": "io.smallrye.beanbag", + "version": "1.1.0", + "sha256": "mt8a7XJGt35rq94C8MgN6DjQk0Dvp-5pwV17d5s73MY=" + }, + { + "id": "javax.inject:javax.inject:jar:1", + "artifactId": "javax.inject", + "groupId": "javax.inject", + "version": "1", + "sha256": "kcdwRKUMSBY2wy2Rb9ickRinIZU5BFLIEGUID5V95_8=" + }, + { + "id": "org.apache.maven:maven-artifact:jar:3.9.1", + "artifactId": "maven-artifact", + "groupId": "org.apache.maven", + "version": "3.9.1", + "sha256": "G2c9ds-HdzRMY1DViFM-o5Tdk_6aGyv_MZ2Wyw3edPI=" + }, + { + "id": "org.apache.maven:maven-builder-support:jar:3.9.1", + "artifactId": "maven-builder-support", + "groupId": "org.apache.maven", + "version": "3.9.1", + "sha256": "_-UV0667ouXb5Vgbjv_sQcsDT0CePcF4T9poC9xGAxs=" + }, + { + "id": "org.apache.maven:maven-model:jar:3.9.1", + "artifactId": "maven-model", + "groupId": "org.apache.maven", + "version": "3.9.1", + "sha256": "daSBALi0BXpbGpMFam4yk6cwha2SrQ98QUi28mfd8Hg=" + }, + { + "id": "org.apache.maven:maven-model-builder:jar:3.9.1", + "artifactId": "maven-model-builder", + "groupId": "org.apache.maven", + "version": "3.9.1", + "sha256": "ODiFpM8aGwz5QbtNLcPTvN0lG0a2jAScJ3Ma9QszIpA=" + }, + { + "id": "org.apache.maven:maven-repository-metadata:jar:3.9.1", + "artifactId": "maven-repository-metadata", + "groupId": "org.apache.maven", + "version": "3.9.1", + "sha256": "_kZQXv0VA7pIufdfJU2Z_pCv8mfBP4qq7f3kydg4VNc=" + }, + { + "id": "org.apache.maven:maven-settings:jar:3.9.1", + "artifactId": "maven-settings", + "groupId": "org.apache.maven", + "version": "3.9.1", + "sha256": "Jhf0vPV7ewabkzW76AC-mnDznQxGnj_RrGLk-veK2G4=" + }, + { + "id": "org.apache.maven.resolver:maven-resolver-api:jar:1.9.7", + "artifactId": "maven-resolver-api", + "groupId": "org.apache.maven.resolver", + "version": "1.9.7", + "sha256": "iU6wfqeV83SjA33-6Vg-LSUp1SxkoqH92tiscXSewlI=" + }, + { + "id": "org.apache.maven.resolver:maven-resolver-impl:jar:1.9.7", + "artifactId": "maven-resolver-impl", + "groupId": "org.apache.maven.resolver", + "version": "1.9.7", + "sha256": "6dlbsg2tDt7WXo3ilDBlH_8SGOPhH859AqK9IzcuY4s=" + }, + { + "id": "org.apache.maven.resolver:maven-resolver-named-locks:jar:1.9.7", + "artifactId": "maven-resolver-named-locks", + "groupId": "org.apache.maven.resolver", + "version": "1.9.7", + "sha256": "ZFsfbFnTJTXhGEh5yj-dRumDUiX738T1lfHymRwkHnU=" + }, + { + "id": "org.apache.maven.resolver:maven-resolver-spi:jar:1.9.7", + "artifactId": "maven-resolver-spi", + "groupId": "org.apache.maven.resolver", + "version": "1.9.7", + "sha256": "ddn8IobI5C2r1HLql28QZDLnrnPFtg8EDCuP-7oEN20=" + }, + { + "id": "org.apache.maven.resolver:maven-resolver-util:jar:1.9.7", + "artifactId": "maven-resolver-util", + "groupId": "org.apache.maven.resolver", + "version": "1.9.7", + "sha256": "VRFq5uED5nCv92GqfUfbjTnoVwirY6ddx2QB5g_vPxw=" + }, + { + "id": "org.apache.maven.wagon:wagon-provider-api:jar:3.5.3", + "artifactId": "wagon-provider-api", + "groupId": "org.apache.maven.wagon", + "version": "3.5.3", + "sha256": "XnIAAziUXtPpb45PV40dBnLhr34ZwOkBQZeuWzGvPvQ=" + }, + { + "id": "org.apache.maven.wagon:wagon-http-lightweight:jar:3.5.3", + "artifactId": "wagon-http-lightweight", + "groupId": "org.apache.maven.wagon", + "version": "3.5.3", + "sha256": "mi9pIwcYuGIxG7LUeOC055mr_wB2eSr3wmt5i5kWnCM=" + }, + { + "id": "org.apache.maven.wagon:wagon-http-shared:jar:3.5.3", + "artifactId": "wagon-http-shared", + "groupId": "org.apache.maven.wagon", + "version": "3.5.3", + "sha256": "jn2nZvVRZP3od5qqoSWDJQbChIyrSHa1MFE4hz4oA38=" + }, + { + "id": "org.codehaus.plexus:plexus-interpolation:jar:1.26", + "artifactId": "plexus-interpolation", + "groupId": "org.codehaus.plexus", + "version": "1.26", + "sha256": "s7VBLOF4iRA-pWS838-fs9-lQDRP_qxrU4pzydcYJmI=" + }, + { + "id": "org.codehaus.plexus:plexus-utils:jar:3.5.1", + "artifactId": "plexus-utils", + "groupId": "org.codehaus.plexus", + "version": "3.5.1", + "sha256": "huAlXUyHnGG0gz7X8TEk6LtnnfR967EnMm59t91JoHs=" + }, + { + "id": "org.sonatype.plexus:plexus-cipher:jar:1.7", + "artifactId": "plexus-cipher", + "groupId": "org.sonatype.plexus", + "version": "1.7", + "sha256": "EUhZhh_xD5h7iA1vNOMhUnSvPMkrOnODHITVluN8ZRE=" + }, + { + "id": "org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4", + "artifactId": "plexus-sec-dispatcher", + "groupId": "org.sonatype.plexus", + "version": "1.4", + "sha256": "2nPjK1gTLmTa8SJp_Z0BHAswPyNIQPF5kIclpjK2tXw=" + }, + { + "id": "org.apache.maven:maven-embedder:jar:3.9.1", + "artifactId": "maven-embedder", + "groupId": "org.apache.maven", + "version": "3.9.1", + "sha256": "4fWlcTtwMsUF7NmhlljA6BSKY81tO6XYZBHW8QpUsYo=" + }, + { + "id": "org.apache.maven:maven-core:jar:3.9.1", + "artifactId": "maven-core", + "groupId": "org.apache.maven", + "version": "3.9.1", + "sha256": "eUlEmkNRQ6idMWSJf3P718IAoMPIuVoK9oyB3T6Peug=" + }, + { + "id": "org.codehaus.plexus:plexus-component-annotations:jar:2.1.0", + "artifactId": "plexus-component-annotations", + "groupId": "org.codehaus.plexus", + "version": "2.1.0", + "sha256": "veNhfOm1vPlYQSYEYIAEOvaks7rqQKOxU_Aue7wyrKw=" + }, + { + "id": "org.apache.maven:maven-plugin-api:jar:3.9.1", + "artifactId": "maven-plugin-api", + "groupId": "org.apache.maven", + "version": "3.9.1", + "sha256": "3mGFwQojTCGeCpXotnAsjLsocn_VfAmX2Kl-24n56KM=" + }, + { + "id": "org.apache.maven.shared:maven-shared-utils:jar:3.3.4", + "artifactId": "maven-shared-utils", + "groupId": "org.apache.maven.shared", + "version": "3.3.4", + "sha256": "eSXZxaDiBA0kuPrj9hLrOZy__lg4szujaHd9x73fbdo=" + }, + { + "id": "com.google.inject:guice:jar:5.1.0", + "artifactId": "guice", + "groupId": "com.google.inject", + "version": "5.1.0", + "sha256": "QTDlC_rEgJnIYPDZA7kYYMgaJJyQ84JF-P7Vj8gXvCY=" + }, + { + "id": "aopalliance:aopalliance:jar:1.0", + "artifactId": "aopalliance", + "groupId": "aopalliance", + "version": "1.0", + "sha256": "Ct3sZw_tzT8RPFyAkdeDKA0j9146y4QbYanNsHk3agg=" + }, + { + "id": "com.google.guava:guava:jar:31.1-jre", + "artifactId": "guava", + "groupId": "com.google.guava", + "version": "31.1-jre", + "sha256": "pC7cnKt5Ljn-ObuU8_ymVe0Vf_h6iveOHWulsHxKAKs=" + }, + { + "id": "com.google.guava:failureaccess:jar:1.0.1", + "artifactId": "failureaccess", + "groupId": "com.google.guava", + "version": "1.0.1", + "sha256": "oXHuTHNN0tqDfksWvp30Zhr6typBra8x64Tf2vk2yiY=" + }, + { + "id": "javax.annotation:javax.annotation-api:jar:1.3.2", + "artifactId": "javax.annotation-api", + "groupId": "javax.annotation", + "version": "1.3.2", + "sha256": "4EulGVvNVV3JVlD3zGFNFR5LzVLSmhC4qiGX86uJq5s=" + }, + { + "id": "org.codehaus.plexus:plexus-classworlds:jar:2.6.0", + "artifactId": "plexus-classworlds", + "groupId": "org.codehaus.plexus", + "version": "2.6.0", + "sha256": "Uvd8XsSfeHycQX6-1dbv2ZIvRKIC8hc3bk-UwNdPNUk=" + }, + { + "id": "org.codehaus.plexus:plexus-sec-dispatcher:jar:2.0", + "artifactId": "plexus-sec-dispatcher", + "groupId": "org.codehaus.plexus", + "version": "2.0", + "sha256": "hzE5lgxMeAF23aWAsAOixL-CGIvc5buZI04iTves_Os=" + }, + { + "id": "org.codehaus.plexus:plexus-cipher:jar:2.0", + "artifactId": "plexus-cipher", + "groupId": "org.codehaus.plexus", + "version": "2.0", + "sha256": "mn8bXFqe_9Yerf2HMUUqL3ao55ER-sOR73XqgBvqIDo=" + }, + { + "id": "commons-cli:commons-cli:jar:1.4", + "artifactId": "commons-cli", + "groupId": "commons-cli", + "version": "1.4", + "sha256": "_Tx8lUWpzbIFHR-RVcT3ax5KxaVzBEBKbu21eP-6cyg=" + }, + { + "id": "org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.5", + "artifactId": "org.eclipse.sisu.plexus", + "groupId": "org.eclipse.sisu", + "version": "0.3.5", + "sha256": "fkxhCW1wgm8g96fVXFmlUo56pa0kfuLf5UTk3SX2p4Q=" + }, + { + "id": "org.apache.maven:maven-settings-builder:jar:3.9.1", + "artifactId": "maven-settings-builder", + "groupId": "org.apache.maven", + "version": "3.9.1", + "sha256": "8_gkH_fwkfttwLNG69FyyCD1gliri5YCRp4OMTd_7lU=" + }, + { + "id": "org.apache.maven:maven-resolver-provider:jar:3.9.1", + "artifactId": "maven-resolver-provider", + "groupId": "org.apache.maven", + "version": "3.9.1", + "sha256": "disdXelEKYX8zDivgJPM9TUaY90N9MH_Y3rK3KNPXrM=" + }, + { + "id": "org.apache.maven.resolver:maven-resolver-connector-basic:jar:1.9.7", + "artifactId": "maven-resolver-connector-basic", + "groupId": "org.apache.maven.resolver", + "version": "1.9.7", + "sha256": "untePGywve-5xOSYcc0w3LWex0m85Z-OFXHN9cKPOWM=" + }, + { + "id": "org.apache.maven.resolver:maven-resolver-transport-wagon:jar:1.9.7", + "artifactId": "maven-resolver-transport-wagon", + "groupId": "org.apache.maven.resolver", + "version": "1.9.7", + "sha256": "S-wOg7vnvx6N-IsxyMIyTOArnj6YdQgoT4lTBGgieAs=" + }, + { + "id": "org.apache.maven.wagon:wagon-http:jar:3.5.3", + "artifactId": "wagon-http", + "groupId": "org.apache.maven.wagon", + "version": "3.5.3", + "sha256": "0rbkjJ_L5XnhhYxiLRRGQBH_Jl-m4o55QASmiCFUpQk=" + }, + { + "id": "org.apache.maven.wagon:wagon-file:jar:3.5.3", + "artifactId": "wagon-file", + "groupId": "org.apache.maven.wagon", + "version": "3.5.3", + "sha256": "r8khb6l7eNrSJ7So1NZ7mJe_ETpX-AWY1imThBET4QM=" + }, + { + "id": "io.quarkus:quarkus-bootstrap-gradle-resolver:jar:3.1.0.Final", + "artifactId": "quarkus-bootstrap-gradle-resolver", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "BGNEr2loSacP_slGPqXUhxtrFxqnExTgu2M506XrgWE=" + }, + { + "id": "commons-io:commons-io:jar:2.11.0", + "artifactId": "commons-io", + "groupId": "commons-io", + "version": "2.11.0", + "sha256": "lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=" + }, + { + "id": "io.quarkus:quarkus-junit5-properties:jar:3.1.0.Final", + "artifactId": "quarkus-junit5-properties", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "Z9wmOcN_8Emade_bta40FOODySm8Fhp6v9Uz1oYxPyk=" + }, + { + "id": "org.junit.jupiter:junit-jupiter:jar:5.9.3", + "artifactId": "junit-jupiter", + "groupId": "org.junit.jupiter", + "version": "5.9.3", + "sha256": "Zy4XmLfVM3i_QIy2NPyFbP78F9dB5V8m1ohjg4Y-IYo=" + }, + { + "id": "org.junit.jupiter:junit-jupiter-api:jar:5.9.3", + "artifactId": "junit-jupiter-api", + "groupId": "org.junit.jupiter", + "version": "5.9.3", + "sha256": "2JXj7t9PobEN4xqRvlWjAbswe_GO8yWz-l2z-A7pLRw=" + }, + { + "id": "org.opentest4j:opentest4j:jar:1.2.0", + "artifactId": "opentest4j", + "groupId": "org.opentest4j", + "version": "1.2.0", + "sha256": "WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=" + }, + { + "id": "org.junit.platform:junit-platform-commons:jar:1.9.3", + "artifactId": "junit-platform-commons", + "groupId": "org.junit.platform", + "version": "1.9.3", + "sha256": "hRkVffgTwhDoX8FBS3QQnj2F9D1wklY-1wTEPEjw1eY=" + }, + { + "id": "org.apiguardian:apiguardian-api:jar:1.1.2", + "artifactId": "apiguardian-api", + "groupId": "org.apiguardian", + "version": "1.1.2", + "sha256": "tQlEisUG1gcxnxglN_CzXXEAdYLsdBgyofER5bW3Czg=" + }, + { + "id": "org.junit.jupiter:junit-jupiter-params:jar:5.9.3", + "artifactId": "junit-jupiter-params", + "groupId": "org.junit.jupiter", + "version": "5.9.3", + "sha256": "KvKC_pHlZJXAO4TpyucC6qIS_C9qMf2deeMcy2TNgf0=" + }, + { + "id": "org.junit.jupiter:junit-jupiter-engine:jar:5.9.3", + "artifactId": "junit-jupiter-engine", + "groupId": "org.junit.jupiter", + "version": "5.9.3", + "sha256": "tV4wSxzS6PEWwat3pdw-yoxNm0amnghLY6ylHN61Xw8=" + }, + { + "id": "org.junit.platform:junit-platform-engine:jar:1.9.3", + "artifactId": "junit-platform-engine", + "groupId": "org.junit.platform", + "version": "1.9.3", + "sha256": "DDlVPZoDUQdXIn9aHGzGUwKHsaMh7WJYRQZkh0qioWo=" + }, + { + "id": "com.thoughtworks.xstream:xstream:jar:1.4.20", + "artifactId": "xstream", + "groupId": "com.thoughtworks.xstream", + "version": "1.4.20", + "sha256": "h98PC-V8kgN9ARD7siWjC2UXAtwnVlPSha_P7zG8LoE=" + }, + { + "id": "io.github.x-stream:mxparser:jar:1.2.2", + "artifactId": "mxparser", + "groupId": "io.github.x-stream", + "version": "1.2.2", + "sha256": "ru7iOjMD2BG8qHkOp_JbU0MUhhwDz_Ntr9zCGAlp65c=" + }, + { + "id": "xmlpull:xmlpull:jar:1.1.3.1", + "artifactId": "xmlpull", + "groupId": "xmlpull", + "version": "1.1.3.1", + "sha256": "NOCO5iEWBxy7acDtcNFaelsgjWJ5jFnyEgu4kpMky2M=" + }, + { + "id": "io.rest-assured:rest-assured:jar:5.3.0", + "artifactId": "rest-assured", + "groupId": "io.rest-assured", + "version": "5.3.0", + "sha256": "4VmnWMCH6gISGmoR2AbK1i_-NE7N72GDiGDoYPPlCW4=" + }, + { + "id": "org.apache.groovy:groovy:jar:4.0.6", + "artifactId": "groovy", + "groupId": "org.apache.groovy", + "version": "4.0.6", + "sha256": "lZHPVTfKvV04czilbcS3btHQJg-_S2kRYJirVEGcbx8=" + }, + { + "id": "org.apache.groovy:groovy-xml:jar:4.0.6", + "artifactId": "groovy-xml", + "groupId": "org.apache.groovy", + "version": "4.0.6", + "sha256": "IvN6adrRk_9xYY3F84cNM05wJxq74HeyYmURO04sRuc=" + }, + { + "id": "org.apache.httpcomponents:httpclient:jar:4.5.14", + "artifactId": "httpclient", + "groupId": "org.apache.httpcomponents", + "version": "4.5.14", + "sha256": "yLx-HFGm1M5y9A0uu6vxxLaL_nbnMhBLBDgbSTR46dY=" + }, + { + "id": "org.apache.httpcomponents:httpcore:jar:4.4.16", + "artifactId": "httpcore", + "groupId": "org.apache.httpcomponents", + "version": "4.4.16", + "sha256": "bJs90UKgncRo4jrTmq1vdaDyuFElEERp8CblKkdORk8=" + }, + { + "id": "commons-codec:commons-codec:jar:1.15", + "artifactId": "commons-codec", + "groupId": "commons-codec", + "version": "1.15", + "sha256": "s-n21jp5AQm_DQVmEfvtHPaQVYJt7-uYlKcTadJG7WM=" + }, + { + "id": "org.apache.httpcomponents:httpmime:jar:4.5.14", + "artifactId": "httpmime", + "groupId": "org.apache.httpcomponents", + "version": "4.5.14", + "sha256": "1AEkPVxurpKKNxIbboGRWMjDLqBYR5PnKFu0iasqPRc=" + }, + { + "id": "org.hamcrest:hamcrest:jar:2.1", + "artifactId": "hamcrest", + "groupId": "org.hamcrest", + "version": "2.1", + "sha256": "upOy46ViMiukMvChtTrdzFXLGIJTMZoCDtd_gk5pIFA=" + }, + { + "id": "org.ccil.cowan.tagsoup:tagsoup:jar:1.2.1", + "artifactId": "tagsoup", + "groupId": "org.ccil.cowan.tagsoup", + "version": "1.2.1", + "sha256": "rJf3tLHY6TN-36DjQET40O_nIj9q2POoXVTMEBjqLgQ=" + }, + { + "id": "io.rest-assured:json-path:jar:5.3.0", + "artifactId": "json-path", + "groupId": "io.rest-assured", + "version": "5.3.0", + "sha256": "4zbLjZ20HIzkILDXbTNWxa72HKycahGMJKwMz-MN9qk=" + }, + { + "id": "org.apache.groovy:groovy-json:jar:4.0.6", + "artifactId": "groovy-json", + "groupId": "org.apache.groovy", + "version": "4.0.6", + "sha256": "myTBLoRJhMPXn-TU_iUG5XFJ5DPARb4T80TYEtLDNe8=" + }, + { + "id": "io.rest-assured:rest-assured-common:jar:5.3.0", + "artifactId": "rest-assured-common", + "groupId": "io.rest-assured", + "version": "5.3.0", + "sha256": "CnfHX353_wGexnusYTJb_0ulcC2Bp9azk-opvQYi3vw=" + }, + { + "id": "io.rest-assured:xml-path:jar:5.3.0", + "artifactId": "xml-path", + "groupId": "io.rest-assured", + "version": "5.3.0", + "sha256": "pFZuPS2t-0-iPb8N8TwwIQ9KxBPzn-rBxmiGkaIWaw4=" + }, + { + "id": "io.quarkus:quarkus-junit5-mockito:jar:3.1.0.Final", + "artifactId": "quarkus-junit5-mockito", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "m_A-_q5hEEwOdKwrQyjXy2sgAycts0vFOXsQYrT7JDU=" + }, + { + "id": "io.quarkus:quarkus-junit5-mockito-config:jar:3.1.0.Final", + "artifactId": "quarkus-junit5-mockito-config", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "QEezby3GQjgcnBoeAITtu-vuT5OxsPh69Ba4D3W6oH4=" + }, + { + "id": "io.quarkus:quarkus-arc-deployment:jar:3.1.0.Final", + "artifactId": "quarkus-arc-deployment", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "6bx4ms6M4Mm24qWi-Q0Xj2UpekAJ_SVIpq38iFcrJEc=" + }, + { + "id": "io.quarkus:quarkus-smallrye-context-propagation-spi:jar:3.1.0.Final", + "artifactId": "quarkus-smallrye-context-propagation-spi", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "vMBQ_jnsgFuUGpGaCdu8JZgu55Msdptale9s7ep6TJ8=" + }, + { + "id": "io.quarkus:quarkus-vertx-http-dev-console-spi:jar:3.1.0.Final", + "artifactId": "quarkus-vertx-http-dev-console-spi", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "FiMGXbIxBzlCZzqjcwvg6S-1Vq4Z3p32BebvqlY4MGY=" + }, + { + "id": "io.quarkus:quarkus-vertx-http-dev-ui-spi:jar:3.1.0.Final", + "artifactId": "quarkus-vertx-http-dev-ui-spi", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "diRRF-W-SoGsRVrRSlXC4cOSSrLY65W9Fk0rvQf5q8E=" + }, + { + "id": "io.quarkus.arc:arc-processor:jar:3.1.0.Final", + "artifactId": "arc-processor", + "groupId": "io.quarkus.arc", + "version": "3.1.0.Final", + "sha256": "dclA1WfYBRlGJL8R9Dwy-wGKMBnIjOMb4Qz_ts3ZuSc=" + }, + { + "id": "org.mockito:mockito-subclass:jar:5.3.1", + "artifactId": "mockito-subclass", + "groupId": "org.mockito", + "version": "5.3.1", + "sha256": "fhxMciD8O89i4H5Aq8rn3DHQF8Rc_qiKxsg2lfLlGEo=" + }, + { + "id": "io.quarkus:quarkus-mutiny:jar:3.1.0.Final", + "artifactId": "quarkus-mutiny", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "g1IMlJGeXX_XSkrUEhYeOKA8F1PjLCMicQoetGDztfs=" + }, + { + "id": "io.quarkus:quarkus-smallrye-context-propagation:jar:3.1.0.Final", + "artifactId": "quarkus-smallrye-context-propagation", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "FPjAZf46X79Aqhb5BkPWcEZQcQ0f-pNQG9EpJrRwyyA=" + }, + { + "id": "io.smallrye:smallrye-context-propagation:jar:2.1.0", + "artifactId": "smallrye-context-propagation", + "groupId": "io.smallrye", + "version": "2.1.0", + "sha256": "mudqxaICUFD5ng1BwVv6eVfYqERYqtM7eaNwrQYnHBo=" + }, + { + "id": "io.smallrye:smallrye-context-propagation-api:jar:2.1.0", + "artifactId": "smallrye-context-propagation-api", + "groupId": "io.smallrye", + "version": "2.1.0", + "sha256": "F2_yFsVyPQ-aGNswPfrtzzuYi077Cn4OVu2Ld1YfLIk=" + }, + { + "id": "io.smallrye:smallrye-context-propagation-storage:jar:2.1.0", + "artifactId": "smallrye-context-propagation-storage", + "groupId": "io.smallrye", + "version": "2.1.0", + "sha256": "BaFJvAxKV73abzKF5Flz1kxg86MCYdYD0a8hLy_Gd1s=" + }, + { + "id": "io.smallrye.reactive:mutiny-smallrye-context-propagation:jar:2.1.0", + "artifactId": "mutiny-smallrye-context-propagation", + "groupId": "io.smallrye.reactive", + "version": "2.1.0", + "sha256": "NO4pU_LvoHyBulXKRDwiP3DiNYaJi4q_4eV11oXF82A=" + }, + { + "id": "io.quarkus:quarkus-panache-mock:jar:3.1.0.Final", + "artifactId": "quarkus-panache-mock", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "fGgTDvxRCi-PSV1FnRI2KPDSSS-qru8psEv3K-z2CA0=" + }, + { + "id": "io.quarkus:quarkus-panache-common-deployment:jar:3.1.0.Final", + "artifactId": "quarkus-panache-common-deployment", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "xr6qfi01YejWVQoigkr_kkIu_80uSSr-UQj31BU_fmo=" + }, + { + "id": "org.ow2.asm:asm:jar:9.5", + "artifactId": "asm", + "groupId": "org.ow2.asm", + "version": "9.5", + "sha256": "ti6EtZgHKXUbBFjFNM8TZvcnVCu40VhiEzVoKkYPA1M=" + }, + { + "id": "org.mockito:mockito-core:jar:5.3.1", + "artifactId": "mockito-core", + "groupId": "org.mockito", + "version": "5.3.1", + "sha256": "N_TbrtJf-mve2rp4dGxEniJLEF1W_O3uh1WTZkLZkqg=" + }, + { + "id": "net.bytebuddy:byte-buddy:jar:1.12.18", + "artifactId": "byte-buddy", + "groupId": "net.bytebuddy", + "version": "1.12.18", + "sha256": "OSAME6craj9OxDx7bS-3jsvrJcKemG9O-lcmNrOddQ4=" + }, + { + "id": "net.bytebuddy:byte-buddy-agent:jar:1.14.4", + "artifactId": "byte-buddy-agent", + "groupId": "net.bytebuddy", + "version": "1.14.4", + "sha256": "-9GrPbQ8bHi4gEkIy5W2VlF_XILn_ejSVdi9zu9BLXA=" + }, + { + "id": "org.objenesis:objenesis:jar:3.3", + "artifactId": "objenesis", + "groupId": "org.objenesis", + "version": "3.3", + "sha256": "At_QsEOaVZHjW3CO0vVHTrCUj1Or90Y36Vm45O9pv-s=" + }, + { + "id": "io.quarkus:quarkus-jacoco:jar:3.1.0.Final", + "artifactId": "quarkus-jacoco", + "groupId": "io.quarkus", + "version": "3.1.0.Final", + "sha256": "Bkp09d9s7IShUzB_MPI6KnUVIcE9c0tVeTS3WyV79qs=" + }, + { + "id": "org.jacoco:org.jacoco.core:jar:0.8.10", + "artifactId": "org.jacoco.core", + "groupId": "org.jacoco", + "version": "0.8.10", + "sha256": "54lmfZOnUDk47peK5Pu8mhvM2jtUYpmyTYVQ2BbYDgg=" + }, + { + "id": "org.ow2.asm:asm-tree:jar:9.5", + "artifactId": "asm-tree", + "groupId": "org.ow2.asm", + "version": "9.5", + "sha256": "PDOmSBkQea6urrfBmkmxU5UvnkD-hvusUgVVTd2azZQ=" + }, + { + "id": "org.jacoco:org.jacoco.report:jar:0.8.10", + "artifactId": "org.jacoco.report", + "groupId": "org.jacoco", + "version": "0.8.10", + "sha256": "PjXBT3hTx8iNvgTPCG7gU6Vzn0GemACZCbvt7N3d1Qw=" + }, + { + "id": "org.jacoco:org.jacoco.agent:jar:0.8.10", + "artifactId": "org.jacoco.agent", + "groupId": "org.jacoco", + "version": "0.8.10", + "sha256": "MtYiEcCjI_UIIqdQpkfBIrKxtVn2NTPqLjJMAyQ4E3A=" + }, + { + "id": "org.jacoco:org.jacoco.agent:jar:runtime:0.8.10", + "artifactId": "org.jacoco.agent", + "groupId": "org.jacoco", + "version": "0.8.10", + "sha256": "QNJZl95MYldpv10Sg-uFW4fJyu9MofoDuO8LdSuktUo=" + }, + { + "id": "org.ow2.asm:asm-commons:jar:9.5", + "artifactId": "asm-commons", + "groupId": "org.ow2.asm", + "version": "9.5", + "sha256": "cu7p-6-53o2UY_IN1YSkjO635RUq1MmHv74X3UgRya4=" + }, + { + "id": "org.testcontainers:redpanda:jar:1.18.1", + "artifactId": "redpanda", + "groupId": "org.testcontainers", + "version": "1.18.1", + "sha256": "JUpiqtCtmAp5evdD4lkYS2wvUaSgSYmMVSD6JR6oh5k=" + }, + { + "id": "org.awaitility:awaitility:jar:4.2.0", + "artifactId": "awaitility", + "groupId": "org.awaitility", + "version": "4.2.0", + "sha256": "LSO3khH90ZA29pQMx4NUN3kyCq-G841uOFov8m2kEnI=" + }, + { + "id": "com.nimbusds:nimbus-jose-jwt:jar:9.31", + "artifactId": "nimbus-jose-jwt", + "groupId": "com.nimbusds", + "version": "9.31", + "sha256": "4NHZvq_efr1GtpJGv_1z3LM0CepKt7kaxWIrHmdm804=" + }, + { + "id": "com.github.stephenc.jcip:jcip-annotations:jar:1.0-1", + "artifactId": "jcip-annotations", + "groupId": "com.github.stephenc.jcip", + "version": "1.0-1", + "sha256": "T8z_g4Kq_FiZYsTtsmL2qlleNPHhHmEFfRxqluj8cyM=" + } + ] +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 447536c..5f8d2a8 100644 --- a/pom.xml +++ b/pom.xml @@ -11,15 +11,23 @@ ${java.version} ${java.version} ${java.version} - 3.8.1 - 3.0.0-M7 + 3.11.0 + 3.0.0 + 3.9.1.2184 UTF-8 UTF-8 quarkus-bom io.quarkus.platform 3.1.0.Final - 2.0.1 true + 1.1.1 + 2.0.2 + https://sonarcloud.io:443/ + pagopa + pagopa_mil-preset + true + 300 + target/jacoco-report/jacoco.xml @@ -73,6 +81,7 @@ io.quarkus quarkus-container-image-docker + test io.quarkus @@ -133,6 +142,18 @@ test + + + github + https://maven.pkg.github.com/pagopa/mil-common + + + + + github + https://maven.pkg.github.com/pagopa/depcheck + + @@ -195,46 +216,27 @@ + + it.pagopa.maven + depcheck + ${depcheck-plugin.version} + + + validate + + verify + + + + + dep-sha256.json + false + false + + - - - - bootstrap - - - bootstrap - - - - - - org.apache.maven.plugins - maven-scm-plugin - 2.0.0-M3 - - ${maven.home} - install - - - - clone_and_install_mil-common - validate - - scm:git:/~https://github.com/pagopa/mil-common.git - tag - ${common.version} - - - bootstrap - - - - - - - native @@ -247,31 +249,31 @@ native + + + - coverage + validate + + + validate + + + - org.jacoco - jacoco-maven-plugin - 0.8.8 + org.sonarsource.scanner.maven + sonar-maven-plugin + ${sonar-plugin.version} - prepare-agent - - prepare-agent - - - - report + sca_with_sonar + + test - report + sonar - - - XML - - diff --git a/src/main/docker/Dockerfile.jvm b/src/main/docker/Dockerfile.jvm deleted file mode 100644 index dc889bf..0000000 --- a/src/main/docker/Dockerfile.jvm +++ /dev/null @@ -1,95 +0,0 @@ -#### -# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode -# -# Before building the container image run: -# -# ./mvnw package -# -# Then, build the image with: -# -# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/code-with-quarkus-jvm . -# -# Then run the container using: -# -# docker run -i --rm -p 8080:8080 quarkus/code-with-quarkus-jvm -# -# If you want to include the debug port into your docker image -# you will have to expose the debug port (default 5005 being the default) like this : EXPOSE 8080 5005. -# Additionally you will have to set -e JAVA_DEBUG=true and -e JAVA_DEBUG_PORT=*:5005 -# when running the container -# -# Then run the container using : -# -# docker run -i --rm -p 8080:8080 quarkus/code-with-quarkus-jvm -# -# This image uses the `run-java.sh` script to run the application. -# This scripts computes the command line to execute your Java application, and -# includes memory/GC tuning. -# You can configure the behavior using the following environment properties: -# - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class") -# - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options -# in JAVA_OPTS (example: "-Dsome.property=foo") -# - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is -# used to calculate a default maximal heap memory based on a containers restriction. -# If used in a container without any memory constraints for the container then this -# option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio -# of the container available memory as set here. The default is `50` which means 50% -# of the available memory is used as an upper boundary. You can skip this mechanism by -# setting this value to `0` in which case no `-Xmx` option is added. -# - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This -# is used to calculate a default initial heap memory based on the maximum heap memory. -# If used in a container without any memory constraints for the container then this -# option has no effect. If there is a memory constraint then `-Xms` is set to a ratio -# of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx` -# is used as the initial heap size. You can skip this mechanism by setting this value -# to `0` in which case no `-Xms` option is added (example: "25") -# - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS. -# This is used to calculate the maximum value of the initial heap memory. If used in -# a container without any memory constraints for the container then this option has -# no effect. If there is a memory constraint then `-Xms` is limited to the value set -# here. The default is 4096MB which means the calculated value of `-Xms` never will -# be greater than 4096MB. The value of this variable is expressed in MB (example: "4096") -# - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output -# when things are happening. This option, if set to true, will set -# `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true"). -# - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example: -# true"). -# - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787"). -# - CONTAINER_CORE_LIMIT: A calculated core limit as described in -# https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2") -# - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024"). -# - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion. -# (example: "20") -# - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking. -# (example: "40") -# - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection. -# (example: "4") -# - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus -# previous GC times. (example: "90") -# - GC_METASPACE_SIZE: The initial metaspace size. (example: "20") -# - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100") -# - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should -# contain the necessary JRE command-line options to specify the required GC, which -# will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC). -# - HTTPS_PROXY: The location of the https proxy. (example: "myuser@127.0.0.1:8080") -# - HTTP_PROXY: The location of the http proxy. (example: "myuser@127.0.0.1:8080") -# - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be -# accessed directly. (example: "foo.example.com,bar.example.com") -# -### -FROM registry.access.redhat.com/ubi8/openjdk-17:1.14 - -ENV LANGUAGE='en_US:en' - - -# We make four distinct layers so if there are application changes the library layers can be re-used -COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/ -COPY --chown=185 target/quarkus-app/*.jar /deployments/ -COPY --chown=185 target/quarkus-app/app/ /deployments/app/ -COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/ - -EXPOSE 8080 -USER 185 -ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" -ENV JAVA_APP_JAR="/deployments/quarkus-run.jar" - diff --git a/src/main/docker/Dockerfile.legacy-jar b/src/main/docker/Dockerfile.legacy-jar deleted file mode 100644 index 0d4ff83..0000000 --- a/src/main/docker/Dockerfile.legacy-jar +++ /dev/null @@ -1,91 +0,0 @@ -#### -# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode -# -# Before building the container image run: -# -# ./mvnw package -Dquarkus.package.type=legacy-jar -# -# Then, build the image with: -# -# docker build -f src/main/docker/Dockerfile.legacy-jar -t quarkus/code-with-quarkus-legacy-jar . -# -# Then run the container using: -# -# docker run -i --rm -p 8080:8080 quarkus/code-with-quarkus-legacy-jar -# -# If you want to include the debug port into your docker image -# you will have to expose the debug port (default 5005 being the default) like this : EXPOSE 8080 5005. -# Additionally you will have to set -e JAVA_DEBUG=true and -e JAVA_DEBUG_PORT=*:5005 -# when running the container -# -# Then run the container using : -# -# docker run -i --rm -p 8080:8080 quarkus/code-with-quarkus-legacy-jar -# -# This image uses the `run-java.sh` script to run the application. -# This scripts computes the command line to execute your Java application, and -# includes memory/GC tuning. -# You can configure the behavior using the following environment properties: -# - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class") -# - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options -# in JAVA_OPTS (example: "-Dsome.property=foo") -# - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is -# used to calculate a default maximal heap memory based on a containers restriction. -# If used in a container without any memory constraints for the container then this -# option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio -# of the container available memory as set here. The default is `50` which means 50% -# of the available memory is used as an upper boundary. You can skip this mechanism by -# setting this value to `0` in which case no `-Xmx` option is added. -# - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This -# is used to calculate a default initial heap memory based on the maximum heap memory. -# If used in a container without any memory constraints for the container then this -# option has no effect. If there is a memory constraint then `-Xms` is set to a ratio -# of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx` -# is used as the initial heap size. You can skip this mechanism by setting this value -# to `0` in which case no `-Xms` option is added (example: "25") -# - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS. -# This is used to calculate the maximum value of the initial heap memory. If used in -# a container without any memory constraints for the container then this option has -# no effect. If there is a memory constraint then `-Xms` is limited to the value set -# here. The default is 4096MB which means the calculated value of `-Xms` never will -# be greater than 4096MB. The value of this variable is expressed in MB (example: "4096") -# - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output -# when things are happening. This option, if set to true, will set -# `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true"). -# - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example: -# true"). -# - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787"). -# - CONTAINER_CORE_LIMIT: A calculated core limit as described in -# https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2") -# - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024"). -# - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion. -# (example: "20") -# - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking. -# (example: "40") -# - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection. -# (example: "4") -# - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus -# previous GC times. (example: "90") -# - GC_METASPACE_SIZE: The initial metaspace size. (example: "20") -# - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100") -# - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should -# contain the necessary JRE command-line options to specify the required GC, which -# will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC). -# - HTTPS_PROXY: The location of the https proxy. (example: "myuser@127.0.0.1:8080") -# - HTTP_PROXY: The location of the http proxy. (example: "myuser@127.0.0.1:8080") -# - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be -# accessed directly. (example: "foo.example.com,bar.example.com") -# -### -FROM registry.access.redhat.com/ubi8/openjdk-17:1.14 - -ENV LANGUAGE='en_US:en' - - -COPY target/lib/* /deployments/lib/ -COPY target/*-runner.jar /deployments/quarkus-run.jar - -EXPOSE 8080 -USER 185 -ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" -ENV JAVA_APP_JAR="/deployments/quarkus-run.jar" diff --git a/src/main/docker/Dockerfile.native b/src/main/docker/Dockerfile.native deleted file mode 100644 index 4e076cf..0000000 --- a/src/main/docker/Dockerfile.native +++ /dev/null @@ -1,27 +0,0 @@ -#### -# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode. -# -# Before building the container image run: -# -# ./mvnw package -Pnative -# -# Then, build the image with: -# -# docker build -f src/main/docker/Dockerfile.native -t quarkus/code-with-quarkus . -# -# Then run the container using: -# -# docker run -i --rm -p 8080:8080 quarkus/code-with-quarkus -# -### -FROM registry.access.redhat.com/ubi8/ubi-minimal:8.6 -WORKDIR /work/ -RUN chown 1001 /work \ - && chmod "g+rwX" /work \ - && chown 1001:root /work -COPY --chown=1001:root target/*-runner /work/application - -EXPOSE 8080 -USER 1001 - -CMD ["./application", "-Dquarkus.http.host=0.0.0.0"] diff --git a/src/main/docker/Dockerfile.native-micro b/src/main/docker/Dockerfile.native-micro index 40afb1a..df1619c 100644 --- a/src/main/docker/Dockerfile.native-micro +++ b/src/main/docker/Dockerfile.native-micro @@ -1,23 +1,4 @@ -#### -# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode. -# It uses a micro base image, tuned for Quarkus native executables. -# It reduces the size of the resulting container image. -# Check https://quarkus.io/guides/quarkus-runtime-base-image for further information about this image. -# -# Before building the container image run: -# -# ./mvnw package -Pnative -# -# Then, build the image with: -# -# docker build -f src/main/docker/Dockerfile.native-micro -t quarkus/code-with-quarkus . -# -# Then run the container using: -# -# docker run -i --rm -p 8080:8080 quarkus/code-with-quarkus -# -### -FROM quay.io/quarkus/quarkus-micro-image:2.0 +FROM quay.io/quarkus/quarkus-micro-image@sha256:a9182e3618935ab7decb6ec0a7cdd2dd60288ea4a61e0c08c8c486fff42696e8 WORKDIR /work/ RUN chown 1001 /work \ && chmod "g+rwX" /work \ diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index c48129a..8a58661 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -60,10 +60,10 @@ mp.messaging.incoming.presets.group.id=preset-processor %test.kafka.bootstrap.servers=localhost:2024 quarkus.kafka.devservices.enabled=false -%prod.kafka.bootstrap.servers=${kafka-bootstrap-server} -%prod.kafka.security.protocol=${kafka-security-protocol} -%prod.kafka.sasl.mechanism=${kafka-sasl-mechanism} -%prod.kafka.sasl.jaas.config=${kafka-sasl-jaas-config} +#%prod.kafka.bootstrap.servers=${kafka-connection-string-1},${kafka-connection-string-2} +%prod.kafka.security.protocol=SASL_SSL +%prod.kafka.sasl.mechanism=PLAIN +%prod.kafka.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="${kafka-connection-string-1}"; # ------------------------------------------------------------------------------ # JWT RBAC configurations diff --git a/src/main/terraform/identity/01_data.tf b/src/main/terraform/identity/01_data.tf new file mode 100644 index 0000000..b20299c --- /dev/null +++ b/src/main/terraform/identity/01_data.tf @@ -0,0 +1,18 @@ +data "azurerm_storage_account" "tfstate_app" { + name = "tfapp${lower(replace(data.azurerm_subscription.current.display_name, "-", ""))}" + resource_group_name = "terraform-state-rg" +} + +data "azurerm_storage_account" "tfstate_inf" { + name = "tfinf${lower(replace(data.azurerm_subscription.current.display_name, "-", ""))}" + resource_group_name = "terraform-state-rg" +} + +data "azurerm_resource_group" "github_runner_rg" { + name = "${local.project}-github-runner-rg" +} + +data "github_organization_teams" "all" { + root_teams_only = true + summary_only = true +} diff --git a/src/main/terraform/identity/02_application_environment_cd.tf b/src/main/terraform/identity/02_application_environment_cd.tf new file mode 100644 index 0000000..cb76679 --- /dev/null +++ b/src/main/terraform/identity/02_application_environment_cd.tf @@ -0,0 +1,31 @@ +resource "azuread_application" "environment_cd" { + display_name = "${local.app_name}-cd" +} + +resource "azuread_service_principal" "environment_cd" { + application_id = azuread_application.environment_cd.application_id +} + +resource "azuread_application_federated_identity_credential" "environment_cd" { + application_object_id = azuread_application.environment_cd.object_id + display_name = "github-federated" + description = "github-federated" + audiences = ["api://AzureADTokenExchange"] + issuer = "https://token.actions.githubusercontent.com" + subject = "repo:${var.github.org}/${var.github.repository}:environment:${var.env}-cd" +} + +resource "azurerm_role_assignment" "environment_cd_subscription" { + scope = data.azurerm_subscription.current.id + role_definition_name = "Contributor" + principal_id = azuread_service_principal.environment_cd.object_id +} + +output "azure_environment_cd" { + value = { + app_name = "${local.app_name}-cd" + client_id = azuread_service_principal.environment_cd.application_id + application_id = azuread_service_principal.environment_cd.application_id + object_id = azuread_service_principal.environment_cd.object_id + } +} diff --git a/src/main/terraform/identity/03_github_environment_cd.tf b/src/main/terraform/identity/03_github_environment_cd.tf new file mode 100644 index 0000000..194aaf3 --- /dev/null +++ b/src/main/terraform/identity/03_github_environment_cd.tf @@ -0,0 +1,60 @@ +resource "github_repository_environment" "github_repository_environment_cd" { + environment = "${var.env}-cd" + repository = var.github.repository + # filter teams reviewers from github_organization_teams + # if reviewers_teams is null no reviewers will be configured for environment + dynamic "reviewers" { + for_each = (var.github_repository_environment_cd.reviewers_teams == null ? [] : [1]) + content { + teams = matchkeys( + data.github_organization_teams.all.teams.*.id, + data.github_organization_teams.all.teams.*.name, + var.github_repository_environment_cd.reviewers_teams + ) + } + } + deployment_branch_policy { + protected_branches = var.github_repository_environment_cd.protected_branches + custom_branch_policies = var.github_repository_environment_cd.custom_branch_policies + } +} + +#tfsec:ignore:github-actions-no-plain-text-action-secrets # not real secret +resource "github_actions_environment_secret" "azure_cd_tenant_id" { + repository = var.github.repository + environment = "${var.env}-cd" + secret_name = "AZURE_TENANT_ID" + plaintext_value = data.azurerm_client_config.current.tenant_id +} + +#tfsec:ignore:github-actions-no-plain-text-action-secrets # not real secret +resource "github_actions_environment_secret" "azure_cd_subscription_id" { + repository = var.github.repository + environment = "${var.env}-cd" + secret_name = "AZURE_SUBSCRIPTION_ID" + plaintext_value = data.azurerm_subscription.current.subscription_id +} + +#tfsec:ignore:github-actions-no-plain-text-action-secrets # not real secret +resource "github_actions_environment_secret" "azure_cd_client_id" { + repository = var.github.repository + environment = "${var.env}-cd" + secret_name = "AZURE_CLIENT_ID" + plaintext_value = azuread_service_principal.environment_cd.application_id +} + +#tfsec:ignore:github-actions-no-plain-text-action-secrets # not real secret +resource "github_actions_environment_secret" "azure_cd_container_app_environment_name" { + repository = var.github.repository + environment = "${var.env}-cd" + secret_name = "AZURE_CONTAINER_APP_ENVIRONMENT_NAME" + plaintext_value = "${local.project}-cae" +} + +#tfsec:ignore:github-actions-no-plain-text-action-secrets # not real secret +resource "github_actions_environment_secret" "azure_cd_resource_group_name" { + repository = var.github.repository + environment = "${var.env}-cd" + secret_name = "AZURE_RESOURCE_GROUP_NAME" + plaintext_value = "${local.project}-app-rg" +} diff --git a/src/main/terraform/identity/99_locals.tf b/src/main/terraform/identity/99_locals.tf new file mode 100644 index 0000000..d311dca --- /dev/null +++ b/src/main/terraform/identity/99_locals.tf @@ -0,0 +1,4 @@ +locals { + project = "${var.prefix}-${var.env_short}" + app_name = "github-${var.github.org}-${var.github.repository}-${var.env}" +} diff --git a/src/main/terraform/identity/99_main.tf b/src/main/terraform/identity/99_main.tf new file mode 100644 index 0000000..9d51c34 --- /dev/null +++ b/src/main/terraform/identity/99_main.tf @@ -0,0 +1,32 @@ +terraform { + required_version = ">=1.3.0" + + required_providers { + azuread = { + source = "hashicorp/azuread" + version = "2.30.0" + } + azurerm = { + source = "hashicorp/azurerm" + version = "3.33.0" + } + github = { + source = "integrations/github" + version = "5.12.0" + } + } + + backend "azurerm" {} +} + +provider "azurerm" { + features {} +} + +provider "github" { + owner = var.github.org +} + +data "azurerm_subscription" "current" {} + +data "azurerm_client_config" "current" {} diff --git a/src/main/terraform/identity/99_main.tf.ci b/src/main/terraform/identity/99_main.tf.ci new file mode 100644 index 0000000..d04ea52 --- /dev/null +++ b/src/main/terraform/identity/99_main.tf.ci @@ -0,0 +1,30 @@ +terraform { + required_version = ">=1.3.0" + + required_providers { + azuread = { + source = "hashicorp/azuread" + version = "2.30.0" + } + azurerm = { + source = "hashicorp/azurerm" + version = "3.33.0" + } + github = { + source = "integrations/github" + version = "5.12.0" + } + } +} + +provider "azurerm" { + features {} +} + +provider "github" { + owner = var.github.org +} + +data "azurerm_subscription" "current" {} + +data "azurerm_client_config" "current" {} diff --git a/src/main/terraform/identity/99_outputs.tf b/src/main/terraform/identity/99_outputs.tf new file mode 100644 index 0000000..468f12d --- /dev/null +++ b/src/main/terraform/identity/99_outputs.tf @@ -0,0 +1,7 @@ +output "tenant_id" { + value = data.azurerm_client_config.current.tenant_id +} + +output "subscription_id" { + value = data.azurerm_subscription.current.subscription_id +} diff --git a/src/main/terraform/identity/99_variables.tf b/src/main/terraform/identity/99_variables.tf new file mode 100644 index 0000000..6365cab --- /dev/null +++ b/src/main/terraform/identity/99_variables.tf @@ -0,0 +1,51 @@ +variable "prefix" { + type = string + validation { + condition = ( + length(var.prefix) <= 6 + ) + error_message = "Max length is 6 chars." + } +} + +variable "env" { + type = string + description = "Environment" +} + +variable "env_short" { + type = string + validation { + condition = ( + length(var.env_short) <= 1 + ) + error_message = "Max length is 1 chars." + } +} + +variable "github" { + type = object({ + org = string + repository = string + }) + description = "GitHub Organization and repository name" + default = { + org = "pagopa" + repository = "mil-preset" + } +} + +variable "github_token" { + type = string + sensitive = true + description = "GitHub Organization and repository name" +} + +variable "github_repository_environment_cd" { + type = object({ + protected_branches = bool + custom_branch_policies = bool + reviewers_teams = list(string) + }) + description = "GitHub Continous Integration roles" +} diff --git a/src/main/terraform/identity/env/dev/backend.ini b/src/main/terraform/identity/env/dev/backend.ini new file mode 100644 index 0000000..56e9127 --- /dev/null +++ b/src/main/terraform/identity/env/dev/backend.ini @@ -0,0 +1 @@ +subscription=dev-mil diff --git a/src/main/terraform/identity/env/dev/backend.tfvars b/src/main/terraform/identity/env/dev/backend.tfvars new file mode 100644 index 0000000..0b1ccfd --- /dev/null +++ b/src/main/terraform/identity/env/dev/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappdevmil" +container_name = "terraform-state" +key = "mil-preset.tfstate" diff --git a/src/main/terraform/identity/env/dev/terraform.tfvars b/src/main/terraform/identity/env/dev/terraform.tfvars new file mode 100644 index 0000000..f0bb966 --- /dev/null +++ b/src/main/terraform/identity/env/dev/terraform.tfvars @@ -0,0 +1,12 @@ +prefix = "mil" +env_short = "d" +env = "dev" + +github_repository_environment_cd = { + protected_branches = false + custom_branch_policies = true + reviewers_teams = [ + "infrastructure-admins", + "mil-team", + ] +} diff --git a/src/main/terraform/identity/env/prod/backend.ini b/src/main/terraform/identity/env/prod/backend.ini new file mode 100644 index 0000000..bc561a3 --- /dev/null +++ b/src/main/terraform/identity/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=prod-mil diff --git a/src/main/terraform/identity/env/prod/backend.tfvars b/src/main/terraform/identity/env/prod/backend.tfvars new file mode 100644 index 0000000..2d38bfa --- /dev/null +++ b/src/main/terraform/identity/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodmil" +container_name = "terraform-state" +key = "mil-preset.tfstate" diff --git a/src/main/terraform/identity/env/prod/terraform.tfvars b/src/main/terraform/identity/env/prod/terraform.tfvars new file mode 100644 index 0000000..5a0f4c1 --- /dev/null +++ b/src/main/terraform/identity/env/prod/terraform.tfvars @@ -0,0 +1,46 @@ +prefix = "mil" +env_short = "p" +env = "prod" + +environment_ci_roles = { + subscription = [ + "Reader", + "Reader and Data Access", + "Storage Blob Data Reader", + "Storage File Data SMB Share Reader", + "Storage Queue Data Reader", + "Storage Table Data Reader", + "PagoPA Export Deployments Template", + "Key Vault Secrets User", + "DocumentDB Account Contributor", + "API Management Service Contributor", + ] +} + +github_repository_environment_ci = { + protected_branches = false + custom_branch_policies = true +} + +environment_cd_roles = { + subscription = [ + "Contributor", + "Storage Account Contributor", + "Storage Blob Data Contributor", + "Storage File Data SMB Share Contributor", + "Storage Queue Data Contributor", + "Storage Table Data Contributor", + "Key Vault Certificates Officer", + "Key Vault Crypto Officer", + "Key Vault Secrets Officer", + ] +} + +github_repository_environment_cd = { + protected_branches = true + custom_branch_policies = false + reviewers_teams = [ + "infrastructure-admins", + "mil-team", + ] +} diff --git a/src/main/terraform/identity/env/uat/backend.ini b/src/main/terraform/identity/env/uat/backend.ini new file mode 100644 index 0000000..0e4a6de --- /dev/null +++ b/src/main/terraform/identity/env/uat/backend.ini @@ -0,0 +1 @@ +subscription=uat-mil diff --git a/src/main/terraform/identity/env/uat/backend.tfvars b/src/main/terraform/identity/env/uat/backend.tfvars new file mode 100644 index 0000000..7fdd0a1 --- /dev/null +++ b/src/main/terraform/identity/env/uat/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappuatmil" +container_name = "terraform-state" +key = "mil-preset.tfstate" diff --git a/src/main/terraform/identity/env/uat/terraform.tfvars b/src/main/terraform/identity/env/uat/terraform.tfvars new file mode 100644 index 0000000..0a95cd7 --- /dev/null +++ b/src/main/terraform/identity/env/uat/terraform.tfvars @@ -0,0 +1,46 @@ +prefix = "mil" +env_short = "u" +env = "uat" + +environment_ci_roles = { + subscription = [ + "Reader", + "Reader and Data Access", + "Storage Blob Data Reader", + "Storage File Data SMB Share Reader", + "Storage Queue Data Reader", + "Storage Table Data Reader", + "PagoPA Export Deployments Template", + "Key Vault Secrets User", + "DocumentDB Account Contributor", + "API Management Service Contributor", + ] +} + +github_repository_environment_ci = { + protected_branches = false + custom_branch_policies = true +} + +environment_cd_roles = { + subscription = [ + "Contributor", + "Storage Account Contributor", + "Storage Blob Data Contributor", + "Storage File Data SMB Share Contributor", + "Storage Queue Data Contributor", + "Storage Table Data Contributor", + "Key Vault Certificates Officer", + "Key Vault Crypto Officer", + "Key Vault Secrets Officer", + ] +} + +github_repository_environment_cd = { + protected_branches = false + custom_branch_policies = true + reviewers_teams = [ + "infrastructure-admins", + "mil-team", + ] +} diff --git a/src/main/terraform/identity/terraform.sh b/src/main/terraform/identity/terraform.sh new file mode 100755 index 0000000..d14425b --- /dev/null +++ b/src/main/terraform/identity/terraform.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +set -e + +ACTION=$1 +ENV=$2 +shift 2 +other="$@" +# must be subscription in lower case +subscription="" +BACKEND_CONFIG_PATH="./env/${ENV}/backend.tfvars" + +if [ -z "$ACTION" ]; then + echo "[ERROR] Missed ACTION: init, apply, plan" + exit 0 +fi + +if [ -z "$ENV" ]; then + echo "[ERROR] ENV should be: dev, uat or prod." + exit 0 +fi + +# +# 🏁 Source & init shell +# + +# shellcheck source=/dev/null +source "./env/$ENV/backend.ini" + +# Subscription set +az account set -s "${subscription}" + +# if using cygwin, we have to transcode the WORKDIR +if [[ $WORKDIR == /cygdrive/* ]]; then + WORKDIR=$(cygpath -w $WORKDIR) +fi + +# Helm +export HELM_DEBUG=1 +export TF_VAR_github_token="${GITHUB_TOKEN}" + +# +# 🌎 Terraform +# +if echo "init plan apply refresh import output state taint destroy" | grep -w "$ACTION" > /dev/null; then + if [ "$ACTION" = "init" ]; then + echo "[INFO] init tf on ENV: ${ENV}" + terraform "$ACTION" -backend-config="${BACKEND_CONFIG_PATH}" $other + elif [ "$ACTION" = "output" ] || [ "$ACTION" = "state" ] || [ "$ACTION" = "taint" ]; then + # init terraform backend + terraform init -reconfigure -backend-config="${BACKEND_CONFIG_PATH}" + terraform "$ACTION" $other + else + # init terraform backend + echo "[INFO] init tf on ENV: ${ENV}" + terraform init -reconfigure -backend-config="${BACKEND_CONFIG_PATH}" + + echo "[INFO] run tf with: ${ACTION} on ENV: ${ENV} and other: >${other}<" + terraform "${ACTION}" -var-file="./env/${ENV}/terraform.tfvars" -compact-warnings $other + fi +else + echo "[ERROR] ACTION not allowed." + exit 1 +fi