From a3784fe1f5b47abe9d002d1fed4f229e5717eded Mon Sep 17 00:00:00 2001 From: Stephan Schnabel Date: Mon, 3 Jul 2023 09:50:21 +0200 Subject: [PATCH] Migrate to kokuwa parent --- .github/CODEOWNERS | 2 - .github/dependabot.yml | 16 +- .github/settings.xml | 16 + .github/workflows/build.yaml | 31 ++ .github/workflows/ci.yaml | 87 ----- .github/workflows/dependabot.yaml | 17 - .github/workflows/pr.yaml | 59 +++ .github/workflows/release.yaml | 10 +- .gitignore | 5 + README.md | 4 +- pom.xml | 350 ++++-------------- .../metrics/stats/MetricsStatsTask.java | 10 +- 12 files changed, 193 insertions(+), 414 deletions(-) create mode 100644 .github/settings.xml create mode 100644 .github/workflows/build.yaml delete mode 100644 .github/workflows/ci.yaml delete mode 100644 .github/workflows/dependabot.yaml create mode 100644 .github/workflows/pr.yaml create mode 100644 .gitignore diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 164cbad..3f0ccf3 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1,2 @@ # https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax * @sschnabe @rpahli @fabian-schlegel @jschwarze @wistefan @monotek -.github/workflows/* @kokuwaio-bot -pom.xml @kokuwaio-bot diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 04d2ce6..415bfca 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -2,21 +2,13 @@ version: 2 updates: - package-ecosystem: maven directory: / - open-pull-requests-limit: 20 schedule: - interval: monthly - day: monday - # github parses time without quotes to int - # yamllint disable-line rule:quoted-strings - time: "09:00" - timezone: Europe/Berlin + interval: daily + allow: + - dependency-name: io.kokuwa.maven:maven-parent + - dependency-name: org.keycloak:keycloak-quarkus-server - package-ecosystem: github-actions directory: / - open-pull-requests-limit: 10 schedule: interval: monthly day: monday - # github parses time without quotes to int - # yamllint disable-line rule:quoted-strings - time: "09:00" - timezone: Europe/Berlin diff --git a/.github/settings.xml b/.github/settings.xml new file mode 100644 index 0000000..44fd9ea --- /dev/null +++ b/.github/settings.xml @@ -0,0 +1,16 @@ + + + + + + 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 new file mode 100644 index 0000000..8ad3f78 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,31 @@ +name: Build + +on: + push: + branches: [main] + +jobs: + + build: + runs-on: ubuntu-latest + env: + MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress --settings=.github/settings.xml + steps: + - 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@v3 + with: + token: ${{ secrets.GIT_ACTION_TOKEN }} + - uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: 17 + cache: maven + - run: mvn $MAVEN_ARGS dependency:go-offline + - run: mvn $MAVEN_ARGS deploy + env: + SERVER_USERNAME: ${{ secrets.SONATYPE_NEXUS_USERNAME }} + SERVER_PASSWORD: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} + - run: mvn $MAVEN_ARGS site-deploy + env: + GIT_ACTION_TOKEN: ${{ secrets.GIT_ACTION_TOKEN }} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index a1394ca..0000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,87 +0,0 @@ -name: CI - -on: - push: - branches: [main] - pull_request: {} - -jobs: - - yaml: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: ibiqlik/action-yamllint@v3 - with: - format: colored - strict: true - - markdown: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: avto-dev/markdown-lint@v1 - with: - args: /github/workspace - - javadoc: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: 17 - cache: maven - - run: mvn -B -ntp javadoc:javadoc-no-fork -Ddoclint=all - - checkstyle: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: 17 - cache: maven - - run: mvn -B -ntp checkstyle:check - - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: 17 - cache: maven - server-id: sonatype-nexus - server-username: SERVER_USERNAME - server-password: SERVER_PASSWORD - - run: mvn -B -ntp verify -Dcheckstyle.skip -Dmaven.test.redirectTestOutputToFile=false - if: ${{ github.ref != 'refs/heads/main' }} - - run: mvn -B -ntp deploy -Dcheckstyle.skip -Dmaven.test.redirectTestOutputToFile=false - if: ${{ github.ref == 'refs/heads/main' }} - env: - SERVER_USERNAME: ${{ secrets.SONATYPE_NEXUS_USERNAME }} - SERVER_PASSWORD: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} - - versions: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - version: - - 21.0.0 - - 21.0.1 - - 21.0.2 - - 21.1.0 - - 21.1.1 - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: 17 - cache: maven - - run: mvn -B -ntp verify -Dcheckstyle.skip -Dmaven.test.redirectTestOutputToFile=false -Dversion.org.keycloak=${{ matrix.version }} diff --git a/.github/workflows/dependabot.yaml b/.github/workflows/dependabot.yaml deleted file mode 100644 index ed63eca..0000000 --- a/.github/workflows/dependabot.yaml +++ /dev/null @@ -1,17 +0,0 @@ -name: Dependabot - -on: pull_request_target - -jobs: - auto-merge: - runs-on: ubuntu-latest - if: ${{ github.actor == 'dependabot[bot]' }} - steps: - - run: gh pr review --approve "$PR_URL" - env: - PR_URL: ${{ github.event.pull_request.html_url }} - GITHUB_TOKEN: ${{ secrets.GIT_ACTION_TOKEN }} - - run: gh pr merge --auto --squash "$PR_URL" - env: - PR_URL: ${{ github.event.pull_request.html_url }} - GITHUB_TOKEN: ${{ secrets.GIT_ACTION_TOKEN }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml new file mode 100644 index 0000000..54c2bba --- /dev/null +++ b/.github/workflows/pr.yaml @@ -0,0 +1,59 @@ +name: PullRequest + +on: pull_request + +env: + MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress -Dmaven.test.redirectTestOutputToFile=false + +jobs: + + yaml: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: ibiqlik/action-yamllint@v3 + with: + format: colored + strict: true + + markdown: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: avto-dev/markdown-lint@v1 + with: + args: /github/workspace + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: 17 + cache: maven + - run: mvn $MAVEN_ARGS dependency:go-offline + - run: mvn $MAVEN_ARGS verify + - run: mvn $MAVEN_ARGS site + - uses: actions/upload-artifact@v3 + if: always() + with: + path: target/site + + versions: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + version: + - 21.0.2 + - 21.1.1 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: 17 + cache: maven + - run: mvn $MAVEN_ARGS verify -Dcheck.skip -Dversion.org.keycloak=${{ matrix.version }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 8329bb7..4c719f1 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -5,7 +5,11 @@ on: workflow_dispatch jobs: build: runs-on: ubuntu-latest + env: + MAVEN_ARGS: --batch-mode --color=always --no-transfer-progress --settings=.github/settings.xml steps: + - 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@v3 with: token: ${{ secrets.GIT_ACTION_TOKEN }} @@ -25,9 +29,11 @@ jobs: server-password: SERVER_PASSWORD gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} gpg-passphrase: GPG_PASSPHRASE - - run: mvn -B -ntp release:prepare - - run: mvn -B -ntp release:perform + - run: mvn $MAVEN_ARGS dependency:go-offline + - 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/.gitignore b/.gitignore new file mode 100644 index 0000000..1939404 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# do not include developer stuff here, use `git config --global core.excludesFile ~/.gitignore` for your setup + +target +pom.xml.releaseBackup +release.properties diff --git a/README.md b/README.md index f9f4236..e18c360 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # Keycloak Metrics -Provides metrics for Keycloak user/admin events and user/client/session count. Tested on Keycloak [20-21](.github/workflows/ci.yaml#L74-L77). +Provides metrics for Keycloak user/admin events and user/client/session count. Tested on Keycloak [21](.github/workflows/pr.yaml#L49-L51). [![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) -[![CI](https://img.shields.io/github/actions/workflow/status/kokuwaio/keycloak-event-metrics/ci.yaml?branch=main&label=CI)](https://github.com/kokuwaio/keycloak-event-metrics/actions/workflows/ci.yaml?query=branch%3Amain) +[![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) ## Why? diff --git a/pom.xml b/pom.xml index 929a53f..5fe8e38 100644 --- a/pom.xml +++ b/pom.xml @@ -2,6 +2,13 @@ 4.0.0 + + io.kokuwa.maven + maven-parent + 0.6.10 + + + io.kokuwa.keycloak keycloak-event-metrics 1.0.1-SNAPSHOT @@ -16,19 +23,21 @@ - Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0 + Apache-2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + repo - stephanschnabel + sschnabe Stephan Schnabel https://github.com/sschnabe stephan@grayc.de GrayC GmbH https://grayc.de + Europe/Berlin @@ -46,16 +55,6 @@ github https://github.com/kokuwaio/keycloak-event-metrics/actions - - - sonatype-nexus - https://oss.sonatype.org/content/repositories/snapshots - - - sonatype-nexus - https://oss.sonatype.org/service/local/staging/deploy/maven2 - - @@ -63,73 +62,27 @@ - UTF-8 - 17 17 - true - true - true - true - - - 3.2.2 - 3.2.0 - 3.11.0 - 3.5.0 - 3.1.1 - 3.0.1 - 3.1.1 - 3.3.0 - 1.0.0 - 3.0.0 - 3.3.1 - 3.2.1 - 3.0.0 - 1.2.0 - 1.6.13 - 10.10.0 - 0.5.6 - - - 21.1.1 - 5.3.1 - 1.18.0 + 1.18.3 - - org.keycloak - keycloak-parent + keycloak-quarkus-server ${version.org.keycloak} pom import - - - - org.mockito - mockito-junit-jupiter - ${version.org.mockito} - - - org.testcontainers - testcontainers-bom - ${version.org.testcontainers} - pom - import - - @@ -152,27 +105,61 @@ org.keycloak - keycloak-quarkus-server - provided + keycloak-admin-client + test - - com.openshift - openshift-restclient-java - - - org.keycloak - keycloak-admin-ui + + org.glassfish.jaxb + jaxb-runtime - org.keycloak - keycloak-account-ui + org.jboss.resteasy + resteasy-multipart-provider + + + + + + + org.jboss.logging + jboss-logging + provided + + + org.hibernate + hibernate-core + provided + + + javax.xml.bind + jaxb-api + + + org.glassfish.jaxb + jaxb-runtime + + + org.hibernate.common + hibernate-commons-annotations + + + org.jboss + jandex + + + antlr + antlr + + + com.fasterxml + classmate - org.keycloak - keycloak-admin-client - test + io.micrometer + micrometer-core + provided @@ -183,13 +170,7 @@ org.testcontainers - junit-jupiter - test - - - org.wildfly.client - wildfly-client-config - 1.0.1.Final + testcontainers test @@ -202,151 +183,8 @@ true - - - - org.apache.maven.plugins - maven-checkstyle-plugin - ${version.org.apache.maven.plugins.checkstyle} - - checkstyle.xml - checkstyle-suppression.xml - true - - - - com.puppycrawl.tools - checkstyle - ${version.com.puppycrawl.tools.checkstyle} - - - io.kokuwa - maven-parent - ${version.io.kokuwa.checkstyle} - zip - checkstyle - - - - - 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} - - - org.apache.maven.plugins - maven-dependency-plugin - ${version.org.apache.maven.plugins.dependency} - - - org.apache.maven.plugins - maven-deploy-plugin - ${version.org.apache.maven.plugins.deploy} - - - org.apache.maven.plugins - maven-failsafe-plugin - ${version.org.apache.maven.plugins.surefire} - - true - ${maven.test.redirectTestOutputToFile} - - - - org.apache.maven.plugins - maven-gpg-plugin - ${version.org.apache.maven.plugins.gpg} - - - org.apache.maven.plugins - maven-install-plugin - ${version.org.apache.maven.plugins.install} - - - org.apache.maven.plugins - maven-jar-plugin - ${version.org.apache.maven.plugins.jar} - - - org.apache.maven.plugins - maven-javadoc-plugin - ${version.org.apache.maven.plugins.jar} - - - org.apache.maven.plugins - maven-release-plugin - ${version.org.apache.maven.plugins.release} - - @{project.version} - release - true - true - @{prefix} prepare release @{releaseLabel} [no ci] - - - - org.apache.maven.plugins - maven-source-plugin - ${version.org.apache.maven.plugins.source} - - - org.apache.maven.plugins - maven-resources-plugin - ${version.org.apache.maven.plugins.resources} - - UTF-8 - - - - org.apache.maven.plugins - maven-surefire-plugin - ${version.org.apache.maven.plugins.surefire} - - - org.codehaus.mojo - tidy-maven-plugin - ${version.org.codehaus.mojo.tidy} - - - org.sonatype.plugins - nexus-staging-maven-plugin - ${version.org.sonatype.plugins.nexus-staging} - - - - - - org.codehaus.mojo - tidy-maven-plugin - - - - check - - - - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - - - - check - - - - - org.apache.maven.plugins @@ -363,66 +201,4 @@ - - - - release - - - - - - org.apache.maven.plugins - maven-source-plugin - - - - jar-no-fork - - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - - - - jar - - - - - - - - org.apache.maven.plugins - maven-gpg-plugin - - - - sign - - - - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - true - - sonatype-nexus - https://oss.sonatype.org/ - true - - - - - - - diff --git a/src/main/java/io/kokuwa/keycloak/metrics/stats/MetricsStatsTask.java b/src/main/java/io/kokuwa/keycloak/metrics/stats/MetricsStatsTask.java index 0a3c57c..db75da8 100644 --- a/src/main/java/io/kokuwa/keycloak/metrics/stats/MetricsStatsTask.java +++ b/src/main/java/io/kokuwa/keycloak/metrics/stats/MetricsStatsTask.java @@ -41,12 +41,11 @@ public class MetricsStatsTask implements Provider, ScheduledTask { try { scrape(session); + } catch (org.hibernate.exception.SQLGrammarException e) { + log.infov("Metrics status task skipped, database not ready."); + return; } catch (Exception e) { - if (e instanceof org.hibernate.exception.SQLGrammarException) { - log.infov("Metrics status task skipped, database not ready."); - } else { - log.errorv(e, "Failed to scrape stats."); - } + log.errorv(e, "Failed to scrape stats."); return; } @@ -67,6 +66,7 @@ public class MetricsStatsTask implements Provider, ScheduledTask { private void scrape(KeycloakSession session) { session.realms().getRealmsStream().forEach(realm -> { + log.tracev("Scrape for realm {0}.", realm.getName()); var tagRealm = Tag.of("realm", realm.getName()); gauge("keycloak_users", Set.of(tagRealm), session.users().getUsersCount(realm), true); gauge("keycloak_clients", Set.of(tagRealm), session.clients().getClientsCount(realm), true);