From 57d15369d6cba96ae0371aac54ccb68daad6c16a Mon Sep 17 00:00:00 2001 From: Stephan Schnabel Date: Mon, 23 Jun 2025 17:25:33 +0200 Subject: [PATCH] Rewrite build config to kokuwa.io infrastructure --- .github/CODEOWNERS | 2 - .github/dependabot.yml | 14 - .github/settings.xml | 16 -- .github/workflows/build.yaml | 68 +++-- .github/workflows/lint.yaml | 23 ++ .github/workflows/pr.yaml | 58 ----- .github/workflows/release.yaml | 50 ---- .woodpecker/build.yaml | 39 +++ .woodpecker/lint.yaml | 21 ++ .woodpecker/maven/settings.xml | 28 ++ .woodpecker/release.yaml | 25 ++ .woodpecker/verify.yaml | 27 ++ Dockerfile | 31 +++ README.md | 23 +- pom.xml | 246 ++++-------------- renovate.json | 4 + .../metrics/junit/KeycloakExtension.java | 35 +-- 17 files changed, 310 insertions(+), 400 deletions(-) delete mode 100644 .github/CODEOWNERS delete mode 100644 .github/dependabot.yml delete mode 100644 .github/settings.xml create mode 100644 .github/workflows/lint.yaml delete mode 100644 .github/workflows/pr.yaml delete mode 100644 .github/workflows/release.yaml create mode 100644 .woodpecker/build.yaml create mode 100644 .woodpecker/lint.yaml create mode 100644 .woodpecker/maven/settings.xml create mode 100644 .woodpecker/release.yaml create mode 100644 .woodpecker/verify.yaml create mode 100644 Dockerfile create mode 100644 renovate.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 3f0ccf3..0000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,2 +0,0 @@ -# https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax -* @sschnabe @rpahli @fabian-schlegel @jschwarze @wistefan @monotek diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 415bfca..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,14 +0,0 @@ -version: 2 -updates: - - package-ecosystem: maven - directory: / - schedule: - interval: daily - allow: - - dependency-name: io.kokuwa.maven:maven-parent - - dependency-name: org.keycloak:keycloak-quarkus-server - - package-ecosystem: github-actions - directory: / - schedule: - interval: monthly - day: monday diff --git a/.github/settings.xml b/.github/settings.xml deleted file mode 100644 index 44fd9ea..0000000 --- a/.github/settings.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - sonatype-nexus - ${env.SERVER_USERNAME} - ${env.SERVER_PASSWORD} - - - github.com - nope - ${env.GIT_ACTION_TOKEN} - - - diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4da10a5..5d30921 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,50 +1,42 @@ -name: Build +name: Verify on: - push: - branches: [main] + - pull_request + - push: + branches: [main] + +env: + MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress jobs: build: runs-on: ubuntu-latest - env: - MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress --settings=.github/settings.xml steps: - - name: docker/login-action docker.io - uses: docker/login-action@v3.4.0 - with: - registry: docker.io - username: ${{ secrets.DOCKERIO_USERNAME }} - password: ${{ secrets.DOCKERIO_TOKEN }} - - name: docker/login-action ghcr.io - uses: docker/login-action@v3.4.0 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GIT_ACTION_TOKEN }} - - run: git config --global user.name "${{ vars.KOKUWA_IO_BOT_NAME }}" - - run: git config --global user.email "${{ vars.KOKUWA_IO_BOT_EMAIL }}" - - uses: actions/checkout@v4 - with: - token: ${{ secrets.GIT_ACTION_TOKEN }} - - uses: crazy-max/ghaction-import-gpg@v6 - with: - gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} - passphrase: ${{ secrets.GPG_PASSPHRASE }} - git_user_signingkey: true - git_commit_gpgsign: true - - uses: actions/setup-java@v4 + - uses: actions/checkout@main + - uses: actions/setup-java@main with: distribution: temurin java-version: 17 cache: maven - server-id: sonatype-nexus - server-username: SERVER_USERNAME - server-password: SERVER_PASSWORD - gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} - gpg-passphrase: GPG_PASSPHRASE - - run: mvn $MAVEN_ARGS deploy - env: - SERVER_USERNAME: ${{ secrets.SONATYPE_NEXUS_USERNAME }} - SERVER_PASSWORD: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} + - run: mvn verify + + versions: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + version: + - 22.0.5 + - 23.0.7 + - 24.0.5 + - 25.0.6 + - 26.2.5 + steps: + - uses: actions/checkout@main + - uses: actions/setup-java@main + with: + distribution: temurin + java-version: 17 + cache: maven + - run: mvn verify -Dversion.org.keycloak.test=${{ matrix.version }} diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml new file mode 100644 index 0000000..af980fa --- /dev/null +++ b/.github/workflows/lint.yaml @@ -0,0 +1,23 @@ +name: Lint + +on: push + +jobs: + + renovate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@main + - uses: docker://kokuwaio/renovate-config-validator + + markdownlint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@main + - uses: docker://kokuwaio/markdownlint + + yamllint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@main + - uses: docker://kokuwaio/yamllint diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml deleted file mode 100644 index 3548e88..0000000 --- a/.github/workflows/pr.yaml +++ /dev/null @@ -1,58 +0,0 @@ -name: PullRequest - -on: pull_request - -env: - MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress - -jobs: - - yaml: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ibiqlik/action-yamllint@v3 - with: - format: colored - strict: true - - markdown: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: avto-dev/markdown-lint@v1 - with: - args: /github/workspace - - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: 17 - cache: maven - - run: mvn $MAVEN_ARGS verify - - versions: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - version: - - 22.0.5 - - 23.0.7 - - 24.0.5 - - 25.0.6 - - 26.0.8 - - 26.1.5 - - 26.2.5 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: 17 - cache: maven - - run: mvn $MAVEN_ARGS verify -Dcheck.skip -Dversion.org.keycloak.test=${{ matrix.version }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml deleted file mode 100644 index e3240ed..0000000 --- a/.github/workflows/release.yaml +++ /dev/null @@ -1,50 +0,0 @@ -name: Release - -on: workflow_dispatch - -jobs: - build: - runs-on: ubuntu-latest - env: - MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress --settings=.github/settings.xml - steps: - - name: docker/login-action docker.io - uses: docker/login-action@v3.4.0 - with: - registry: docker.io - username: ${{ secrets.DOCKERIO_USERNAME }} - password: ${{ secrets.DOCKERIO_TOKEN }} - - name: docker/login-action ghcr.io - uses: docker/login-action@v3.4.0 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GIT_ACTION_TOKEN }} - - run: git config --global user.name "${{ vars.KOKUWA_IO_BOT_NAME }}" - - run: git config --global user.email "${{ vars.KOKUWA_IO_BOT_EMAIL }}" - - uses: actions/checkout@v4 - with: - token: ${{ secrets.GIT_ACTION_TOKEN }} - - uses: crazy-max/ghaction-import-gpg@v6 - with: - gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} - passphrase: ${{ secrets.GPG_PASSPHRASE }} - git_user_signingkey: true - git_commit_gpgsign: true - - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: 17 - cache: maven - server-id: sonatype-nexus - server-username: SERVER_USERNAME - server-password: SERVER_PASSWORD - gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} - gpg-passphrase: GPG_PASSPHRASE - - run: mvn $MAVEN_ARGS release:prepare -Darguments="$MAVEN_ARGS" - - run: mvn $MAVEN_ARGS release:perform -Darguments="$MAVEN_ARGS" - env: - SERVER_USERNAME: ${{ secrets.SONATYPE_NEXUS_USERNAME }} - SERVER_PASSWORD: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} - GIT_ACTION_TOKEN: ${{ secrets.GIT_ACTION_TOKEN }} - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} diff --git a/.woodpecker/build.yaml b/.woodpecker/build.yaml new file mode 100644 index 0000000..82dfd40 --- /dev/null +++ b/.woodpecker/build.yaml @@ -0,0 +1,39 @@ +when: + instance: ci.kokuwa.io + repo: keycloak/keycloak-event-metrics + event: [manual, push] + branch: main + path: [.woodpecker/build.yaml, pom.xml, src/main/**] + +services: + - name: dockerd + image: kokuwaio/dockerd + privileged: true + ports: [2375, 8080] + +steps: + + deploy: + image: maven:3.9.9-eclipse-temurin-17 + commands: mvn deploy + environment: + MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress --settings=.woodpecker/maven/settings.xml + MAVEN_GPG_KEY: {from_secret: woodpecker_gpg_key} + SONATYPE_ORG_USERNAME: {from_secret: sonatype_org_username} + SONATYPE_ORG_PASSWORD: {from_secret: sonatype_org_password} + + release: + image: maven:3.9.9-eclipse-temurin-17 + commands: + - git config user.email "$GIT_USER_EMAIL" + - git config user.name "$GIT_USER_NAME" + - mvn release:prepare release:perform --settings=.woodpecker/maven/settings.xml + environment: + MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress -DskipTests -DautoPublish=false + MAVEN_GPG_KEY: {from_secret: woodpecker_gpg_key} + SONATYPE_ORG_USERNAME: {from_secret: sonatype_org_username} + SONATYPE_ORG_PASSWORD: {from_secret: sonatype_org_password} + DOCKER_IO_USERNAME: {from_secret: docker_io_username} + DOCKER_IO_PASSWORD: {from_secret: docker_io_password} + GHCR_IO_USERNAME: {from_secret: ghcr_io_username} + GHCR_IO_PASSWORD: {from_secret: ghcr_io_password} diff --git a/.woodpecker/lint.yaml b/.woodpecker/lint.yaml new file mode 100644 index 0000000..74bb114 --- /dev/null +++ b/.woodpecker/lint.yaml @@ -0,0 +1,21 @@ +when: + event: [manual, pull_request, push] + branch: main + path: [.woodpecker/lint.yaml, renovate.json, "**/*.y*ml", "**/*.md"] + +steps: + + renovate: + image: kokuwaio/renovate-config-validator + depends_on: [] + when: [path: [.woodpecker/lint.yaml, renovate.json]] + + yaml: + image: kokuwaio/yamllint + depends_on: [] + when: [path: [.woodpecker/lint.yaml, .yamllint.yaml, "**/*.y*ml"]] + + markdown: + image: kokuwaio/markdownlint + depends_on: [] + when: [path: [.woodpecker/lint.yaml, .markdownlint.yaml, "**/*.md"]] diff --git a/.woodpecker/maven/settings.xml b/.woodpecker/maven/settings.xml new file mode 100644 index 0000000..71b1f7a --- /dev/null +++ b/.woodpecker/maven/settings.xml @@ -0,0 +1,28 @@ + + + false + /woodpecker/.m2 + + + sonatype.org + ${env.SONATYPE_ORG_USERNAME} + ${env.SONATYPE_ORG_PASSWORD} + + + docker.io + ${env.DOCKER_IO_USERNAME} + ${env.DOCKER_IO_PASSWORD} + + + ghcr.io + ${env.GHCR_IO_USERNAME} + ${env.GHCR_IO_PASSWORD} + + + + + http://mirror.woodpecker.svc.cluster.local/maven2 + central + + + diff --git a/.woodpecker/release.yaml b/.woodpecker/release.yaml new file mode 100644 index 0000000..72bcf74 --- /dev/null +++ b/.woodpecker/release.yaml @@ -0,0 +1,25 @@ +when: + instance: ci.kokuwa.io + repo: keycloak/keycloak-event-metrics + event: deployment + branch: main + +services: + - name: dockerd + image: kokuwaio/dockerd + ports: [2375, 8080] + +steps: + + deploy: + image: maven:3.9.9-eclipse-temurin-17 + commands: mvn release:prepare release:perform --settings=.woodpecker/maven/settings.xml + environment: + MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress -DskipTests -DautoPublish=false + MAVEN_GPG_KEY: {from_secret: woodpecker_gpg_key} + SONATYPE_ORG_USERNAME: {from_secret: sonatype_org_username} + SONATYPE_ORG_PASSWORD: {from_secret: sonatype_org_password} + DOCKER_IO_USERNAME: {from_secret: docker_io_username} + DOCKER_IO_PASSWORD: {from_secret: docker_io_password} + GHCR_IO_USERNAME: {from_secret: ghcr_io_username} + GHCR_IO_PASSWORD: {from_secret: ghcr_io_password} diff --git a/.woodpecker/verify.yaml b/.woodpecker/verify.yaml new file mode 100644 index 0000000..24733db --- /dev/null +++ b/.woodpecker/verify.yaml @@ -0,0 +1,27 @@ +when: + event: [manual, pull_request] + path: [.woodpecker/verify.yaml, pom.xml, src/main/**] + +matrix: + KEYCLOAK_VERSION: +# - 22.0.5 +# - 23.0.7 +# - 24.0.5 +# - 25.0.6 + - 26.2.5 + - $version.org.keycloak + - $$version.org.keycloak + +services: + - name: dockerd + image: kokuwaio/dockerd + privileged: true + ports: [2375, 8080] + +steps: + veraify: + image: maven:3.9.9-eclipse-temurin-17 + commands: echo $KEYCLOAK_VERSION + verify: + image: maven:3.9.9-eclipse-temurin-17 + commands: mvn test -Dversion.org.keycloak.test="$KEYCLOAK_VERSION" --batch-mode --color=always --no-transfer-progress --settings=.woodpecker/maven/settings.xml \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2a6207f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,31 @@ +FROM docker.io/library/maven:3.9.9-eclipse-temurin-17 AS mvn +WORKDIR /app +ARG MAVEN_ARGS="--batch-mode --color=always --no-transfer-progress -DskipTests -P=-dev" +ARG MAVEN_MIRROR_CENTRAL=https://mirror.grayc.io/maven2 +RUN mkdir "$HOME/.m2" && printf "\n\ +\n\ + /tmp/mvn-repo\n\ + \n\ + \n\ + %s\n\ + central\n\ + \n\ + \n\ +" "$MAVEN_MIRROR_CENTRAL" > "$HOME/.m2/settings.xml" && cat "$HOME/.m2/settings.xml" +COPY pom.xml lombok.config ./ +COPY api/pom.xml api/pom.xml +COPY service/pom.xml service/pom.xml +RUN mvn install -N +COPY .git / +COPY api/ api/ +RUN mvn install -pl api +COPY service/ service/ +RUN mvn install -pl service + +FROM docker.io/library/eclipse-temurin:21.0.7_6-jre@sha256:031eb6ccad828004407c0a41f6a4009a08289961d55e9119287c28756522a945 +COPY service/target/libs /app/libs +COPY service/target/minoa-service-*.jar /app/minoa.jar +COPY api/openapi.yaml /static/openapi.yaml +COPY --from=app /app/dist /static +COPY --from=mkdocs-user-manual /mkdocs/site /static/docs +ENTRYPOINT ["java", "-XX:+ExitOnOutOfMemoryError", "-jar", "/app/minoa.jar"] diff --git a/README.md b/README.md index d57d9b6..970827b 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,15 @@ -# Keycloak Metrics +# Keycloak Event Metrics -Provides metrics for Keycloak user/admin events and user/client/session count. Tested on Keycloak [22-26](.github/workflows/pr.yaml#L48-L53). +Provides metrics for Keycloak user/admin events and user/client/session count. Tested on Keycloak [22-26](.woodpecker/verify.yaml#L7-L11). -[![Apache License, Version 2.0, January 2004](https://img.shields.io/github/license/kokuwaio/keycloak-event-metrics.svg?label=License)](http://www.apache.org/licenses/) -[![Maven Central](https://img.shields.io/maven-central/v/io.kokuwa.keycloak/keycloak-event-metrics.svg?label=Maven%20Central)](https://central.sonatype.com/search?namespace=io.kokuwa.keycloak&q=keycloak-event-metrics) -[![Build](https://img.shields.io/github/actions/workflow/status/kokuwaio/keycloak-event-metrics/build.yaml?label=Build)](https://github.com/kokuwaio/keycloak-event-metrics/actions/workflows/build.yaml) +[![Maven Central](https://img.shields.io/maven-central/v/io.kokuwa.keycloak/ww-event-metrics.svg?label=Maven%20Central)](https://central.sonatype.com/search?namespace=io.kokuwa.keycloak&q=keycloak-event-metrics) +[![pulls](https://img.shields.io/docker/pulls/kokuwaio/keycloak-event-metrics)](https://hub.docker.com/r/kokuwaio/keycloak-event-metrics) +[![size](https://img.shields.io/docker/image-size/kokuwaio/keycloak-event-metrics)](https://hub.docker.com/r/kokuwaio/keycloak-event-metrics) +[![dockerfile](https://img.shields.io/badge/source-Dockerfile%20-blue)](https://git.kokuwa.io/keycloak/keycloak-event-metrics/src/branch/main/Dockerfile) +[![license](https://img.shields.io/badge/License-EUPL%201.2-blue)](https://git.kokuwa.io/keycloak/keycloak-event-metrics/src/branch/main/LICENSE) +[![prs](https://img.shields.io/gitea/pull-requests/open/keycloak/keycloak-event-metrics?gitea_url=https%3A%2F%2Fgit.kokuwa.io)](https://git.kokuwa.io/keycloak/keycloak-event-metrics/pulls) +[![issues](https://img.shields.io/gitea/issues/open/keycloak/keycloak-event-metrics?gitea_url=https%3A%2F%2Fgit.kokuwa.io)](https://git.kokuwa.io/keycloak/keycloak-event-metrics/issues) +[![build](https://ci.kokuwa.io/api/badges/keycloak/keycloak-event-metrics/status.svg)](https://ci.kokuwa.io/api/badges/keycloak/keycloak-event-metrics/) ## Why? @@ -114,7 +119,7 @@ If scrapping takes less than `KC_METRICS_STATS_INFO_THRESHOLD` duration will be ### Grafana Dashboard -Can be found here: [kokuwaio/keycloak keycloak-metrics.json](https://github.com/kokuwaio/keycloak/blob/main/src/test/k3s/dev/grafana/files/dashboards/keycloak-metrics.json) +Can be found here: [keycloak-metrics.json](https://git.kokuwa.io/keycloak/keycloak/blob/main/src/test/k3s/dev/grafana/files/dashboards/keycloak-metrics.json) ### Testcontainers @@ -131,7 +136,7 @@ This images are based on busybox, so you can use cp to copy the jar into your ke ### Docker -Check: [kokuwaio/keycloak](https://github.com/kokuwaio/keycloak) +Check: [kowaio/keycloak](https://git.kokuwa.io/keycloak/keycloak) Dockerfile: @@ -145,7 +150,7 @@ FROM debian:stable-slim AS metrics RUN apt-get -qq update RUN apt-get -qq install --yes --no-install-recommends ca-certificates wget -ARG METRICS_VERSION=1.0.0 +ARG METRICS_VERSION=2.0.0 ARG METRICS_FILE=keycloak-event-metrics-${METRICS_VERSION}.jar ARG METRICS_URL=https://repo1.maven.org/maven2/io/kokuwa/keycloak/keycloak-event-metrics/${METRICS_VERSION} @@ -159,7 +164,7 @@ RUN mv ${METRICS_FILE} /opt/keycloak/providers ### build keycloak with metrics ### -FROM quay.io/keycloak/keycloak:25.0.1 +FROM quay.io/keycloak/keycloak:25.2.5 ENV KEYCLOAK_ADMIN=admin ENV KEYCLOAK_ADMIN_PASSWORD=password diff --git a/pom.xml b/pom.xml index 6d2dc99..e117705 100644 --- a/pom.xml +++ b/pom.xml @@ -4,11 +4,11 @@ io.kokuwa.keycloak keycloak-event-metrics - 1.1.2-SNAPSHOT + 2.0.0-SNAPSHOT Keycloak Metrics Provides metrics for Keycloak user/admin events - https://github.com/kokuwaio/keycloak-event-metrics + https://git.kokuwa.io/keycloak/keycloak-event-metrics 2023 Kokuwa.io @@ -33,27 +33,23 @@ - https://github.com/kokuwaio/keycloak-event-metrics - scm:git:https://github.com/kokuwaio/keycloak-event-metrics.git - scm:git:https://github.com/kokuwaio/keycloak-event-metrics.git + https://git.kokuwa.io/keycloak/keycloak-event-metrics + scm:git:https://git.kokuwa.io/keycloak/keycloak-event-metrics.git + scm:git:https://git.kokuwa.io/keycloak/keycloak-event-metrics.git HEAD - github - https://github.com/kokuwaio/keycloak-event-metrics/issues + forgejo + https://git.kokuwa.io/keycloak/keycloak-event-metrics/issues - github - https://github.com/kokuwaio/keycloak-event-metrics/actions + woodpecker + https://ci.kokuwa.io/repos/keycloak/keycloak-event-metrics - - sonatype-nexus - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - sonatype-nexus - https://oss.sonatype.org/content/repositories/snapshots/ + sonatype.org + https://central.sonatype.com/repository/maven-snapshots/ @@ -83,28 +79,8 @@ - 3.4.1 - 3.14.0 - 3.1.4 - 3.2.7 - 3.1.4 - 3.4.2 - 3.11.2 - 3.1.1 - 3.3.1 - 3.21.0 - 3.3.1 - 3.5.3 - 1.4.0 - 2.18.0 - 1.7.0 - 2.26.0 - 1.12.0 - 0.46.0 - 26.2.5 ${version.org.keycloak} - 1.18.3 @@ -236,15 +212,10 @@ - - org.apache.maven.plugins - maven-clean-plugin - ${version.org.apache.maven.plugins.clean} - org.apache.maven.plugins maven-compiler-plugin - ${version.org.apache.maven.plugins.compiler} + 3.14.0 ${maven.compiler.compilerArgument} @@ -252,37 +223,37 @@ org.apache.maven.plugins maven-deploy-plugin - ${version.org.apache.maven.plugins.deploy} + 3.1.4 org.apache.maven.plugins maven-failsafe-plugin - ${version.org.apache.maven.plugins.surefire} + 3.5.3 org.apache.maven.plugins maven-gpg-plugin - ${version.org.apache.maven.plugins.gpg} + 3.2.7 org.apache.maven.plugins maven-install-plugin - ${version.org.apache.maven.plugins.install} + 3.1.4 org.apache.maven.plugins maven-jar-plugin - ${version.org.apache.maven.plugins.jar} + 3.4.2 org.apache.maven.plugins maven-javadoc-plugin - ${version.org.apache.maven.plugins.javadoc} + 3.11.2 org.apache.maven.plugins maven-release-plugin - ${version.org.apache.maven.plugins.release} + 3.1.1 clean verify check @@ -296,7 +267,7 @@ org.apache.maven.plugins maven-resources-plugin - ${version.org.apache.maven.plugins.resources} + 3.3.1 ${project.build.propertiesEncoding} @@ -304,43 +275,32 @@ org.apache.maven.plugins maven-site-plugin - ${version.org.apache.maven.plugins.site} + 3.21.0 org.apache.maven.plugins maven-source-plugin - ${version.org.apache.maven.plugins.source} + 3.3.1 org.apache.maven.plugins maven-surefire-plugin - ${version.org.apache.maven.plugins.surefire} + 3.5.3 org.codehaus.mojo tidy-maven-plugin - ${version.org.codehaus.mojo.tidy} + 1.4.0 - org.codehaus.mojo - versions-maven-plugin - ${version.org.codehaus.mojo.versions} - - false - - ^.*-(alpha|beta|M)-?[0-9]+$ - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - ${version.org.sonatype.plugins.nexus} + org.sonatype.central + central-publishing-maven-plugin + 0.7.0 net.revelc.code.formatter formatter-maven-plugin - ${version.net.revelc.code.formatter} + 2.26.0 ${formatter.configFile} @@ -348,12 +308,7 @@ net.revelc.code impsort-maven-plugin - ${version.net.revelc.code.impsort} - - - io.fabric8 - docker-maven-plugin - ${version.io.fabric8.docker} + 1.12.0 @@ -373,18 +328,6 @@ - - - org.apache.maven.plugins - maven-install-plugin - - - default-install - - - - - @@ -516,109 +459,12 @@ - javadoc-no-fork + jar - - - io.fabric8 - docker-maven-plugin - - - build - install - - build - - - - push - deploy - - push - - - - - build - - - docker.io/kokuwaio/keycloak-event-metrics:${project.version} - - docker.io/library/busybox:1.37.0-uclibc@sha256:cc57e0ff4b6d3138931ff5c7180d18078813300e2508a25fb767a4d36df30d4d - - ${file.separator} - - - - ${project.build.directory}/${project.build.finalName}.jar - ${project.artifactId}.jar - 444 - - - - - - - ${project.name} - ${project.description} - ${project.url} - ${project.scm.url} - ${project.organization.name} - https://github.com/orgs/kokuwaio/people - ${project.licenses[0].name} - ${project.version} - docker.io/library/busybox:1.37.0-uclibc - sha256:cc57e0ff4b6d3138931ff5c7180d18078813300e2508a25fb767a4d36df30d4d - - - - - ghcr.io/kokuwaio/keycloak-event-metrics:${project.version} - - docker.io/library/busybox:1.37.0-uclibc@sha256:cc57e0ff4b6d3138931ff5c7180d18078813300e2508a25fb767a4d36df30d4d - - ${file.separator} - - - - ${project.build.directory}/${project.build.finalName}.jar - ${project.artifactId}.jar - 444 - - - - - - - ${project.name} - ${project.description} - ${project.url} - ${project.scm.url} - ${project.organization.name} - https://github.com/orgs/kokuwaio/people - ${project.licenses[0].name} - ${project.version} - docker.io/library/busybox:1.37.0-uclibc - sha256:cc57e0ff4b6d3138931ff5c7180d18078813300e2508a25fb767a4d36df30d4d - - - - - - - - - - - - release - - - org.apache.maven.plugins @@ -628,22 +474,30 @@ sign + + bc + - - - org.sonatype.plugins - nexus-staging-maven-plugin - true - - sonatype-nexus - https://oss.sonatype.org/ - true - - - + + + + + release + + + + org.sonatype.central + central-publishing-maven-plugin + true + + sonatype.org + true + published + + diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..47fe869 --- /dev/null +++ b/renovate.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["local>infrastructure/renovate-config", ":reviewer(stephan.schnabel)"] +} diff --git a/src/test/java/io/kokuwa/keycloak/metrics/junit/KeycloakExtension.java b/src/test/java/io/kokuwa/keycloak/metrics/junit/KeycloakExtension.java index 19c380c..aa179f7 100644 --- a/src/test/java/io/kokuwa/keycloak/metrics/junit/KeycloakExtension.java +++ b/src/test/java/io/kokuwa/keycloak/metrics/junit/KeycloakExtension.java @@ -50,28 +50,29 @@ public class KeycloakExtension implements BeforeAllCallback, ParameterResolver { var jar = properties.getProperty("jar"); var timeout = properties.getProperty("timeout"); - // create and start container + // create and start container - use fixed port in ci @SuppressWarnings({ "resource", "deprecation" }) var container = (System.getenv("CI") == null ? new GenericContainer<>(image).withExposedPorts(8080) - : new FixedHostPortGenericContainer<>(image).withFixedExposedPort(8080, 8080)) - .withEnv("KEYCLOAK_ADMIN", "admin") - .withEnv("KEYCLOAK_ADMIN_PASSWORD", "password") - .withEnv("KC_LOG_LEVEL", "io.kokuwa:trace") - // otherwise port 9000 will be used, with this config we can test different keycloak versions - .withEnv("KC_LEGACY_OBSERVABILITY_INTERFACE", "true") - .withEnv("KC_HEALTH_ENABLED", "true") - .withEnv("KC_METRICS_ENABLED", "true") - .withEnv("KC_METRICS_STATS_ENABLED", "true") - .withEnv("KC_METRICS_STATS_INTERVAL", "PT1s") - .withCopyFileToContainer(MountableFile.forHostPath(jar), "/opt/keycloak/providers/metrics.jar") - .withLogConsumer(out -> System.out.print(out.getUtf8String())) - .withStartupTimeout(Duration.parse(timeout)) - .waitingFor(Wait.forHttp("/health").forPort(8080).withStartupTimeout(Duration.ofMinutes(10))) - .withCommand("start-dev"); + : new FixedHostPortGenericContainer<>(image).withFixedExposedPort(8080, 8080)); try { - container.start(); + container + .withEnv("KEYCLOAK_ADMIN", "admin") + .withEnv("KEYCLOAK_ADMIN_PASSWORD", "password") + .withEnv("KC_LOG_LEVEL", "io.kokuwa:trace") + // otherwise port 9000 will be used, with this config we can test different keycloak versions + .withEnv("KC_LEGACY_OBSERVABILITY_INTERFACE", "true") + .withEnv("KC_HEALTH_ENABLED", "true") + .withEnv("KC_METRICS_ENABLED", "true") + .withEnv("KC_METRICS_STATS_ENABLED", "true") + .withEnv("KC_METRICS_STATS_INTERVAL", "PT1s") + .withCopyFileToContainer(MountableFile.forHostPath(jar), "/opt/keycloak/providers/metrics.jar") + .withLogConsumer(out -> System.out.print(out.getUtf8String())) + .withStartupTimeout(Duration.parse(timeout)) + .waitingFor(Wait.forHttp("/health").forPort(8080).withStartupTimeout(Duration.ofMinutes(10))) + .withCommand("start-dev") + .start(); } catch (RuntimeException e) { throw new Exception("Failed to start keycloak", e); }