From b5b91ea5a0d8c34950d11f9d10f98c2a0697117e Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Mon, 6 Apr 2026 20:14:20 -0700 Subject: [PATCH 01/13] Upgrade to Java 17, Gradle 8, and Groovy 4 - Target Java 17 in Gradle; use JDK 17 in CircleCI and GitHub Actions - Move to Groovy 4 / Spock 2.3-groovy-4.0; add byte-buddy for class mocks - Refresh Gradle wrapper and dependency verification metadata - Fix Groovy 4 compatibility: ternary spacing, getProject() in MockRdTool, ArchivesSpec interaction --- .circleci/config.yml | 4 +- .github/workflows/codeql-analysis.yml | 4 +- .github/workflows/gradle.yml | 8 +- .github/workflows/release.yml | 4 +- .github/workflows/test-signing.yml | 4 +- build.gradle | 4 +- gradle/libs.versions.toml | 11 +- gradle/verification-keyring.keys | 112 +++++------------- gradle/verification-metadata.xml | 87 ++++++++++++-- gradle/wrapper/gradle-wrapper.properties | 2 +- .../tool/commands/ExecutionsSpec.groovy | 2 +- .../client/tool/commands/JobsSpec.groovy | 10 +- .../commands/projects/ArchivesSpec.groovy | 2 +- .../rundeck/client/testing/MockRdTool.groovy | 2 +- 14 files changed, 135 insertions(+), 121 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cd6d7ca4..8ccd4fd0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,7 +7,7 @@ jobs: build: docker: # specify the version you desire here - - image: cimg/openjdk:11.0.29 + - image: cimg/openjdk:17 # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images @@ -49,7 +49,7 @@ jobs: snyk_test: docker: - - image: cimg/openjdk:11.0.29 # this should match what's used in the rest of the project + - image: cimg/openjdk:17 # this should match what's used in the rest of the project steps: - checkout - setup_remote_docker diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 3c8ab167..cd266411 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -47,10 +47,10 @@ jobs: # Prefix the list here with "+" to use these queries and those in the config file. # queries: ./path/to/local/query, your-org/your-repo/queries@main - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: - java-version: '11' + java-version: '17' distribution: 'zulu' - name: Grant execute permission for gradlew diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 1774cd92..c9f02d4c 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -13,10 +13,10 @@ jobs: - name: Get Fetch Tags run: git -c protocol.version=2 fetch --tags --progress --no-recurse-submodules origin if: "!contains(github.ref, 'refs/tags')" - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: - java-version: '11' + java-version: '17' distribution: 'zulu' - name: Grant execute permission for gradlew run: chmod +x gradlew @@ -87,10 +87,10 @@ jobs: - name: Get Fetch Tags run: git -c protocol.version=2 fetch --tags --progress --no-recurse-submodules origin if: "!contains(github.ref, 'refs/tags')" - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: - java-version: '11' + java-version: '17' distribution: 'zulu' - name: Grant execute permission for gradlew run: chmod +x gradlew diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3ec73c4f..3df9b4ab 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,10 +14,10 @@ jobs: with: fetch-depth: 0 submodules: true - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: - java-version: '11' + java-version: '17' distribution: 'zulu' - name: Build with Gradle run: ./gradlew build diff --git a/.github/workflows/test-signing.yml b/.github/workflows/test-signing.yml index 36e4cde8..e1be2beb 100644 --- a/.github/workflows/test-signing.yml +++ b/.github/workflows/test-signing.yml @@ -11,10 +11,10 @@ jobs: with: fetch-depth: 0 submodules: true - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: - java-version: '11' + java-version: '17' distribution: 'zulu' - name: Build with Gradle run: ./gradlew build diff --git a/build.gradle b/build.gradle index bdcfceea..896039ef 100644 --- a/build.gradle +++ b/build.gradle @@ -31,8 +31,8 @@ subprojects{ apply plugin: "java-library" java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 withJavadocJar() withSourcesJar() } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0932bd95..b783c8c6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,8 +5,8 @@ okhttp = "4.12.0" lombok = "1.18.42" jaxb = "2.3.9" junit = "4.13.2" -groovy = "3.0.25" -spock = "2.1-groovy-3.0" +groovy = "4.0.30" +spock = "2.3-groovy-4.0" axion = "1.15.5" nexusPublish = "1.3.0" shadow = "8.1.1" @@ -20,6 +20,8 @@ snakeYaml = "2.0" rundeck = "4.17.6-20240402" testcontainers = "1.21.3" commonsCompress = "1.28.0" +# Spock mocks of concrete classes; not always pulled transitively with groovy-all 4.x +byteBuddy = "1.15.11" [libraries] @@ -38,7 +40,7 @@ okhttpMockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.r jaxb = { module = "com.sun.xml.bind:jaxb-impl", version.ref = "jaxb" } junit = { module = "junit:junit", version.ref = "junit" } -groovy = { module = "org.codehaus.groovy:groovy-all", version.ref = "groovy" } +groovy = { module = "org.apache.groovy:groovy-all", version.ref = "groovy" } spock = { module = "org.spockframework:spock-core", version.ref = "spock" } jacksonDatabind = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jacksonDatabind" } @@ -52,11 +54,12 @@ testcontainers = { module = "org.testcontainers:testcontainers", version.ref = " testcontainersSpock = { module = "org.testcontainers:spock", version.ref = "testcontainers" } commonsCompress = { module = "org.apache.commons:commons-compress", version.ref = "commonsCompress" } +byteBuddy = { module = "net.bytebuddy:byte-buddy", version.ref = "byteBuddy" } [bundles] retrofit = ["retrofitCore", "retrofitJackson", "retrofitJaxb", "okhttpLogging", "okhttpUrlconnection", "jaxb"] -test = ["junit", "groovy", "spock"] +test = ["junit", "groovy", "spock", "byteBuddy"] testcontainers = ["testcontainers", "testcontainersSpock"] rundeckAuthz = ["rundeckAuthzCore", "rundeckAuthzApi", "rundeckAuthzYaml"] diff --git a/gradle/verification-keyring.keys b/gradle/verification-keyring.keys index 9adbc817..0e09499b 100644 --- a/gradle/verification-keyring.keys +++ b/gradle/verification-keyring.keys @@ -3,7 +3,6 @@ uid Jake Wharton sub CF771F914C2A4A73 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBE2fCWARBAC3v9wYo5kmynmVP+43ccamidflSLQjjpsXpSDLPFokGxeuw0OC QJy46m8b5ACoCqRlfwnRRcEHxiSlaBATJA6hi7NRO41R39C62JXsIxNJR16JNQ5k @@ -36,7 +35,6 @@ uid Benjamin Muschko sub 7808D1026C6E22AA -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFQxwfkBCADHm/edOI/KD8TmOjLZx/2oMnnnvOUrNFKYZO1qnFndpecBffeq i7XoH59lK3En2SGSXTT7iptHkjy8/MMATOsTGh3K0sos1/xrGnVPe97ejJn7EbfJ @@ -70,7 +68,6 @@ pub 84E913A8E3A748C0 uid The Legion of the Bouncy Castle Inc. (Maven Repository Artifact Signer) -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGNBGR/8HUBDADJ+V5VgTXFG4xVI/1r07a/pTXoAQhHyJMkVdFScGARsps07VXI IsYgPsifOFU55E7uRMZPTLAx5F1uxoZAWGtXIz0d4ISKhobFquH8jZe7TnsJBJNV @@ -91,7 +88,6 @@ uid Marc Philipp sub 8B2A34A7D4A9B8B3 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFrKW9IBEACkqUvM7hU1WqOOeb1gZ7pUsRliHuoUvYIrd+hdp+qhPmJ0NG0W YhZK5UtJBmqvtHKRkbwYxUuya9zlBmCfQFf0GpFKJ65JSrPSkZADI3aZ4aUkxIUw @@ -134,7 +130,6 @@ PXCe8La72ukmaxEGbpJ8mdzS2PJko7mm pub 8671A8DF71296252 sub 51F5B36C761AA122 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFoQh54BEADOuivAfgGKc4/zDwx+AwJdctjTT0znL9knRTYG6ediv2Eq+CXm gBM9m5twl+qhUB1NtrdHb4BH49VY9/gHr3JDyo5ewu96qkbeQl4pxW0zmHg/yJx7 @@ -178,7 +173,6 @@ uid Gary David Gregory (Code signing key) sub 59BA7BFEAD3D7F94 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBE2kzuwBCACYV+G9yxNkSjAKSji0B5ipMGM74JAL1Ogtcu+993pLHHYsdXri WWXi37x9PLjeHxw63mN26SFyrbMJ4A8erLB03PDjw0DEzAwiu9P2vSvL/RFxGBbk @@ -208,7 +202,6 @@ uid Olivier Lamy sub 1AFEC329B615D06C -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBEdddbQRBADRgstdUZq7ceq3NYcR5kpoU2tN2Zvg1vptE9FxpDbL73gdLWnI C7IAx+NNjdG7Ncdg+u10UZv6OSmhWAd8ubWcD9JxKtS4UXkNPHxhHFHqVPHuCwsQ @@ -241,7 +234,6 @@ uid Spring Builds (JAR Signing) sub 6F7BF836151F097C -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBGPF4agBEADsWnQn3m/dMw1Q6FLALQCEucRkRLw4wcmtzXuuYb2M17aHvEb5 +OnXDdgQ2QcnnjK4S3zQp/Jt4ZQnnLORqx919+c+1gT24U06VxeGPW/TLRn/hnKA @@ -298,7 +290,6 @@ uid Antoine Mottier sub C327DD2B96A50E1C -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBF6WyHgBEADOrbvGGDYVckFcUofqKiYrBneClFJH1ANheF+KIekmnFV2SH1Z RS2rw12IbpCjwqjhFTMWH2UTLF6pAsSGIufTrSVUAF2WxHw84Y60KmwuYayJCVd3 @@ -341,7 +332,6 @@ Eyu0p4HmyiU45vlPgeM3IMHDEVFhmb3DXxL1BvgsJ1bNdlVFEtsiMpXdrWpH3nwB pub 9A2C7A98E457C53D sub 92AECA6AC21DB816 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFjN6bABCADHL68BhnXVXyJhOA9kO9cBwJXKmav2RftpcpXfaeHJTy+CMQa4 rFxokx5W7E1IPlLg0qJfKSMeWhimVLOsLhY1MZV8Mb4fkK+SlDz/ah+5ej6dzOs3 @@ -369,7 +359,6 @@ uid Zafar Khaja (Independent Developer) sub E40E551329F1B84D -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFKHsekBCADtYXcvg+CkAftzHDuIjhqlGVWxKHXYjbO5/XjHsgMliovC5iFd R1uhl1Y/hOC54ypr7/TtVqdAOVduV0y6q+AYeuvdz+KUQyx1IRvme+5572EMieqk @@ -398,7 +387,6 @@ uid Slawomir Jaranowski sub E3F6790A5A167F5A -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBGHDIagBEADpzdCwVjVlHuo8qpu9HtmqNpEW4TB7y6+NX7Q39mj8w+iVskE1 sL0+BOCdP6ZMiQziWbOQ2FxCd3mD0ixZ7v1i7+0jowySPacJbVNaPPECP38gDte4 @@ -441,7 +429,6 @@ mMc1ojZ9QHu9WXM+cEND6KY3m407KYw2ItiMcY3Y5fNTRdEMvu7S pub A2115AE15F6B8B72 sub 6366592024774157 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBDsSIk4RBADSCj6rUjV64tYCGT1DYKYR7GthyWpNdGHSYLbETBcDatAe1dzQ 5NsCgfrlybfyeY+y1lxr3T9bqf6zJWDw/718wff96qmmv1qzexSYtmIrj+h53V82 @@ -468,7 +455,6 @@ uid Atsuhiko Yamanaka (ymnk) sub CFA67E8582F7E9FB -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBE01exkRBACp+Rd7U5kgVl97TOJLRhvI/GVgwZfZB9VwF7O4KKCj1c/Hkb+3 4csI97hLhjfLBof88/JY6gLk6GMTDFm2rAwZRoodaE4YBRmtP5qUaUryIal0HTaf @@ -501,7 +487,6 @@ uid Tom Denley (scarytom) sub 9C4C23E6FFE405BD -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBE+xZxIBCACzKctn4ez8xOC0pGThhAwjYWGkzcwK4HNaC1usHThBFz3/t8JN OqUXRixLyi5wELN6GHlsGVUQS3IfB4JtuhScsieSB8PTree68/knMq6JI08mJqZr @@ -530,7 +515,6 @@ uid Robert Scholte sub 38185785755267BD -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQMuBFKTz1wRCADOdMCDOKXlBuQpG7mnQ/5rppqhS0SXdKvNZ5pYrJKib1LLtlS/ LOeABja3E1ky+znvTqnEEtai7fNhw36zPdUjhPKE0TZwn2aK5fyctkcfqBFsja3E @@ -571,7 +555,6 @@ uid The Legion of the Bouncy Castle (Maven Repository Artifact Signer) sub 520FC47ED23D6048 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBEOdvssRBADJG+C5R7J8K5J4X01qLyIdHHMFj87wnMihOqhbfPd1mW9BCvqR R/RGeUfXmDYDOLMaT4iPmQGAcQ9NGhya3NAJ3xvTBOlRXPPloZ0enxoFgrZ+Y83L @@ -638,7 +620,6 @@ uid IntelliJ IDEA Sign Key sub C9F04E6E2DC4F7F8 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFKneXIBCACtnX3ZQmPujf6ocvdnhsBheze71DSl34TfebyW2Qt+g9NhMxo4 DaJy+iFNnsaMwLZRr6k/qf+ISE3A4opWAQlbk+Wb5s6DPPA2cHH6W4GdkxtuJzqt @@ -662,12 +643,26 @@ vMxKy4GRZS18bXDI3vS6gRDNJDCqBYIhp13Os9k+ZpnwK3PPIHv4l1I0i0EHZKk= =WJEa -----END PGP PUBLIC KEY BLOCK----- +pub BD17A565509DEE20 +uid jean-pierre.lerbscher@jperf.com + +sub 33A7E11C82A964D5 +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMEZl2j9RYJKwYBBAHaRw8BAQdAPzZyNkr92xKYzBrTOsN8Fwy9l2W0ez4Hu0t3 +/MoohtG0H2plYW4tcGllcnJlLmxlcmJzY2hlckBqcGVyZi5jb224OARmXaP1Egor +BgEEAZdVAQUBAQdAoTUzjZPhQLyzRo9jIO8TrgC+mfazNL5gB+fOWhB//T4DAQgH +iH4EGBYKACYWIQRt6bgHf7svigGfSQS9F6VlUJ3uIAUCZl2j9QIbDAUJBaOKqwAK +CRC9F6VlUJ3uIIpxAP9MihNcqlK2wPp2uURiLmw16dN3o50gxWeLMjBxethg0gD/ +VLRHao8huHsPY9XMrgbHSNLZOT7geBJOdvwrTRTy3A0= +=uy+Q +-----END PGP PUBLIC KEY BLOCK----- + pub BEDE11EAF1164480 uid Joe Schmetzer sub 4BE257B370130000 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGNBFv1EEwBDAC61jyEM99KH18hI3zlfuqvGoNjTLIh0wge5vXAH8VxMR0ndOID HYSBT2+L6OeiqKlyhCgF1km48F/dMzyJdTASkNO1Ni+B2Ric1sBxjsSPufkjl4en @@ -704,7 +699,6 @@ uid Egor Andreevici sub 84761D363E7B0FC4 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBF7rgogBCADU9OwoEFdIgN5U0JU5pI7s3T1T1LeDMzAQ8l2Hq4jFrhnrjcEA ieDSut1YIv5NTBoZv4CrklaKvvQNUXPvKrFImA4OKhBodKV3wsq2efCATDGa1JAw @@ -731,7 +725,6 @@ eQh3BspmZac4oUdxAqzyU5N/Um+w90sQluFqwoVd5FX5i4L3 pub C71FB765CD9DE313 sub DFF2D25E2CD6139E -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBGOV0eQBEADTe/ljLAoBp+z84NkWHDBqbBmEsBxcGa0VDQxGsaMMi2f6wkO2 VDkRFNzNQbmw5xFqLisZ9ywzuVc9xmZ6qoMWLJaYs9RdsJSgD9+4hL5IkmjClxc9 @@ -773,7 +766,6 @@ pLzjkAmMhHafbJfJmyXZ0vmKHweyRkXFLeEX5gFFptuqic/l8R9a4+g= pub C7BF26D0BB617866 sub A82EC2795FBFF787 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBEKToQARBACwQo1n5bxuC32J8I5tQkkTPdGenebpAAK8FvbRdwEDncT2sarY E/BTbUIGSJDp81nvHrG6hxQNESLMRqyfWVBGHrXdARvHTfhQSIqTPPq7qLJ9LNdk @@ -798,7 +790,6 @@ eGYWIQT7EdS7eyRGeDN6rYvHvybQu2F4ZsvfAJ0R7OzqspUb+hQL3aztZRx8Dd4M pub CA80D1F0EB6CA4BA sub 5EAB8AD72016DF52 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBF62njsBEADakbaGRfpiftmwO/KncA+vG8cNJzPNEU1HD+o0ReMPO6H5G45b 7gxhZut1Ag1jT/vPbSsTtCloCCy8WF7GtWbjCvvRd8SMP0dlH3vG3rnprXxUCnN4 @@ -842,7 +833,6 @@ uid Eclipse Implementation of JAXB Project sub 7ECBD740FF06AEB5 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFuX5CkBEADkTgn4nzuq0lWR+7kFGYLKvmPLjes4j2nmygIafUjVbNmD70gY DPpbSP02HxgicM6xSSqzZuBVxpbcffqjMPXf8LkVX4iWKZtyzLpf34yaojigU3qF @@ -917,12 +907,27 @@ Zo/Xr9x/cYkFS8ieh6XR0y1Yx4xZIDTi3Q== =BLWG -----END PGP PUBLIC KEY BLOCK----- +pub CF9F3090CE4CB752 +uid abego Software GmbH, Germany (Key for Maven) + +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQENBE7E4m4BCADCkqre+MJRRn+yBa8PqDHFIpfxOk8lQeueZTrU0Hw14wMkkOW6 +XFBb4hDeezStNNP6s2TS7bf5YRXZwqOwwgg33WYVVH4jPldaP1m+Z3GtYSLKEjTl +G7/YqLcCtLxDdhLF3WpR7LUyZFQpIPEwRj12UyK8gU/Wy67GP3JBz/YhGTGfEaXE +13VWM6FLvS6GJVouT4lFVqPTVv54+RKz0GdlgCB7Ht7kPtpMkz8ceKGU8+JcbAsL +zkcicA97ZBzYEnlHFfoNI4M6EZumw8TXM+hvJBQ3SEWenhmUj5dwkympTahH+Dw/ +iam4sbZPiQH01GLiffeNNfTVlf0bvaczvvG5ABEBAAG0QGFiZWdvIFNvZnR3YXJl +IEdtYkgsIEdlcm1hbnkgKEtleSBmb3IgTWF2ZW4pIDxjb250YWN0QGFiZWdvLm9y +Zz4= +=8hLn +-----END PGP PUBLIC KEY BLOCK----- + pub D5F4C07A434AB3DA uid Egor Andreevici (My key) sub 9D49CFE20A7A3EE7 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBF7rvIMBEACkH8bOlnIXAH9nQYFcihkcJvv73pw66YMz4aMPJe5PzaJU6kkV 2lbEgEOnfoFLqgnJVY/KsPf00BXaP5uMzqNfJTK+HO9I7m3BTqmjLBgUegQig4K/ @@ -967,7 +972,6 @@ uid Cedric Beust sub 50C6CC55C6F24FB1 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBF8tnmMBCADROe7j1ZvgiMgfsQKqCSuSqgMkfMT2DEXwZKdHqkj0gfx8MPQg OP1pmMgpIwIXKr5kZ9KMGiGULNnS+WU2SNqjyKeq3MlnSYW5Di52MoAD7W4cHmry @@ -996,7 +1000,6 @@ uid James Ward sub 0AE7BBD7FEE66E0C -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFlMSXMBCADcgN0/57D/gU5cDobPiRuDT6qAxb/NWhQiqwAocKd274r4gPJm RbffUEZEgKhjH6l0CQfilC4R4x2QtU9sNC9kB/D6zumoS1uI0Hmx1pC4UseUy55r @@ -1025,7 +1028,6 @@ uid Allegro Opensource sub 2D6CC404866F4E98 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFIkJ4UBCADfKqxbgXn9MIyVlhAvn040katjbaT9s1Wv/hG2nLT7ps1wXSQJ GRX2iMDO1sy99KKzh+thQRakL3wR4O7WRGZ/uVTUIARiZ1P8qToVwmjT5RbqX0Im @@ -1054,7 +1056,6 @@ uid FuseSource (CODE SIGNING KEY) sub 4697DFC8F2696A57 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBEzdTPIBEADki1HMFzssqhU2l3jJr0zNE/gyPohjzI5ugw1dNWUd/ht6oUnm 2StYcsRnFHlY7aIp56v6cZtAKYDZTlEArIurH5xyQXQ3PLfxQZPVS6HDUghaa0rJ @@ -1102,7 +1103,6 @@ sub 3BD211F725778C36 sub 6C70A3B7599C5736 sub 8611CD28F472E006 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBERFeVERBACjfASThn15ynIICr0Gu8quGCl2rSSRar8TsjrbiwYB2MTW35Rg NjLU6MN5Nq4d5G8D5aMeoyGODstIHH8zA52sDGeHOMKfDaAraL+lGzElbpmaqP2s @@ -1173,7 +1173,6 @@ uid Eddu Melendez sub 82047FB369DD111A -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFf0S68BCACovMXnHqnBYRmC+rsIIPOoT1vSusHWu56beDBG7t/og/nziZq1 mcZhX4oFG/IKnY3af20Flcv0X0gNodH9fOErvQ7hZDvHBgB9HVpeKiMx7OQqRWke @@ -1202,7 +1201,6 @@ uid Netty Project Bot sub 1C9F436B883DCCF6 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBGAhOxEBEADdB5Jy2sSOndOMCTyk8IFIJYPogjXtN7CnyIlqr4jEB5G87TJf m7OxB95aIVS1vSA5ghCm88N1mKtW6jyYjgLFQbbyD9/X3ShVZjh8B2R4atL93SSK @@ -1248,7 +1246,6 @@ uid projectlombok.org sub 9AB6A72C86A72181 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBE12ft4RBACGD1rEQ8N8GS45gbepvDMNRsmRw9MudlZNK3YT3Ew1SS/EFu2v uTnPQ9//cnl1jRDQYxNzaiq4kFm4BAuozVd0TFZoCU90Wnbnfc9p5ielKt2mZtfX @@ -1281,7 +1278,6 @@ uid Herve Boutemy sub CB6D56B72FDDF8AA -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFgnlA8BCACVtx3oLXcanfvwtMRwal6pLQ8IVMG9+fr4xGdbSHXCRNbosDa5 agU7WeQMPhusSxJGaA3w7NOdjAwD/LeHADhDPeI6llJg1Fb3EyqH0NZaODKU/Or/ @@ -1310,7 +1306,6 @@ uid EE4J Automated Build sub 7CD1B9BD808646B7 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFqzjCgBEADfFggdskGls5KqMnhvePTtS4Bn/2t9Rl+Wg3ylXgy4IFd4bnI2 9f82dVM/nobNqAnhOp0wEaAcw+57xBx3rjjKQbrMzUweWeL3uJdTwtPWoyzzsUP0 @@ -1357,7 +1352,6 @@ sub 11A629398030E936 sub 944EC8D1A08CF77A sub 0181B45EA58677BC -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mDMEYiljShYJKwYBBAHaRw8BAQdA4ativA3OtR15B4YnoRwpm9rRgHdd0A0lzJ4u 6q7gsMO0I01hdHQgU2lja2VyIDxtYXR0c2lja2VyQGFwYWNoZS5vcmc+uDMEYilk @@ -1381,7 +1375,6 @@ HMPnAQDYBQo0KYBhEAiBCI2Pza5JWZzM15RymdQG/OSk7lgkBA== pub 0374CF2E8DD1BDFD sub F2E4DE8FA750E060 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBEmoKU8RBADEN0Q6AuEWEeddjARAzNXcjEx1WfTbLxW5abiiy7zLEht63mhF kBlbyxEIRnHCSrPLUqY5ROWdyey8MJw+bsQn005RZmSvq2rniXz3MpcyAcYPVPWx @@ -1411,7 +1404,6 @@ JrJYqCD0o2ZFlSyaaO+yKrkAn3IGGwB7ArjBZB5GdaGUAP3/5Luk pub 049FE94F2D5DAD9D sub 953E02E4F573B46F -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFxlMc4BEADbWFmOqHBqUUAcO9nPRSqtrmIdjBCzqsRosPk80n3Nd+jWc44T /O5TObVbn4NxCmbLxklWpIU7eTEo3u5LnwhkgcsxMykWYdq6DqyzENO9PeE/McrN @@ -1469,7 +1461,6 @@ sub 6005789E24E5AD1E sub 6A0975F8B1127B83 sub 3FF44D37464BBB7E -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGNBFzy4ngBDAC4mz6ELMWjfJ8GZtolq3E96T7qjfp4J9FxGVxdbJxkEDnn6MTg V8zhD7yeSZcUSvwzPiDlB/b4RYnh+5LjzKHTsrtr9ja0SupuCkVGkMGWeHhpIGV9 @@ -1623,7 +1614,6 @@ BedOSN7DqsnvIUfFaQ== pub 083891AD4774845A sub 8118B3BCDB1A5000 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFu1EwUBEADAXapH49L1Lwt28iK737X/+4bRDE+lkMxehnUZ7QJs5zkFz5Sh 9K2rQO0PpvoMSdadGplFyhKdDP/iEUpzxTTbqMs5UjbJr0MoFfE957Vz59mNf9WY @@ -1703,7 +1693,6 @@ uid Torsten Curdt (Code Signing Key) sub 5FB8CE6F93DDEB23 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBGAjI8sBEACtiX+/sDZDNo9M42xWgMDEUUBGkObE0opLPe9N15OHQt8Ve2yJ VW5yW0X0hcBIkaxAG7F/NpjVRN1bLGM3J3URR+XD+Ubq2KJkKW/39RHcP0m60tL2 @@ -1748,7 +1737,6 @@ uid AssertJ sub A9E4161147556D82 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBF+EGtgBCAC/KXNQAl1rz3VBbqm6ssjzR+5Su1QWHI7oYDS+YHCLOaqfE3jO zQd+8iNgniVNtX2n7bt1hido5B94VmaqD+zjjSu2UV/eZoYhCOQ5NgvxIr7WZe9t @@ -1789,7 +1777,6 @@ sMY= pub 15C71C0A4E0B8EDD sub 891E4C2D471515FE -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFcyNOoBEACj0zTN3GkRNAY3jihHZdGvi70i4R8mUfcQUwWGRsGGlzSwyJfe 20qNOHqwHaxVCAIp4e5paNf9cEKepOv5IqMkmaRdiC2W+BHDxcJgBot/IrC81ube @@ -1831,7 +1818,6 @@ jZykvvWJNn/P6KdmcsxQthX3XnbCIRq2LDL7A4GNor2DcqTyOw3cjy0= pub 1861C322C56014B2 sub 9A347756830C4541 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBEGVK0ERBADwhGhmOMvSgvGaqHW3ial0NS80ZXyE1EeNL6ke/WrXHB4dT6if inoAuUgRz3v9Na4rjSQ8YVFjn3NaZq1i8RM2KJOUU8ZkJ2AsrH6fqStjofLTd5ng @@ -1863,7 +1849,6 @@ uid Robert Scholte sub A182F48D9C2C0825 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQMuBE4CPoURCACWBMGV/j1pioJPWkD9K9NdeRvld8sBorFBZo99DF3mcJvrXo/t We7gmvcx2n/8P5lL27sYPuj6WSRgtVBlSMXllJm3NL3Hu/7XRILfJEKVeLLTdxc/ @@ -1906,7 +1891,6 @@ uid Sam Berlin sub B8C800FB51837224 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFYqcQkBCACjAM0/0XQMWIe97ntE71r2LS/wvbYNuBnS1PYHPt6GSV0w62L1 IcIBpOQhD+YZkx8sYBU3WZtb5QS7rHrQym0WbZubYyMy89mY+Nq0VRl0+aiZeKCO @@ -1936,7 +1920,6 @@ uid Rafael Winterhalter sub 7999BEFBA1039E8B sub A7E989B0634097AC -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBF3Ep5QBEADZfs6o1IpZbZ1qlBkoJ7oWL0vFCcdPUgF/PRFXWKlsuFHVVV/N oZF9SDiCJxfvsVXmI+IHTVMR2SszU2xDF2SlScRfZQwrLhBsDP9nv9N1eGIoA5Ny @@ -2015,7 +1998,6 @@ uid Cedric Beust sub BFE9E301CD277BAF -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFpqN94BCACaAb8Afmng1QPu5k5uzLoA1FJnF6Wf31ZU1FzDxHFHLNUYSWN2 Bg6k95QH5ruZ+Z/QOJSoIB+b3htDklyxd8m+G2KsMIqnQs0BaTN18hb3PFyMIknM @@ -2044,7 +2026,6 @@ uid Lerbscher sub 9F621F1AE6EF2591 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGNBGI0UjABDAC98lMPbj3vwHKSwLc8o4oAbOf9PKi/zWxjEYj7KZky4ue9JE7R QiaUCY387lWc/fXcq8Wa6/IteqekJBQw2KCrDaKBcAXLjnvO93q51ecc7Eo5U1w9 @@ -2079,7 +2060,6 @@ Z/dgWN8Go/OXuVsg2aBbH3vXvKCvJ7ZXSx5DyrHl3ckKrNgsl4RkTgS6lxs= pub 2C1F2F890A117483 sub E221AEB988AB27C3 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGNBGYMi9cBDAC8GMMw8mGfMR4Hsa8jU1Ur8j9szv+OrZ8aJe7+JfuwYsQHcXb3 XdpyAsGasPhcJmtRCUf3V2+/jY+rNz7UB+EoyiXvoQMG2biwNTU7sqoowsLs8tAW @@ -2115,7 +2095,6 @@ uid Ceki Gulcu sub 10DA72CD7FBFA159 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBE+ZO+EBCAC3fZOOuYKthr0GcUge0PH2bh18sbM9XUmPKQz/W15l1NA/2ARS 2gUXM0R+SunMlun9KsqjnojJ2ObVPvbm1Hg/66JSRgR3JWfIpSlJxLicpfu8rCfN @@ -2143,7 +2122,6 @@ uid Joakim Erdfelt sub FCF74AFDF5947ABA -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFYVT4EBEACqm1qKc6Twp2Iw0tjUqr3hrZ7mjZMWg5MemH9ZiQ9iVIqV4Lee KmgjVWk5jnTslriymDilDIMk0YaT67JokhgSdqMIavI29tJ6quOp0K7Rj/rNBc6p @@ -2188,7 +2166,6 @@ uid PagerDuty (Rundeck release signing) sub 3BB4D274C4E91F5E -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBGWcJ+EBEADVu1DfSNoLVkPmoywL+QZ0NUICep85zkkOCW9HtN/610L9qcjJ loif8XSjkWyB5+5FHAQ0K0iJrgzO/up/zVVescfQ1N5/lIyAs5WFtCcrWqdJnGIa @@ -2234,7 +2211,6 @@ uid Dennis Lundberg (CODE SIGNING KEY) sub 3624EE1473A843C2 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBETvOwgRBADbar1BLaiJnuVnDEg0aej0Q01fdOnMB8e9fxe3TJZ266LLGljS FNekCafvn52nx1KyVvkgdgMxqBfw70FKQXdrBBMzowuVAz1ZAcpDjkXeyKa3n/iW @@ -2265,7 +2241,6 @@ F8GKAJ4wlBaXv5JsdMMyJvQc+xtjXg7OVA== pub 3595395EB3D8E1BA sub FE694B892910DD22 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBErygmoBEADbs8zVUn5ZwbsG3tqT4x6U7SZYOtd3WXOtHjuu9Cyp74rZ19Pi XNbYwIAoCgOI/nXVWwuOrNJH0pHaQ73slbNzLxo2ahQIkw9PbK4V3YXLai1r/W6T @@ -2307,7 +2282,6 @@ C5gbEg+0U9fnpOxfIm9d9LBVbBODCsV4dAxizxD4skrS1ReNd9dJuqw= pub 379CE192D401AB61 sub 0CFE993CDBE1D0A2 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFTi8JIBEACcN1ucQ1uCOZ1owTELQV/6i4q7NbYdJ5wf7yPYfEugSo3yfbo3 Pw/XEvlnpDZmT155sGNOkteZtZMdcm5XhFbdtquLlrkjAcUGatq5rAt3eLAlvU7u @@ -2351,7 +2325,6 @@ uid Dain Sundstrom sub 4AF360172D8D4DC8 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBE4KeqwBCADHUgytFpv7cJv8wfVQwyuYC8+QtbdTtOErEIpnaYQT9FV9uAs8 54dmofBSZkkSSo4nsFGNsCALzDh5TdXxetrsthduyvpBGXGgesr1JsQWb8fM0o5A @@ -2380,7 +2353,6 @@ uid Lasse Collin sub 5923A9D358ADF744 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBEzEOZIBEACxg/IuXERlDB48JBWmF4NxNUuuup1IhJAJyFGFSKh3OGAO2Ard sNuRLjANsFXA7m7P5eTFcG+BoHHuAVYmKnI3PPZtHVLnUt4pGItPczQZ2BE1WpcI @@ -2519,7 +2491,6 @@ bSf/SyMD3cNsG1LRfTCT6Qi6k8DkpZ0rkw== pub 3A1959EEF8726006 sub D908A43FB7EC07AC -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFu07rsBEADYizNlY0FYNZ6q2wx7AmWLw6PHje55uFhYM8Saqtwg/rm1tl78 j28E/coP2zMFf/ec+zqKsfYi4DMmLZ9ESIngMUOIE7mY0Pp4WN7oYFRtvU0ARWyp @@ -2599,7 +2570,6 @@ uid Tatu Saloranta (cowtowncoder) sub 575D6C921D84AC76 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBGL4BxIBEAC+lX44fd/zrVQPzdKygarBd/X0bBpGakT++Kfk4UBGl3q+wd2G R9puB9R377ds8hU7U3To8sHguUZo6DbD9Gb/is/WajSb9g92z+rMow3KbqfCYqWr @@ -2643,7 +2613,6 @@ LBaslDFjyxMECWr3v7TuEmEmNcD+KwNyACFNuBjEBWeuJZYwCkAkVy8AyitrTMh8 pub 3FAAD2CD5ECBB314 sub 3260CB2DEF74135B -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFhqdSMBEACmveOOsQrTky8b5M+Cq6lbhqRB4+INnfigxr7+EMpswo4AxYuA Op/YG+G7NU5h6EK6Tj2dVfXga90GYFkehtFRZgOUJUGKPU/53upsbnsWS8qjJD8g @@ -2687,7 +2656,6 @@ uid Craig Blake sub EE3B879911DE2AEA -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGNBGEUnIEBDAC8cImt6IrYWz0fBJaETpvhxsHwwQBK3JXkFlYxvoyheXRm6qah B+ip0hssvMpn8QpIXKuo0gPHpQc7VcOR0xQhgB9vqCtav+1iDFr082mKHN19LS2i @@ -2723,7 +2691,6 @@ pub 55C7E5E701832382 uid Andrey Somov (SnakeYAML) -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mI0EVdDLQQEEAJMtYCaTA56YsP5RzQzPvqVTaR2nZ27qRk36blHB9WmXK+NHpGeH PHgq59mLPVueo2/M5k/fFrCe36jHePP31gYpFtueeYDfsofHwod0WhsHyC7JfG8d @@ -2736,7 +2703,6 @@ bT4= pub 5796E91EE6619C69 sub 153E7A3C2B4E5118 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFri3Q8BEAC90D8TTu6C05m/eq6HbU8gOHFc+2VJriVmnoyODTlEk/LAsT6h BRok7nzY0LpNUzUREjJy/w80YTOjLs25IFhnqA6mq8BGLjFwjhBPA4piCyhW/Elh @@ -2813,7 +2779,6 @@ lIJGa06yRs6cyixaMKVlKMuPWIhlGcPfN2KB8A== pub 586654072EAD6677 sub 2E74CACB6918A897 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBE1VSkkRBACkCgvt26sMi+0X+EOJDMqdK0Sziy06k47LJf1jOg4tTZ2T9QtP OZ8fD+va/O5+q8Kna993jzcO5n0Nv+R/K3+MvUqSmdITshCIjBt3cC0n6FWndGyl @@ -2845,7 +2810,6 @@ uid Jason Hunter sub 990B862E2E89C087 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBGGugdABCACl8r69cybA9Xv4mVUXH2UErQutkOsCxXJCb6KcL5Ucn7+0RGxc PRdw+sw2VBJsBctdUeCvNA6o1126O0gSgbQPTojvdyYtq4J9OAjS11RoiiQ269Zc @@ -2872,7 +2836,6 @@ ezU9zGj6SYQAiRlsnOsiaSZ6UK8uheTm0JeV9uaSYOYqJBGN pub 5B05CCDE140C2876 sub 9D29AE4A6B50E01F -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQMuBEwVZOURCADNnKQzSjFuI9/IGj3WTJcPU2B/H8NbZaTsz5WE91WumgZulK2q YeD4u6zdOyFK7DEScgxk7dicox9cNEgYKQnQXctDhfqER9bnvA2iJ+AFxjRAWyvs @@ -2914,7 +2877,6 @@ AbkFh1ZqtxZT1P405+r10MA= pub 5F69AD087600B22C sub 0440006D577EAE4B -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBE7JURcBCADO+9Dc4/JnB+wX+fq+Fr2zUGSPOT6/qjE5kXL4FEbJKsqDSAKG VnbtRrsIUdmNIFQmz71bBDFhRBbrSrkz927k8eUPhYtxE2NmmWSuKgrjF4qviPQv @@ -2940,7 +2902,6 @@ n7oW6Hlgi9KOLbRRIg7vwZVo2Ixco7aGxZp5c4zSfaPvn241v813ZcA= pub 6425559C47CC79C4 sub D547B4A01F74AC1E -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBE3XFIUBCADcj1zw8m1evCgEMqxgOfl6L8y1tsYWsX7tVPvHEkYlXHrdcpkB fGuWPrauvhBmB9sBkFfxzU98Ilz3Xk9pfISYiaMUk9Mk1ZxsCoYPVhxvOSvk5LgS @@ -2966,7 +2927,6 @@ k7av3ES981yzCPqSxjmWAi0TWugIjrW6eRqMfhWIeF6otn/vBGbp44U= pub 6601E5C08DCCBB96 sub 0AC07D0BBD11498C -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGNBGBVUWMBDACXALXWXSrB2V95lR1L+i+sQsTQt8tCIgX0iX9UZ7Vw2K/lLnLw WYtM3oTxYox4OdgkK9tK6771EdCH5wQtRdUQJjlsBfZDPMiGqmh1jrAxAugEkFyC @@ -3001,7 +2961,6 @@ pub 66B50994442D2D40 uid Square Clippy -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBGDoYisBEACqUDZnT4h6ma6XIzdC6KR++uDbR2VKdhCuv0Og/sHEKkm6ZbG0 OFB8tAaQx/WlsoQyf3DlLfUEOGDai875Aqor3fbM+E1hrZbQNfsOySKEE52k7PYe @@ -3024,7 +2983,6 @@ uid Paul King sub EA8543C570FAF804 sub CA890A5FA09CFD80 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFgMcBMBEAC/xcIVVOOh+F7S0OTzBlFH34s5fDbi6Zto469tZyW1peyWtXAZ m+2jzFfeTCHaUQO3YjoTy2fPygS4tVD+ew4EAzMG5Uti4kwWZw0PYKz2JO/gl1JY @@ -3092,7 +3050,6 @@ uid John Engelman sub 3605922A9B0C4A82 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFTCZ/YBCAC/AX5Uve8E97kKLWumtArjcouxHzENzNez3/wjiuIdCTchm/G6 fUKHNTqo9sdcnvAO4mfJbysXh1tqXl6zxjw1QdQGCyy8klGRlpEiper0eS5heDhV @@ -3126,7 +3083,6 @@ Oa4= pub 72475FD306B9CAB7 sub 1723844CF9A045EC -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBE7+huMBCADW9rfqKBXOqUSLCK5Klag5WqLFxAOddqEM7wTx/42XaIKjDiAW gmFnV4XBKm/7Z4fwWq7+ku6NDYUjBpI4vcQ2hYJJ4SRWZHT5wWzOmqgznf+/Qwug @@ -3152,7 +3108,6 @@ TIjthffHWnAJv0K/EE8kY+ONuK5AkitlW2bb2pXsMpWOdeMYNpVf0oc= pub 72FEFD1572EB75E1 sub E95B8FF73F6B84E3 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFt1xhcBCADDofPZYtlG1I5NRG67j5Fn8KArIzKK9L3bH3MfJC+XYYPY2N11 ckiF3JQ0kXH3BPL6r0+dOQm/9SGJYsRVRYYoz2HEf/bzLSxFvKeEdEsWh66IcEzp @@ -3180,7 +3135,6 @@ uid Daniel Doubrovkine sub 960955779E55310A -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQENBFK5qloBCADJyQVsyP0ELVb2UDIHqJxkvHnV/zJDH/w04HaaIw28sna8vCrX 9XVTiNL5F+8Krsdt5D/RXut6l6AEhdWHhRvXpdjyBZzYbyowiMrP58CDS5/O6Pis @@ -3207,7 +3161,6 @@ ai6SccJ/uaTNvw== pub 7A8860944FAD5F62 sub C189C86B813330C4 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBEvxja8BEADAzZOup1X0B12zJsNsDvXVIwmM6bB+uhEsUHoFTvmsEVwRoZtn i7Q0WSFoY+LDxbvC4Bg1+urCrUrstRJYRyF/pMqPYq/HokRlPjtrli/i3mUSd0zN @@ -3250,7 +3203,6 @@ pub 7B2F0491728B8E02 uid str4d (Package signing) -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQINBFPjQ3oBEACoF+kwxAFKlzfDPmQUkzW6gwAx83oZI0jvPxFMDbuxtURASO45 4HuMMPXnD8VSNR9NlNYISEu9yaTzgIDU61CArldJ3/scX6EwstnfNqjnU/N4efDl @@ -3272,7 +3224,6 @@ uid Oleg Kalnichevski sub 926DFB2EDB329089 -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBEPonucRBACtbhYckAoyz1tuSXYX4XiqGa5390gIMcxe2hJ+Ncx9o3zX09Im f8PW27BnMrz7EIydgB2wphhjfK4vkNNtm5ZDWH/zJStsk1Fe7lNuuxs8XorX1+8D @@ -3302,7 +3253,6 @@ jX+NTR/p0O+L90b6T+xFin/RXxLRaa+IRgQYEQIABgUCQ+ifBwAKCRB8JSgOrmPr pub 7C7D8456294423BA sub 9842FE565AA0601E -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: BCPG v@RELEASE_NAME@ mQGiBEvsZw4RBADH20nX+H1xvMBYmXRj1Aae4dRr6Y6qI7QRWHO6Z7/dxr9bk/NN Yjq5KsVOQxZzloVdtqx75rznT7fZq98g7Nq9IeEtB6k4tnh6XQLhljJMk0a3mzdt diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 072d09cf..b7bd4bfe 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -5,6 +5,7 @@ true + @@ -12,6 +13,7 @@ + @@ -41,7 +43,10 @@ - + + + + @@ -55,9 +60,13 @@ + - + + + + @@ -91,6 +100,7 @@ + @@ -162,6 +172,21 @@ + + + + + + + + + + + + + + + @@ -172,6 +197,11 @@ + + + + + @@ -182,6 +212,11 @@ + + + + + @@ -423,7 +458,7 @@ - + @@ -444,7 +479,7 @@ - + @@ -465,26 +500,26 @@ - + - + - + - + - + - + @@ -811,6 +846,11 @@ + + + + + @@ -973,6 +1013,14 @@ + + + + + + + + @@ -1629,6 +1677,11 @@ + + + + + @@ -1842,10 +1895,10 @@ - + - + @@ -1868,7 +1921,7 @@ - + @@ -1994,6 +2047,14 @@ + + + + + + + + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4eaec467..a3c498af 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/rd-cli-tool/src/test/groovy/org/rundeck/client/tool/commands/ExecutionsSpec.groovy b/rd-cli-tool/src/test/groovy/org/rundeck/client/tool/commands/ExecutionsSpec.groovy index a523631b..9890287d 100644 --- a/rd-cli-tool/src/test/groovy/org/rundeck/client/tool/commands/ExecutionsSpec.groovy +++ b/rd-cli-tool/src/test/groovy/org/rundeck/client/tool/commands/ExecutionsSpec.groovy @@ -417,7 +417,7 @@ class ExecutionsSpec extends Specification { (doesapi?1:0) * api.deleteAllJobExecutions('jobid') >> Calls.response( new BulkExecutionDeleteResponse( allsuccessful:allsuccess, - failures: allsuccess?[]:[new BulkExecutionDeleteResponse.DeleteFailure(id:'jobid',message:'amessage')] + failures: allsuccess ? [] : [new BulkExecutionDeleteResponse.DeleteFailure(id:'jobid',message:'amessage')] ) ) diff --git a/rd-cli-tool/src/test/groovy/org/rundeck/client/tool/commands/JobsSpec.groovy b/rd-cli-tool/src/test/groovy/org/rundeck/client/tool/commands/JobsSpec.groovy index 171a5ab1..e7218615 100644 --- a/rd-cli-tool/src/test/groovy/org/rundeck/client/tool/commands/JobsSpec.groovy +++ b/rd-cli-tool/src/test/groovy/org/rundeck/client/tool/commands/JobsSpec.groovy @@ -325,7 +325,7 @@ class JobsSpec extends Specification { then: 1 * api.listJobs('ProjectName', job, null,null,null) >> Calls.response([new JobItem(id: 'fakeid')]) - 1 * api.deleteJobsBulk({ it.ids == ['fakeid'] }) >> Calls.response(new DeleteJobsResult(allsuccessful: allsuccess, failed: allsuccess?[]:[new DeleteJob(id:'fakeid')])) + 1 * api.deleteJobsBulk({ it.ids == ['fakeid'] }) >> Calls.response(new DeleteJobsResult(allsuccessful: allsuccess, failed: allsuccess ? [] : [new DeleteJob(id:'fakeid')])) 0 * api._(*_) result == exit @@ -684,7 +684,7 @@ class JobsSpec extends Specification { then: 1 * api.bulkEnableJobs(_) >> Calls.response(new BulkToggleJobExecutionResponse( allsuccessful: issuccess, - failed: issuccess?[]:[new BulkToggleJobExecutionResponse.Result()] + failed: issuccess ? [] : [new BulkToggleJobExecutionResponse.Result()] )) 0 * api._(*_) result == exit @@ -712,7 +712,7 @@ class JobsSpec extends Specification { then: 1 * api.bulkDisableJobs(_) >> Calls.response(new BulkToggleJobExecutionResponse( allsuccessful: issuccess, - failed: issuccess?[]:[new BulkToggleJobExecutionResponse.Result()] + failed: issuccess ? [] : [new BulkToggleJobExecutionResponse.Result()] )) 0 * api._(*_) result == exit @@ -740,7 +740,7 @@ class JobsSpec extends Specification { then: 1 * api.bulkEnableJobSchedule(_) >> Calls.response(new BulkToggleJobScheduleResponse( allsuccessful: issuccess, - failed: issuccess?[]:[new BulkToggleJobScheduleResponse.Result()] + failed: issuccess ? [] : [new BulkToggleJobScheduleResponse.Result()] )) 0 * api._(*_) result == exit @@ -768,7 +768,7 @@ class JobsSpec extends Specification { then: 1 * api.bulkDisableJobSchedule(_) >> Calls.response(new BulkToggleJobScheduleResponse( allsuccessful: issuccess, - failed: issuccess?[]:[new BulkToggleJobScheduleResponse.Result()] + failed: issuccess ? [] : [new BulkToggleJobScheduleResponse.Result()] )) 0 * api._(*_) result == exit diff --git a/rd-cli-tool/src/test/groovy/org/rundeck/client/tool/commands/projects/ArchivesSpec.groovy b/rd-cli-tool/src/test/groovy/org/rundeck/client/tool/commands/projects/ArchivesSpec.groovy index bf027dab..e72900eb 100644 --- a/rd-cli-tool/src/test/groovy/org/rundeck/client/tool/commands/projects/ArchivesSpec.groovy +++ b/rd-cli-tool/src/test/groovy/org/rundeck/client/tool/commands/projects/ArchivesSpec.groovy @@ -161,7 +161,7 @@ class ArchivesSpec extends Specification { sut.asyncImportStatus(project) then: - 1 * api.asyncImportProjectArchiveStatus(project.project) >> Calls.response(new AsyncProjectImportStatus()) + 1 * api.asyncImportProjectArchiveStatus(project.getProject()) >> Calls.response(new AsyncProjectImportStatus()) 0 * api._(*_) } diff --git a/rd-testing/src/main/groovy/org/rundeck/client/testing/MockRdTool.groovy b/rd-testing/src/main/groovy/org/rundeck/client/testing/MockRdTool.groovy index 4d6604a6..c483dd60 100644 --- a/rd-testing/src/main/groovy/org/rundeck/client/testing/MockRdTool.groovy +++ b/rd-testing/src/main/groovy/org/rundeck/client/testing/MockRdTool.groovy @@ -54,7 +54,7 @@ class MockRdTool implements RdTool { @Override String projectOrEnv(final ProjectInput options) throws InputError { - return options.project + return options.getProject() } @Override From f545e33f3b665b7b1693caba3484169b360cd2d1 Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Mon, 6 Apr 2026 20:45:05 -0700 Subject: [PATCH 02/13] Gradle 8, Java 17, Groovy 4 and a few other package bumpts. --- README.md | 5 +++ build.gradle | 8 ++++- gradle/libs.versions.toml | 5 ++- gradle/verification-keyring.gpg | Bin 0 -> 122273 bytes gradle/verification-metadata.xml | 59 +++++++++++++++++++++++++------ rd-cli-acl/build.gradle | 4 ++- rd-cli-tool/build.gradle | 7 +++- 7 files changed, 71 insertions(+), 17 deletions(-) create mode 100644 gradle/verification-keyring.gpg diff --git a/README.md b/README.md index 3149db6b..4a42902a 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,11 @@ Dependency verification is automatically updated by Renovate when dependencies c This updates both `gradle/verification-metadata.xml` (trusted keys) and `gradle/verification-keyring.keys` (PGP keyring). Commit both files. +**Rundeck `X.Y.Z-SNAPSHOT`:** If that command fails with `Multiple entries with same key` for `org.rundeck:rundeck-authz-*`, Gradle merged two different snapshot builds in one run. Use one of these approaches: + +1. Temporarily set `rundeck` in `gradle/libs.versions.toml` to a **released** version on Maven Central (see `org.rundeck:rundeck-authz-core` there), run the command above, then restore `X.Y.Z-SNAPSHOT` and **re-apply** the Sonatype snapshot checksum blocks for the authz JARs/modules (or copy them from a prior commit). +2. Add or adjust checksums and trusted keys **by hand** for the new snapshot build, using artifacts from [Sonatype snapshots](https://central.sonatype.com/repository/maven-snapshots/). + ## Refresh Dependency Verification Keys After a failed build. diff --git a/build.gradle b/build.gradle index 896039ef..63d51401 100644 --- a/build.gradle +++ b/build.gradle @@ -165,9 +165,15 @@ allprojects { project.version = scmVersion.version ext.rpmVersion=project.version.replaceAll('-', '.') + // Central and Sonatype snapshots before mavenLocal() so org.rundeck artifacts are not + // shadowed by stale ~/.m2 copies (avoids duplicate verification / metadata merge issues). repositories { - mavenLocal() mavenCentral() + maven { + url = uri('https://central.sonatype.com/repository/maven-snapshots/') + mavenContent { snapshotsOnly() } + } + mavenLocal() } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b783c8c6..23e0f592 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -16,9 +16,8 @@ buildConfig = "3.1.0" jacksonDatabind = "2.21.1" picocli = "4.7.7" snakeYaml = "2.0" -#used for authz lib integration -rundeck = "4.17.6-20240402" -testcontainers = "1.21.3" +rundeck = "6.0.0-SNAPSHOT" +testcontainers = "1.21.4" commonsCompress = "1.28.0" # Spock mocks of concrete classes; not always pulled transitively with groovy-all 4.x byteBuddy = "1.15.11" diff --git a/gradle/verification-keyring.gpg b/gradle/verification-keyring.gpg new file mode 100644 index 0000000000000000000000000000000000000000..f6add16e71552c62d28d2aba1025ec6723df6e12 GIT binary patch literal 122273 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 literal 0 HcmV?d00001 diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index b7bd4bfe..e90e4263 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -14,6 +14,7 @@ + @@ -25,13 +26,17 @@ - + + + + + @@ -1877,6 +1882,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -1973,20 +2002,20 @@ - - - + + + - - + + - - - + + + - - + + @@ -2047,6 +2076,14 @@ + + + + + + + + diff --git a/rd-cli-acl/build.gradle b/rd-cli-acl/build.gradle index 2cf0704b..f8fe2687 100644 --- a/rd-cli-acl/build.gradle +++ b/rd-cli-acl/build.gradle @@ -22,7 +22,9 @@ dependencies { testImplementation project(":rd-cli-lib"), project(":rd-api-client") - testImplementation libs.bundles.rundeckAuthz + testImplementation(libs.bundles.rundeckAuthz) { + exclude(group: 'org.yaml', module: 'snakeyaml') + } testImplementation libs.retrofitMock testImplementation libs.okhttpMockwebserver testImplementation libs.bundles.test diff --git a/rd-cli-tool/build.gradle b/rd-cli-tool/build.gradle index 5b344fef..7aa9064f 100644 --- a/rd-cli-tool/build.gradle +++ b/rd-cli-tool/build.gradle @@ -48,9 +48,14 @@ ext.developers = [ [id: 'gschueler', name: 'Greg Schueler', email: 'greg@rundeck.com'] ] -repositories{ +repositories { mavenCentral() + maven { + url = uri('https://central.sonatype.com/repository/maven-snapshots/') + mavenContent { snapshotsOnly() } + } maven { url 'https://jitpack.io' } + mavenLocal() } dependencies { From d8c498d7eba4bed0b29f8b145528f4f2719c3a91 Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Mon, 6 Apr 2026 20:46:21 -0700 Subject: [PATCH 03/13] Snyk 2.3.0 --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8ccd4fd0..c9af98b8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,7 +1,7 @@ version: 2.1 orbs: - snyk: snyk/snyk@2.3.3 # https://github.com/snyk/snyk-orb/ + snyk: snyk/snyk@2.3.0 # https://github.com/snyk/snyk-orb/ jobs: build: From 93623d2aeb87c3b1a6932973626536c2460248be Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Mon, 6 Apr 2026 20:47:53 -0700 Subject: [PATCH 04/13] fix convenience image --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c9af98b8..80b279c6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,7 +7,7 @@ jobs: build: docker: # specify the version you desire here - - image: cimg/openjdk:17 + - image: cimg/openjdk:17.0 # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images @@ -49,7 +49,7 @@ jobs: snyk_test: docker: - - image: cimg/openjdk:17 # this should match what's used in the rest of the project + - image: cimg/openjdk:17.0 # this should match what's used in the rest of the project steps: - checkout - setup_remote_docker From bd5255c06ee4887f9f79b5f814ff0d81ff17fe9f Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Mon, 6 Apr 2026 21:00:54 -0700 Subject: [PATCH 05/13] Update config.yml --- .circleci/config.yml | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 80b279c6..18207dc6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -68,7 +68,32 @@ jobs: else echo "Skipping monitor for non-main branch - no data sent to dashboard" fi - - run: snyk test --severity-threshold=high --all-projects --detection-depth=10 --scan-all-unmanaged || true # will NOT fail step if any results are found + - run: snyk test --severity-threshold=high --all-projects --detection-depth=10 --scan-all-unmanaged --json > snyk-results.json || true # will NOT fail step if any results are found + - run: + name: CVE Summary + command: | + if [ -f snyk-results.json ]; then + # Check if scan failed (error field present) + if jq -e '.error' snyk-results.json > /dev/null 2>&1; then + echo "Snyk scan failed - see snyk-results.json for details" + exit 0 + fi + echo "=== CVEs Found ===" + jq -r '.[] | select(type == "object") | select(.vulnerabilities != null) | .vulnerabilities[] | select(.identifiers.CVE | length > 0) | [(.identifiers.CVE | join(",")), .severity, .moduleName, .title] | @csv' snyk-results.json | sort -u | tee snyk-summary.csv || echo "No CVEs found - clean scan!" + echo "==================" + else + echo "No snyk-results.json found — skipping CVE summary" + fi + - run: + name: Convert Snyk results to JUnit XML + when: always + command: | + if [ -f snyk-results.json ]; then + mkdir -p test-results/junit + bash scripts/convert_snyk_junit.sh snyk-results.json > test-results/junit/snyk-junit.xml + fi + - store_test_results: + path: test-results # will NOT fail step if any results are found workflows: version: 2 From 4af0677f9117f6077545268a6b5846ad49871637 Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Mon, 6 Apr 2026 21:05:24 -0700 Subject: [PATCH 06/13] Create convert_snyk_junit.sh --- scripts/convert_snyk_junit.sh | 177 ++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100755 scripts/convert_snyk_junit.sh diff --git a/scripts/convert_snyk_junit.sh b/scripts/convert_snyk_junit.sh new file mode 100755 index 00000000..d558ec46 --- /dev/null +++ b/scripts/convert_snyk_junit.sh @@ -0,0 +1,177 @@ +#!/bin/bash +set -euo pipefail + +# Converts Snyk JSON output (from `snyk test --all-projects --json`) to JUnit XML +# for native display in CircleCI's Tests tab. +# +# Key behaviors: +# - Deduplicates findings by moduleName (package) across all scanned projects +# - Filters out license issues (snyk:lic: prefix), keeping only security vulnerabilities +# - Uses moduleName as classname for consistent CircleCI test tracking across runs +# - Aggregates all CVEs/CWEs/Snyk IDs for a package into one test case +# - Reports highest severity and highest CVSS score per package + +readonly IN=${1:-/dev/stdin} + +xml_escape() { + local s="$1" + s="${s//&/&}" + s="${s///>}" + s="${s//\"/"}" + s="${s//\'/'}" + echo "$s" +} + +emit_empty() { + echo '' +} + +convert_snyk_junit() { + local inputfile="$IN" + + # If reading from stdin, buffer to a temp file so we can read multiple times + if [ "$inputfile" = "/dev/stdin" ]; then + inputfile=$(mktemp) + cat > "$inputfile" + fi + + echo "input file: $IN" >&2 + + if ! jq empty < "$inputfile" 2>/dev/null; then + echo "ERROR: Invalid JSON in $IN" >&2 + emit_empty + return 0 + fi + + if jq -e 'type == "object" and has("error")' < "$inputfile" > /dev/null 2>&1; then + echo "Snyk scan had errors - generating empty JUnit output" >&2 + emit_empty + return 0 + fi + + local tmpfile + tmpfile=$(mktemp) + trap "rm -f '$tmpfile'" EXIT + + # Flatten all vulnerabilities across projects, filter out license issues, + # deduplicate by moduleName, and aggregate findings per package. + jq -c ' + def sev_rank: + if . == "critical" then 0 + elif . == "high" then 1 + elif . == "medium" then 2 + elif . == "low" then 3 + else 4 end; + + [ .[] | select(type == "object") | .vulnerabilities[]? ] + | map(select(.id | startswith("snyk:lic:") | not)) + | group_by(.moduleName) + | map({ + moduleName: .[0].moduleName, + versions: ([.[].version] | unique | sort), + snykIds: ([.[].id] | unique), + cves: [.[].identifiers.CVE[]?] | unique | sort, + cwes: [.[].identifiers.CWE[]?] | unique | sort, + titles: ([.[].title] | unique), + highestSeverity: ([ .[].severity ] | map({sev: ., rank: (. | sev_rank)}) | sort_by(.rank) | .[0].sev), + maxCvssScore: ([.[].cvssScore // 0] | max), + fixedIn: [.[].fixedIn[]?] | unique | sort, + isUpgradable: ([.[].isUpgradable] | any), + totalOccurrences: length + }) + | sort_by((.highestSeverity | sev_rank), .moduleName) + ' < "$inputfile" > "$tmpfile" + + local uniquePackages + uniquePackages=$(jq 'length // 0' < "$tmpfile") + uniquePackages=${uniquePackages:-0} + local totalOccurrences + totalOccurrences=$(jq '[.[].totalOccurrences] | add // 0' < "$tmpfile") + totalOccurrences=${totalOccurrences:-0} + + echo "uniquePackages: $uniquePackages (from $totalOccurrences total occurrences across projects)" >&2 + + echo '' + echo "" + + for sev in critical high medium low; do + local sevPkgs + sevPkgs=$(jq -c "[.[] | select(.highestSeverity == \"$sev\")]" < "$tmpfile") + local sevCount + sevCount=$(echo "$sevPkgs" | jq 'length') + sevCount=${sevCount:-0} + + if [ "$sevCount" -eq 0 ]; then + continue + fi + + echo " " + + echo "$sevPkgs" | jq -c '.[]' | while IFS= read -r pkg; do + local moduleName highestSev maxCvss isUpgradable totalOcc + moduleName=$(echo "$pkg" | jq -r '.moduleName') + highestSev=$(echo "$pkg" | jq -r '.highestSeverity') + maxCvss=$(echo "$pkg" | jq -r '.maxCvssScore') + isUpgradable=$(echo "$pkg" | jq -r '.isUpgradable') + totalOcc=$(echo "$pkg" | jq -r '.totalOccurrences') + + local versions snykIds cves cwes titles fixedIn + versions=$(echo "$pkg" | jq -r '.versions | join(", ")') + snykIds=$(echo "$pkg" | jq -r '.snykIds | join(", ")') + cves=$(echo "$pkg" | jq -r '.cves | join(", ")') + cwes=$(echo "$pkg" | jq -r '.cwes | join(", ")') + titles=$(echo "$pkg" | jq -r '.titles | join("; ")') + fixedIn=$(echo "$pkg" | jq -r '.fixedIn | join(", ")') + + local idLabel="" + if [ -n "$cves" ]; then + idLabel="$cves" + elif [ -n "$cwes" ]; then + idLabel="$cwes" + else + idLabel="$snykIds" + fi + + local sevUpper + sevUpper=$(echo "$highestSev" | tr '[:lower:]' '[:upper:]') + + local escapedName escapedClass escapedTitle + escapedName=$(xml_escape "${sevUpper} ${moduleName} (${totalOcc} findings) ${idLabel}") + escapedClass=$(xml_escape "$moduleName") + escapedTitle=$(xml_escape "$titles") + + cat < + + + + +END + done + + echo " " + done + + if [ "$uniquePackages" -eq 0 ]; then + echo " " + echo " " + echo " " + fi + + echo "" +} + +convert_snyk_junit From 66616eb3dcfcad6375a125c2876c9ac8ce10dc42 Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Mon, 6 Apr 2026 21:09:34 -0700 Subject: [PATCH 07/13] jackson 2.21.2 --- gradle/libs.versions.toml | 2 +- gradle/verification-metadata.xml | 45 +++++++++++++++++++++++++++----- 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 23e0f592..454039f0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,7 @@ shadow = "8.1.1" ospackage = "11.11.2" buildInfo = "0.9" buildConfig = "3.1.0" -jacksonDatabind = "2.21.1" +jacksonDatabind = "2.21.2" picocli = "4.7.7" snakeYaml = "2.0" rundeck = "6.0.0-SNAPSHOT" diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index e90e4263..be2b2ebd 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -187,9 +187,9 @@ - - - + + + @@ -202,9 +202,9 @@ - - - + + + @@ -230,6 +230,17 @@ + + + + + + + + + + + @@ -238,6 +249,17 @@ + + + + + + + + + + + @@ -246,6 +268,17 @@ + + + + + + + + + + + From c137e12ca288dbc24c71d885d8e39ef4729f2168 Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Tue, 14 Apr 2026 14:47:14 -0700 Subject: [PATCH 08/13] Kill Java 11 from workflows. --- .github/workflows/gradle.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index c9f02d4c..c9332785 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -32,13 +32,8 @@ jobs: needs: build strategy: matrix: - jdk: [ "openjdk-11-jdk","openjdk-17-jdk","openjdk-21-jdk" ] - ubuntu: ["20.04", "22.04"] - include: - - jdk: 'openjdk-11-jdk' - ubuntu: '18.04' - - jdk: 'openjdk-17-jdk' - ubuntu: '18.04' + jdk: ["openjdk-17-jdk","openjdk-21-jdk", "openjdk-25-jdk" ] + ubuntu: ["22.04"] steps: - uses: actions/checkout@v3 with: @@ -60,7 +55,7 @@ jobs: needs: build strategy: matrix: - jdk: [ "java-11-openjdk","java-17-openjdk","java-21-openjdk" ] + jdk: ["java-17-openjdk","java-21-openjdk","java-25-openjdk" ] steps: - uses: actions/checkout@v3 with: From 49ea7edba7733c8f2276282d0f0a9efa90a1d53e Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Tue, 14 Apr 2026 14:48:19 -0700 Subject: [PATCH 09/13] Remove old Docs folder content and redirect to web docs. --- docs/.gitignore | 3 - docs/.ruby-version | 1 - docs/Gemfile | 27 -- docs/Gemfile.lock | 91 ---- docs/{README => README.md} | 0 docs/_changes.md | 6 - docs/_config.yml | 36 -- docs/_includes/footer.html | 43 -- docs/_includes/header.html | 37 -- docs/assets/main.scss | 25 -- docs/changes.md | 522 ----------------------- docs/images/downloads-by-bintray-150.png | Bin 13770 -> 0 bytes docs/index.md | 28 -- 13 files changed, 819 deletions(-) delete mode 100644 docs/.gitignore delete mode 100644 docs/.ruby-version delete mode 100644 docs/Gemfile delete mode 100644 docs/Gemfile.lock rename docs/{README => README.md} (100%) delete mode 100644 docs/_changes.md delete mode 100644 docs/_config.yml delete mode 100644 docs/_includes/footer.html delete mode 100644 docs/_includes/header.html delete mode 100644 docs/assets/main.scss delete mode 100644 docs/changes.md delete mode 100644 docs/images/downloads-by-bintray-150.png delete mode 100644 docs/index.md diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index 45c15053..00000000 --- a/docs/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -_site -.sass-cache -.jekyll-metadata diff --git a/docs/.ruby-version b/docs/.ruby-version deleted file mode 100644 index 34cde569..00000000 --- a/docs/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -3.2.6 diff --git a/docs/Gemfile b/docs/Gemfile deleted file mode 100644 index 535ade90..00000000 --- a/docs/Gemfile +++ /dev/null @@ -1,27 +0,0 @@ -source "https://rubygems.org" -# Keep in sync with .ruby-version (Ruby 3+ required; Jekyll 4.3 + current ffi need Ruby >= 3.0) -ruby "3.2.6" - -# Hello! This is where you manage which Jekyll version is used to run. -# When you want to use a different version, change it below, save the -# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: -# -# bundle exec jekyll serve -# -# This will help ensure the proper Jekyll version is running. -# Happy Jekylling! -gem "jekyll", "4.3.0" - -# This is the default theme for new Jekyll sites. You may change this to anything you like. -gem "minima", "~> 2.5", ">= 2.5.1" - -gem "kramdown", ">= 2.3.0" - -# If you want to use GitHub Pages, remove the "gem "jekyll"" above and -# uncomment the line below. To upgrade, run `bundle update github-pages`. -# gem "github-pages", group: :jekyll_plugins - -# If you have any plugins, put them here! -group :jekyll_plugins do - gem "jekyll-feed", "~> 0.12", ">= 0.12.0" -end diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock deleted file mode 100644 index 8d12c56c..00000000 --- a/docs/Gemfile.lock +++ /dev/null @@ -1,91 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.9.0) - public_suffix (>= 2.0.2, < 8.0) - bigdecimal (4.1.1) - colorator (1.1.0) - concurrent-ruby (1.3.6) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - eventmachine (1.2.7) - ffi (1.17.4) - forwardable-extended (2.6.0) - google-protobuf (4.34.1) - bigdecimal - rake (~> 13.3) - http_parser.rb (0.8.1) - i18n (1.14.8) - concurrent-ruby (~> 1.0) - jekyll (4.3.0) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (~> 1.0) - jekyll-sass-converter (>= 2.0, < 4.0) - jekyll-watch (~> 2.0) - kramdown (~> 2.3, >= 2.3.1) - kramdown-parser-gfm (~> 1.0) - liquid (~> 4.0) - mercenary (>= 0.3.6, < 0.5) - pathutil (~> 0.9) - rouge (>= 3.0, < 5.0) - safe_yaml (~> 1.0) - terminal-table (>= 1.8, < 4.0) - webrick (~> 1.7) - jekyll-feed (0.17.0) - jekyll (>= 3.7, < 5.0) - jekyll-sass-converter (3.1.0) - sass-embedded (~> 1.75) - jekyll-seo-tag (2.8.0) - jekyll (>= 3.8, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - kramdown (2.5.2) - rexml (>= 3.4.4) - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.4) - listen (3.10.0) - logger - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - logger (1.7.0) - mercenary (0.4.0) - minima (2.5.2) - jekyll (>= 3.5, < 5.0) - jekyll-feed (~> 0.9) - jekyll-seo-tag (~> 2.1) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (7.0.5) - rake (13.4.1) - rb-fsevent (0.11.2) - rb-inotify (0.11.1) - ffi (~> 1.0) - rexml (3.4.4) - rouge (4.7.0) - safe_yaml (1.0.5) - sass-embedded (1.99.0) - google-protobuf (~> 4.31) - rake (>= 13) - terminal-table (3.0.2) - unicode-display_width (>= 1.1.1, < 3) - unicode-display_width (2.6.0) - webrick (1.9.2) - -PLATFORMS - ruby - -DEPENDENCIES - jekyll (= 4.3.0) - jekyll-feed (~> 0.12, >= 0.12.0) - kramdown (>= 2.3.0) - minima (~> 2.5, >= 2.5.1) - -RUBY VERSION - ruby 3.2.6 - -BUNDLED WITH - 4.0.10 diff --git a/docs/README b/docs/README.md similarity index 100% rename from docs/README rename to docs/README.md diff --git a/docs/_changes.md b/docs/_changes.md deleted file mode 100644 index 085ddc89..00000000 --- a/docs/_changes.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: page -title: Change Log -permalink: /changes/ ---- - diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index 26bc7775..00000000 --- a/docs/_config.yml +++ /dev/null @@ -1,36 +0,0 @@ -# Welcome to Jekyll! -# -# This config file is meant for settings that affect your whole blog, values -# which you are expected to set up once and rarely edit after that. If you find -# yourself editing this file very often, consider using Jekyll's data files -# feature for the data you need to update frequently. -# -# For technical reasons, this file is *NOT* reloaded automatically when you use -# 'bundle exec jekyll serve'. If you change this file, please restart the server process. - -# Site settings -# These are used to personalize your new site. If you look in the HTML files, -# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. -# You can create any custom variable you would like, and they will be accessible -# in the templates via {{ site.myvariable }}. -title: Rundeck CLI -email: greg@rundeck.com -description: > # this means to ignore newlines until "baseurl:" - A simple commandline interface for the Rundeck API -baseurl: "/rundeck-cli" # the subpath of your site, e.g. /blog -url: "https://rundeck.github.io" # the base hostname & protocol for your site, e.g. http://example.com -twitter_username: rundeck -github_username: rundeck -github_url: https://github.com/rundeck/rundeck-cli -app_version: 2.0.9 -# Build settings -markdown: kramdown -theme: minima -gems: - - jekyll-feed -exclude: - - Gemfile - - Gemfile.lock -collections: - documentation: - output: true \ No newline at end of file diff --git a/docs/_includes/footer.html b/docs/_includes/footer.html deleted file mode 100644 index b78af7ca..00000000 --- a/docs/_includes/footer.html +++ /dev/null @@ -1,43 +0,0 @@ - diff --git a/docs/_includes/header.html b/docs/_includes/header.html deleted file mode 100644 index 79ad8085..00000000 --- a/docs/_includes/header.html +++ /dev/null @@ -1,37 +0,0 @@ - diff --git a/docs/assets/main.scss b/docs/assets/main.scss deleted file mode 100644 index 434dd277..00000000 --- a/docs/assets/main.scss +++ /dev/null @@ -1,25 +0,0 @@ ---- ---- - -@import "minima"; - -table, dl{ - margin-bottom: 15px; -} - -table{ - border-collapse: collapse; -} -table td, table th{ - border: 1px solid #e8e8e8; - padding: 5px; -} - -dl { - dt{ - font-weight: bold; - } - dt + dd{ - margin-left: 1em; - } -} \ No newline at end of file diff --git a/docs/changes.md b/docs/changes.md deleted file mode 100644 index 4af62161..00000000 --- a/docs/changes.md +++ /dev/null @@ -1,522 +0,0 @@ ---- -layout: page -title: Change Log -permalink: /changes/ ---- - -## 2.0.9 - -* fix: NPE if system info does not return all data - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v2.0.8...v2.0.9) - -## 2.0.8 - -* Fix: rd acl validate fails [Issue #541](https://github.com/rundeck/rundeck-cli/issues/541) -* fix [Issue #538](https://github.com/rundeck/rundeck-cli/issues/538) format parameter overrides content type -* log: support json format for `rd jobs list` -* log: Add json option for `rd jobs load` -* Fix: rd.conf not working - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v2.0.7...v2.0.8) - -## 2.0.7 - -* Remove use of XML in API calls (deprecated in Rundeck 4.x) -* Remove `--xml` option for executions metrics -* fix [Issue #465](https://github.com/rundeck/rundeck-cli/issues/465): user+pass auth url incorrect if API version specified in URL - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v2.0.6...v2.0.7) - -## 2.0.6 - -* dependency updates -* fix java 11 warnings [Issue #509](https://github.com/rundeck/rundeck-cli/issues/509) -* [Issue #511](https://github.com/rundeck/rundeck-cli/issues/511) -* Fix: metrics data command - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v2.0.5...v2.0.6) - -## 2.0.5 - -* fix: incorrect exit codes for command failure -* fix [Issue #468](https://github.com/rundeck/rundeck-cli/issues/468) executions deletebulk --require exit code when 0 results -* log: extend `run --at/-@` timezone parsing format support -* Fix: run --at/-@ argument should work -* log: Upgrade jackson databind to 2.14.2 - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v2.0.4...v2.0.5) - -## 2.0.4 - -* Add component options to project archives import [Issue #482](https://github.com/rundeck/rundeck-cli/issues/482) -* Update groovy to 3.0.13 [Issue #447](https://github.com/rundeck/rundeck-cli/issues/447) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v2.0.3...v2.0.4) - -## 2.0.3 - -* Fix [Issue #474](https://github.com/rundeck/rundeck-cli/issues/474) add --force option for execution abort -* Fix: Add --file to ensure backward compatibility - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v2.0.2...v2.0.3) - -## 2.0.2 - -* Fix a signing issue for RPM artifacts [Issue #478](https://github.com/rundeck/rundeck-cli/issues/478) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v2.0.1...v2.0.2) - -## 2.0.1 - -* Fix [Issue #458](https://github.com/rundeck/rundeck-cli/issues/458) space separated scm scm perform options not working -* Fix [Issue #446](https://github.com/rundeck/rundeck-cli/issues/446) exit code should not be 0 when run -f execution fails -* Fix [Issue #453](https://github.com/rundeck/rundeck-cli/issues/453) RD_INSECURE_SSL causes npe - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v2.0.0...v2.0.1) - -## 2.0.0 - -*Note*: This release contains some under the hood changes, that may change the behavior. -Please [log an issue](https://github.com/rundeck/rundeck-cli/issues) if you encounter any problems. -* Refactored CLI framework to use [picocli](https://picocli.info/) - * This was a major overhaul, but should be exactly compatible with rd 1.x -* Updated dependencies. -* Deprecations: - * These old commands and options will still work but will emit a warning if used: - * `rd system/projects acls`: `upload` subcommand replaced with `update` - * `rd tokens`: `reveal` subcommand replaced with `info` - * `rd tokens delete`: option `-t/--token` replaced with `-i/--id` - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.4.3...v2.0.0) - -## 1.4.3 - -* Fix [Issue #433](https://github.com/rundeck/rundeck-cli/issues/433) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.4.2...v1.4.3) - -## 1.4.2 - -(build and release updates) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.4.1...v1.4.2) - -## 1.4.1 - -(build and release updates) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.4.0...v1.4.1) - -## 1.4.0 - -* Add cluster execution mode toggle [Issue #380](https://github.com/rundeck/rundeck-cli/issues/380) -* Emit error if api version used isn't sufficient for project archive parameters [Issue #407](https://github.com/rundeck/rundeck-cli/issues/407) -* Many dependency updates -* [Issue #394](https://github.com/rundeck/rundeck-cli/issues/394) -* Fix: Add arguments for project import till API 38 - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.3.11...v1.4.0) - -## 1.3.11 - -* Fix: empty content type causes exception -* Add Enterprise License APIs [#375](https://github.com/rundeck/rundeck-cli/pull/375) (for RD4.0 APIv41, yet to be released) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.3.10...v1.3.11) - -## 1.3.10 - -* Fix [Issue #342](https://github.com/rundeck/rundeck-cli/issues/342) uninstall script does not work with sh - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.3.9...v1.3.10) - -## 1.3.9 - -* Update OkHttp lib [#357](https://github.com/rundeck/rundeck-cli/pull/357) -* Fix [Issue #352](https://github.com/rundeck/rundeck-cli/issues/352) node attribute expansion not working for ssh-xyz attributes -* Fix: allow using java 11 to build -* Fix [Issue #331](https://github.com/rundeck/rundeck-cli/issues/331) java 11 illegal access warnings -* Fix: extension jars not loadable running as shadow dist - -Note: 1.3.5 - 1.3.8 changes were related to packaging and release scripts. Publishing of artifacts was moved -from bintray to packagecloud and java libs are now published to maven central. See [install docs](https://github.com/rundeck/rundeck-cli/blob/main/docs/install.md). - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.3.4...v1.3.9) - -## 1.3.4 - -* Fix [Issue #302](https://github.com/rundeck/rundeck-cli/issues/302) jvm exit delayed by lingering threads - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.3.3...v1.3.4) - -## 1.3.3 - -* Revert "Fix [Issue #323](https://github.com/rundeck/rundeck-cli/issues/323) indentation in verbose data output" -* fix: snapshot build version is not shown in banner -* fix [Issue #262](https://github.com/rundeck/rundeck-cli/issues/262) increase default read/connect timeouts (10m/2m) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.3.2...v1.3.3) - -## 1.3.2 - -* fix [Issue #305](https://github.com/rundeck/rundeck-cli/issues/305) scm import perform should include deletedJobs in request -* fix [Issue #304](https://github.com/rundeck/rundeck-cli/issues/304) add scm import status and deleted fields to import items -* Fix [Issue #285](https://github.com/rundeck/rundeck-cli/issues/285) rd run output supports -v and -% and RD_FORMAT when not using follow mode -* Fix [Issue #323](https://github.com/rundeck/rundeck-cli/issues/323) indentation in verbose data output -* Fix [Issue #272](https://github.com/rundeck/rundeck-cli/issues/272) execution info includes adhoc flag -* fix: docs/Gemfile to reduce vulnerabilities - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.3.1...v1.3.2) - -## 1.3.1 - -* Fix [Issue #307](https://github.com/rundeck/rundeck-cli/issues/307) acl extension not available in shadow packages (deb) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.3.0...v1.3.1) - -## 1.3.0 - -* added `rd acl` subcommands for create,test,validate of aclpolicy files -* update CLI toolbelt, easier picocli in extensions/subcommands - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.2.4...v1.3.0) - -## 1.2.4 - -* Fix [Issue #295](https://github.com/rundeck/rundeck-cli/issues/295) URI too large error for jobs bulk delete - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.2.3...v1.2.4) - -## 1.2.3 - -* Fix [Issue #291](https://github.com/rundeck/rundeck-cli/issues/291) shadow jar should have all classifier -* add simple RundeckClient static builder methods - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.2.2...v1.2.3) - -## 1.2.2 - -* (build and release changes) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.2.1...v1.2.2) - -## 1.2.1 - -* (build and release changes) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.2.0-beta1...v1.2.1) - -## 1.2.0-beta1 - -* refactor to allow extension libraries - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.1.8...v1.2.0-beta1) - -## 1.1.8 - -* Update dependencies for Retrofit and Jackson #277 -* Update help text of `rd run --quiet` for clarity - -## 1.1.7 - -* Update gpg key fix [Issue #252](https://github.com/rundeck/rundeck-cli/issues/252) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.1.6...v1.1.7) - -## 1.1.6 - -* Fix [Issue #250](https://github.com/rundeck/rundeck-cli/issues/250) update signing script build dir path -* Fix [Issue #245](https://github.com/rundeck/rundeck-cli/issues/245) skip upgrade test on tag build -* update user agent string, allow customizing it in api client lib -* add `rd version` command for version info -* fix: postUninstall should not remove symlink after upgrade - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.1.5...v1.1.6) - -## 1.1.5 - -* Fix [Issue #242](https://github.com/rundeck/rundeck-cli/issues/242) overwrite symlink if present, and remove on uninstall, add tests -* fix: travis deploy for maven doesn't work -* Fix [Issue #180](https://github.com/rundeck/rundeck-cli/issues/180) prevent invalid project name - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.1.4...v1.1.5) - -## 1.1.4 - -* fix [Issue #198](https://github.com/rundeck/rundeck-cli/issues/198) load jobs with verbose output shows error message -* fix [Issue #202](https://github.com/rundeck/rundeck-cli/issues/202) format exec list for adhoc should work -* Fix: deb/rpm install scripts to use correct build path - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.1.3...v1.1.4) - -## 1.1.3 - -* relocatable rpm -* fixes for plugins commands -* add `jobs forecast` command (api v32) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.1.2...v1.1.3) - -## 1.1.2 - -* Add `rd executions metrics` (API v29) Execution Metrics API [#210](https://github.com/rundeck/rundeck-cli/pull/210) -* Default API version used is 29 -* Add `rd user roles` (API v30) [#211](https://github.com/rundeck/rundeck-cli/pull/211) -* new `RD_INSECURE_SSL_NO_WARN=true` to suppress insecure SSL warning [#215](https://github.com/rundeck/rundeck-cli/pull/215) -* support sha384 via upgraded okhttp [#219](https://github.com/rundeck/rundeck-cli/pull/219) -* `rd plugins` enabled by default [#220](https://github.com/rundeck/rundeck-cli/pull/220) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.1.1...v1.1.2) - -## 1.1.1 - -* New commands -* - get execution state (rd executions state) -* - delete all job executions (rd executions deleteall) -* - toggle job execution (rd jobs enablebulk and disablebulk) -* - toggle job schedule (rd jobs reschedulebulk and unschedulebulk) -* - server cluster scheduler takeover (rd scheduler takeover) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.1.0...v1.1.1) - -## 1.1.0 - -* Fix [Issue #196](https://github.com/rundeck/rundeck-cli/issues/196) rd run -loglevel debug should work -* fix description of executions info command - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.29...v1.1.0) - -## 1.0.29 - -* Fix [Issue #186](https://github.com/rundeck/rundeck-cli/issues/186) rd run --raw allows -opt @value literal - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.28...v1.0.29) - -## 1.0.28 - -* correct rd run loglevel option fixes [Issue #185](https://github.com/rundeck/rundeck-cli/issues/185) fixes [Issue #187](https://github.com/rundeck/rundeck-cli/issues/187) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.27...v1.0.28) - -## 1.0.27 - -* fix exception with rd keys list when no keys are present [Issue #177](https://github.com/rundeck/rundeck-cli/issues/177) -* fix rd script issue `rd: source: not found` [Issue #173](https://github.com/rundeck/rundeck-cli/issues/173) -* fix [Issue #177](https://github.com/rundeck/rundeck-cli/issues/177) -* Fix [Issue #173](https://github.com/rundeck/rundeck-cli/issues/173) source with . - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.26...v1.0.27) - -## 1.0.26 - -* Disabled interactive query paging for `executions deletebulk` -* Fix [Issue #169](https://github.com/rundeck/rundeck-cli/issues/169) project create does not require config input -* Disabled interactive query paging for -* Fix [Issue #167](https://github.com/rundeck/rundeck-cli/issues/167) query/deletebulk -m 0 throws exception -* Fix [Issue #168](https://github.com/rundeck/rundeck-cli/issues/168) add --require to executions deletebulk -* Fix [Issue #150](https://github.com/rundeck/rundeck-cli/issues/150) require --path/-p arg to keys subcommands - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.25...v1.0.26) - -## 1.0.25 - -* `rd executions query` now supports `%job.*` format options -* `rd executions query` now does interactive paging if there are more results, and `--autopage` can be used in non-interactive mode to load all available pages of data -* Fix [Issue #163](https://github.com/rundeck/rundeck-cli/issues/163) enhance rd executions query paging -* Fix [Issue #158](https://github.com/rundeck/rundeck-cli/issues/158) rd executions query does not format job info - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.24...v1.0.25) - -## 1.0.24 - -* Fix [Issue #156](https://github.com/rundeck/rundeck-cli/issues/156) npe if no stdin for project delete without --confirm -* Fix [Issue #157](https://github.com/rundeck/rundeck-cli/issues/157) project create can use config file -* support outformat option for tokens create/list/reveal - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.23...v1.0.24) - -## 1.0.23 - -* Fix usage text for jbos reschedule/unschedule -* Fix [Issue #147](https://github.com/rundeck/rundeck-cli/issues/147) `jobs unschedule` disables execution -* Fix [Issue #136](https://github.com/rundeck/rundeck-cli/issues/136) parse error with 500 response for project delete - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.22...v1.0.23) - -## 1.0.22 - -* Fix description of --alldeleted flag -* Fix [Issue #62](https://github.com/rundeck/rundeck-cli/issues/62) add flags to scm perform to include items automatically -* improve scripting of scm actions with -v flag -* fix [Issue #132](https://github.com/rundeck/rundeck-cli/issues/132) restore ACL/SCM validation error responses -* fix [Issue #72](https://github.com/rundeck/rundeck-cli/issues/72) Add RD_CONF to specify conf file - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.21...v1.0.22) - -## 1.0.21 - -* Fix test -* fix [Issue #128](https://github.com/rundeck/rundeck-cli/issues/128) api calls not auto downgrading - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.20...v1.0.21) - -## 1.0.20 - -* Add `rd users [list,info,edit]` (Rundeck 2.10+) -* fix tests -* Fix [Issue #126](https://github.com/rundeck/rundeck-cli/issues/126) Add API version downgrading -* Updated default API version to 21 (rundeck 2.10) -* Fix changelog for 1.0.18/1.0.19 - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.19...v1.0.20) - -## 1.0.19 - -* (no changes: Reissue to correctly release build artifacts) - -## 1.0.18 - -* [Issue #124](https://github.com/rundeck/rundeck-cli/issues/124) fix error when unexpected chars in job output if formatter is used - -## 1.0.17 - -* document RD_DATE_FORMAT -* fix [Issue #117](https://github.com/rundeck/rundeck-cli/issues/117) correctly parse datetime for execution data -* Fix [Issue #115](https://github.com/rundeck/rundeck-cli/issues/115) add `rd system mode info/active/passive` -* fix [Issue #102](https://github.com/rundeck/rundeck-cli/issues/102) Username/Password auth: improve auth flow - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.16...v1.0.17) - -## 1.0.16 - -* fix [Issue #113](https://github.com/rundeck/rundeck-cli/issues/113) show load jobs output results correctly - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.15...v1.0.16) - -## 1.0.15 - -* Fix [Issue #94](https://github.com/rundeck/rundeck-cli/issues/94) nodes command does not yet manage nodes -* fix [Issue #105](https://github.com/rundeck/rundeck-cli/issues/105) keys create error states incorrect prompt parameter -* fix [Issue #106](https://github.com/rundeck/rundeck-cli/issues/106) Cannot use the option jobs purge [--jobxact -J value] - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.14...v1.0.15) - -## 1.0.14 - -* Fix [Issue #99](https://github.com/rundeck/rundeck-cli/issues/99): npe when scm import inputs tracked item job is null - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.13...v1.0.14) - -## 1.0.13 - -* add `--charset` option for `rd keys create` password file contents -* read password file contents correctly fixes [Issue #97](https://github.com/rundeck/rundeck-cli/issues/97) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.12...v1.0.13) - -## 1.0.12 - -* Add API v19 support to `rd tokens` -* `rd tokens create` can specify roles, duration -* Add `rd tokens reveal` to reveal token given ID (v19+) -* Handle buggy create token response fix [Issue #95](https://github.com/rundeck/rundeck-cli/issues/95) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.11...v1.0.12) - -## 1.0.11 - -* Fix [Issue #37](https://github.com/rundeck/rundeck-cli/issues/37) add `-%/--outformat` to `rd run/adhoc/executions follow` - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.10...v1.0.11) - -## 1.0.10 - -* Fix [Issue #89](https://github.com/rundeck/rundeck-cli/issues/89) run command is broken - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.9...v1.0.10) - -## 1.0.9 - -* [Issue #79](https://github.com/rundeck/rundeck-cli/issues/79) Add `job run` support for file upload, using `-opt@ file` or `-opt @file` syntax -* Fix [Issue #73](https://github.com/rundeck/rundeck-cli/issues/73) Add `rd projects archives export/import` -* Fix [Issue #80](https://github.com/rundeck/rundeck-cli/issues/80) Add RD_INSECURE_SSL_HOSTNAME and RD_ALT_SSL_HOSTNAME -* Fix [Issue #83](https://github.com/rundeck/rundeck-cli/issues/83) verify `rd run` uses RD_PROJECT -* Fix [Issue #81](https://github.com/rundeck/rundeck-cli/issues/81) Add job schedule/exec enable/disable -* Fix link to insecure ssl config page -* APIv19: `rd run` file upload via -opt @file -* APIv19: new `rd jobs files` command - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.8...v1.0.9) - -## 1.0.8 - -* Check the follow flag on run with delay. Fixes [Issue #76](https://github.com/rundeck/rundeck-cli/issues/76) -* Default API version set to 18, fixes [Issue #74](https://github.com/rundeck/rundeck-cli/issues/74) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.7...v1.0.8) - -## 1.0.7 - -* add `rd projects configure` subcommands - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.6...v1.0.7) - -## 1.0.6 - -* log: add `rd run --delay` flag relative schedule -* log: `run --follow --at` waits before following -* Fix [Issue #65](https://github.com/rundeck/rundeck-cli/issues/65) run -f halts before job execution finishes -* log: add projects info -p name -* Fix [Issue #68](https://github.com/rundeck/rundeck-cli/issues/68) improve projects list output -* Fix [Issue #66](https://github.com/rundeck/rundeck-cli/issues/66) don't prompt when token or user+pass set -* Fix [Issue #63](https://github.com/rundeck/rundeck-cli/issues/63) allow RD_INSECURE_SSL=true - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.5...v1.0.6) - -## 1.0.5 - -* Fix weird character -* Fix [Issue #60](https://github.com/rundeck/rundeck-cli/issues/60) add conf file sourcing in shadow rd script - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.4...v1.0.5) - -## 1.0.4 - -* Fix [Issue #51](https://github.com/rundeck/rundeck-cli/issues/51) rd project scm should honor RD_PROJECT env var -* Fix [Issue #55](https://github.com/rundeck/rundeck-cli/issues/55) jobs info -%/--outformat option causes blank output -* unix: ~/.rd/rd.conf file can export env vars like RD_URL. fix [Issue #54](https://github.com/rundeck/rundeck-cli/issues/54) -* fix: NPE on 400 response to keys upload/create - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.3...v1.0.4) - -## 1.0.3 - -* Add CHANGELOG fix [Issue #48](https://github.com/rundeck/rundeck-cli/issues/48) -* fix [Issue #44](https://github.com/rundeck/rundeck-cli/issues/44) add more SCM commands: - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.2...v1.0.3) - -## 1.0.2 - -Date: 2016-12-13 - -* [#45](https://github.com/rundeck/rundeck-cli/issues/45) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.1...v1.0.2) - -## 1.0.1 - -Date: 2016-12-13 - -* [#42](https://github.com/rundeck/rundeck-cli/issues/42) -* [#43](https://github.com/rundeck/rundeck-cli/issues/43) -* [#47](https://github.com/rundeck/rundeck-cli/issues/47) - -[Changes](https://github.com/rundeck/rundeck-cli/compare/v1.0.0...v1.0.1) - -## 1.0.0 - -Date: 2016-12-05 - -Initial 1.0 release diff --git a/docs/images/downloads-by-bintray-150.png b/docs/images/downloads-by-bintray-150.png deleted file mode 100644 index 4fcccae8703c7086470e913d15d09fb8034b0cb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13770 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 C41_-b diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 2ee0e105..00000000 --- a/docs/index.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: RD - The CLI tool for Rundeck ---- - -The CLI tool for [Rundeck](https://github.com/rundeck/rundeck) - -Latest Version | Requirements -|------------------------------------------- - [{{ site.app_version }}]({{site.url}}{{site.baseurl}}/changes/) | Java 8 or Java 11 - -* [Documentation](https://docs.rundeck.com/docs/rd-cli/) -* [Source Code]({{site.github_url}}) -* [Issues]({{site.github_url}}/issues) -{% for post in site.pages %} -{%- if post.title -%} -{% if post.path != 'index.md' -%} -* [{{ post.title }}]({{site.url}}{{site.baseurl}}{{ post.permalink }}) -{% endif -%} -{%- endif -%} -{%- endfor -%} -{%- for post in site.documentation -%} -{% if post.title -%} -* [{{ post.title }}]({{site.url}}{{site.baseurl}}{{ post.permalink }}) -{% endif -%} -{%- endfor -%} - - From 00602c7dfe0f259daa41a909bd87943e66f38610 Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Tue, 14 Apr 2026 16:01:10 -0700 Subject: [PATCH 10/13] Fixup tests for Java 17 --- dockers/install/rpm/Dockerfile | 2 +- dockers/install/upgrade-rpm/Dockerfile | 2 +- scripts/install-test.sh | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dockers/install/rpm/Dockerfile b/dockers/install/rpm/Dockerfile index 260648c3..1986b348 100644 --- a/dockers/install/rpm/Dockerfile +++ b/dockers/install/rpm/Dockerfile @@ -1,5 +1,5 @@ FROM redhat/ubi8 -ARG JDK=java-11-openjdk +ARG JDK=java-17-openjdk RUN yum -y update RUN yum -y install ${JDK} ${JDK}-devel which RUN which java diff --git a/dockers/install/upgrade-rpm/Dockerfile b/dockers/install/upgrade-rpm/Dockerfile index fd6e4be6..29a6b85b 100644 --- a/dockers/install/upgrade-rpm/Dockerfile +++ b/dockers/install/upgrade-rpm/Dockerfile @@ -1,6 +1,6 @@ FROM redhat/ubi8 -ARG JDK=java-11-openjdk +ARG JDK=java-17-openjdk RUN yum -y update RUN yum -y install ${JDK} ${JDK}-devel which RUN which java diff --git a/scripts/install-test.sh b/scripts/install-test.sh index 7ca929df..d68ed9a8 100644 --- a/scripts/install-test.sh +++ b/scripts/install-test.sh @@ -8,8 +8,8 @@ DEBTAG=rdcli-deb RPMTAG=rdcli-rpm UBUNTUVERS="${UBUNTUVERS:-20.04 22.04}" #UBUNTUVERS_18="18.04" -RPMJDK="${RPMJDK:-java-11-openjdk java-17-openjdk java-21-openjdk}" -DEBJDK="${DEBJDK:-openjdk-11-jdk openjdk-17-jdk openjdk-21-jdk}" +RPMJDK="${RPMJDK:-java-17-openjdk java-21-openjdk java-25-openjdk}" +DEBJDK="${DEBJDK:-openjdk-17-jdk openjdk-21-jdk openjdk-25-jdk}" #DEBJDK_18="openjdk-11-jdk openjdk-17-jdk" DEBFILE="${DEBFILE:-}" RPMFILE="${RPMFILE:-}" From 00e94eed40269b041ca07da4e64a2ecb7969d68c Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Tue, 14 Apr 2026 16:05:07 -0700 Subject: [PATCH 11/13] fix few remaining java 11 --- CHANGELOG.md | 9 ++++++++- scripts/install-test.sh | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4af01f80..6310cf3d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,14 @@ ## Unreleased -* **Security Fix**: External extension directory loading is now disabled by default to prevent arbitrary code execution vulnerability. To enable extension loading from external directories, set environment variable `RD_EXT_DISABLED=false`. (Addresses RUN-3540) +## 3.0.0 +* **Breaking change**: Java 17 or later is required to run the CLI and to build from source. Java 11 is no longer supported. +* **Security**: External extension directory loading is now disabled by default to prevent arbitrary code execution. To enable extension loading from external directories, set environment variable `RD_EXT_DISABLED=false`. (Addresses RUN-3540) +* Build: Gradle 8, Groovy 4, and dependency updates (including Jackson). +* CI and packaging tests: workflows and Docker-based install/upgrade tests now target Java 17 and later (Java 11 combinations removed). +* Documentation: the in-repo Jekyll site under `docs/` was removed; use the [published CLI documentation](https://docs.rundeck.com/docs/rd-cli/) and [changelog](https://rundeck.github.io/rundeck-cli/changes/) on the web. + +[Changes](https://github.com/rundeck/rundeck-cli/compare/v2.0.9...v3.0.0) ## 2.0.9 diff --git a/scripts/install-test.sh b/scripts/install-test.sh index d68ed9a8..deeef111 100644 --- a/scripts/install-test.sh +++ b/scripts/install-test.sh @@ -10,7 +10,7 @@ UBUNTUVERS="${UBUNTUVERS:-20.04 22.04}" #UBUNTUVERS_18="18.04" RPMJDK="${RPMJDK:-java-17-openjdk java-21-openjdk java-25-openjdk}" DEBJDK="${DEBJDK:-openjdk-17-jdk openjdk-21-jdk openjdk-25-jdk}" -#DEBJDK_18="openjdk-11-jdk openjdk-17-jdk" +#DEBJDK_18="openjdk-17-jdk openjdk-21-jdk" DEBFILE="${DEBFILE:-}" RPMFILE="${RPMFILE:-}" From 8bb546f9b2ac79cc12d39cb67de3136400ce9091 Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Tue, 14 Apr 2026 16:13:25 -0700 Subject: [PATCH 12/13] No java 25 test on rpm --- .github/workflows/gradle.yml | 3 ++- scripts/install-test.sh | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index c9332785..4d2e05ac 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -55,7 +55,8 @@ jobs: needs: build strategy: matrix: - jdk: ["java-17-openjdk","java-21-openjdk","java-25-openjdk" ] + # UBI 8 repos ship 17 and 21; java-25-openjdk is not available on el8 + jdk: ["java-17-openjdk","java-21-openjdk"] steps: - uses: actions/checkout@v3 with: diff --git a/scripts/install-test.sh b/scripts/install-test.sh index deeef111..a07e148a 100644 --- a/scripts/install-test.sh +++ b/scripts/install-test.sh @@ -8,7 +8,7 @@ DEBTAG=rdcli-deb RPMTAG=rdcli-rpm UBUNTUVERS="${UBUNTUVERS:-20.04 22.04}" #UBUNTUVERS_18="18.04" -RPMJDK="${RPMJDK:-java-17-openjdk java-21-openjdk java-25-openjdk}" +RPMJDK="${RPMJDK:-java-17-openjdk java-21-openjdk}" DEBJDK="${DEBJDK:-openjdk-17-jdk openjdk-21-jdk openjdk-25-jdk}" #DEBJDK_18="openjdk-17-jdk openjdk-21-jdk" DEBFILE="${DEBFILE:-}" From 62d5b4da5f2249509194d4d10b4cff939dfa89bf Mon Sep 17 00:00:00 2001 From: Rundeck CI Date: Wed, 29 Apr 2026 10:06:39 -0700 Subject: [PATCH 13/13] Set Rundeck to alpha version --- gradle/libs.versions.toml | 2 +- gradle/verification-keyring.gpg | Bin 122273 -> 126505 bytes gradle/verification-keyring.keys | 121 +++++++++++++++++++++++++++++++ gradle/verification-metadata.xml | 54 +++++++------- 4 files changed, 149 insertions(+), 28 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 454039f0..a94781d5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -16,7 +16,7 @@ buildConfig = "3.1.0" jacksonDatabind = "2.21.2" picocli = "4.7.7" snakeYaml = "2.0" -rundeck = "6.0.0-SNAPSHOT" +rundeck = "6.0.0-alpha1-20260407" testcontainers = "1.21.4" commonsCompress = "1.28.0" # Spock mocks of concrete classes; not always pulled transitively with groovy-all 4.x diff --git a/gradle/verification-keyring.gpg b/gradle/verification-keyring.gpg index f6add16e71552c62d28d2aba1025ec6723df6e12..6045210ba75878e87691785b1625f5bb5138802b 100644 GIT binary patch delta 4261 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 Hr2#!SeaZHC delta 26 kcmV+#0OkLw+y|k%2e1mQvzo4iinrcF0oZM~?zI6sIJyuGOaK4? diff --git a/gradle/verification-keyring.keys b/gradle/verification-keyring.keys index 0e09499b..8687c57d 100644 --- a/gradle/verification-keyring.keys +++ b/gradle/verification-keyring.keys @@ -1241,6 +1241,21 @@ WASB7yEJYwsl =qHo0 -----END PGP PUBLIC KEY BLOCK----- +pub F5C81DE10A0B8ECC +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQGNBGY/odABDADzlZ1BXT0zN3rL+z4HP8r/2xM6zN950fwRimBTOiT6uE8aQSxq +283R/gIgM+yQBGjStLP3k/TsFJ2FCz7sug+7s1RP70ymkshalTRg+9QHBr2MU1Cx +Xoh3fiH8BLOb3FIxH1wdAtOOoNxbz64Ftcptu3L0I1y2qEwOGNOyvqbntdCuwNbX +/zwZUyb3tOVVrrZ5bp+6jMoBKEEWS7effqhGqXLlO4yTMBXR4pwzhch2IGCe+4M3 +a5C2SIJbR70PMk6aJ2+no2LycYRYJx/t2umAbxuCtwT6t/xh8v5ekbXAu5G3h5y+ +T2bF8rjMhVe6DBgJ08uFge3Oom5a5uZx8sQASdLCng8nKjGO4Q8jWmsEj+OiHnnX +g0oKkirnWbAVrWysgNKAXfwGfDBG95K1F67kVhNjXTx0MDcxpsT9TPxz/nDuzRpQ +ey5M11+Bl/fEM5UuzRpPgPd//bU+L3FgEUguB4kzsiYlhsUQRyCq1x868AchLWey +vaVIq2DY101GIP0AEQEAAQ== +=YHos +-----END PGP PUBLIC KEY BLOCK----- + pub F95ADD0A28D2F139 uid projectlombok.org @@ -2161,6 +2176,80 @@ D78JpXJRgHL1vib++Q== =dGtv -----END PGP PUBLIC KEY BLOCK----- +pub 2E2010F8A7FF4A41 +sub E4D15F24364C7906 +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQGiBEnOgPURBADYutfvXAtNgf67BQ2gWTI6+nKfILIwMPzCbQPMd7pykzF5nPMu +Nswt3E7efo5IP1Zsv6DRrLafAW0OJSmL/oo8/ta0AfqcxCCbJ6CUyViifRZ5T4nU +WfuWTZiaKRQ57jtt0WnNpFNFf00gDbYJWs5b4RU5Vac/0B0WDQ0wvOJfBwCgylAw +LrDQmwyOZcws9VbpvZvz9pMEAMRkV6DN8kvmfktpbUnHNuZJOps5botqKyffQVj/ +b2zh9mQ9yFpaSWESdFgpJNeBGtQJEDOz2G/q9ydTrYyCD8ILMKmsUlj/DAjaE7mU +/NmSpHBUO97NJN/fdMgkkbkSlk4j64lGaVovQph9ehw3DsuSTF8IPvr/DXV9nuIc +duxTBACUE6vsxZlzB9dXe5HjKCoPGr90kUm8uCG/CVu6fBVpZZa9B6+OM6NhEkLG +FA/EKgKc/tvNIlPsRwX1R2RoV9/tR9N772ZjhLcEBKV2UO9mb5iAWWZaMJtQ06SI +Ws9fyd+Zx3GGY1+iwWPUxZ2lSGLlfg3Sunl7Cni86tb0fTHTrrkCDQRJzoD1EAgA +lYw+EWr/t9pNqJhzVpAZ9u3LMKJfrGopbO+jOW0T58mIdVF4oMF5WZ4lHPTgHrRL +KxXNcGlzaxjxBKtkUbnjRTSGk7ExzGIcWoqq65RI8JgONif1VpBaS4Y8WwX/akQB +nCAL+eV7UwHttVUKEmt4xUW5CNa4BgCFKtVdiomvdxnBHBCgfWNHXpNnQLWhuOGJ +ZVyqq1ZAh0/vIxUBDSJZPxmEh5235+2CDK8Zu4FCcsi409zrLTtga+ggsN4tp22x +vRgNs6nwARsk4paFII3OMkdMVJlGqU0oQ+H5I5PADBFSUYwpcIYne/+k19+QMR1x +Ik+7EavzdOribLC/nwaLFwADBQf+INE8jnD6qg3g1gRN3S9MNh+PAPEsrM/7Gw0N +CAhaf3METVwSzZfwVNiXM8DVEGjaBAPTBpuJdveHpTG43E4eibjXWTe7j5A5QSUx +O7p3W4AXNTKldFnlKkVs+6ZKCkKeasY2/7do6Cf2Ed6lL1CDXEYcZRZ6BbkXruI/ +HqT/IP2mTw1i53S5Gxj3gaG/jOroXN5cBZnRoaPJQpuri9hdUJVqPNIDhe8dz3Zx +kHEgVPMoanp8xti86ErSjgvsxGs6xjjuxC9CNjMjyod7d6E1NSt7gvVdksX3vok3 +QvIqQKDO6l777R9LQcxEStPz91mrBRTAyO6b7AtCk4/5S2hTdYhgBBgRAgAJBQJJ +zoD1AhsMACEJEC4gEPin/0pBFiEEupJvZMpke22FOjhnLiAQ+Kf/SkFU0wCgtPQv +Ntk1WaK6b8k10GEOG5+CLskAn2zsMzKydPZ7hLr9WK2BZ2gj2IJ8 +=vLmf +-----END PGP PUBLIC KEY BLOCK----- + +pub 30478A3667458A0F +uid PagerDuty (Rundeck release signing) + +sub 67A3C4FA19F3D291 +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +avAjLXGRUOgACiziNroWPbYb3/Sl59RTrg== +=3qnV +-----END PGP PUBLIC KEY BLOCK----- + pub 31BB70ADEFA79A0C uid PagerDuty (Rundeck release signing) @@ -2874,6 +2963,38 @@ AbkFh1ZqtxZT1P405+r10MA= =ajnj -----END PGP PUBLIC KEY BLOCK----- +pub 5BE0BA8CB80602AE +uid Maarten Coene (CODE SIGNING KEY) + +sub 1B9A3CBC9C7184FE +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQGiBEj/pNYRBADN+YqWzDBLrOgiUCul5TWVLgUReY2VMaWh3Z732AMPJb1dlbtW +B8sRqyvtQxKIPIItl6oaom5yzuqc8leXQCJBVRnnBkv8cMomhOD/AuzaA82egttI +C+CHt/akaUPhgrzhry7TZ7lVtJZ04FJ9WaE+LKAZcnlhCWOSF330pRB8bwCg8E5k +4TF9z2cmwfRmMwJxruRpN1cEAJ0yo22TkjSksXFmQf0eKVEPaHmrsEjNzIECcz8m +JrggYDfXIgC2s758D7uhUTlJM7u1L2KTZmiZgiFp6WOw6DnPlBf4PRD03038fAQn +rGtfC/B7DcgMLS4tCPlGEyeh9H8RphaVSXVCN5IgRV4x0vIhyx7kVz1ZWbAlLEQx +KHp8BAC3/K9yVkRDa6m+HAZvRP60zxWAwIdiX1R/9CCRtI4uSaLz1Iiw0jni1YkE +tFe+z5PNa89Dy1bgFWJKxtG1jQVfHIt6nEz2C4z3Xk02+PxmJH/Dj84EOiLfxzvp +Hm2hA57GrNjJuvG7C7GVFy+bQh8DCkzJfGAaplSgzqyVmP/l5bQ2TWFhcnRlbiBD +b2VuZSAoQ09ERSBTSUdOSU5HIEtFWSkgPG1hYXJ0ZW5jQGFwYWNoZS5vcmc+uQIN +BEj/pNYQCAC0cYJhPn23nToEYS5eMKWcrdwPxF4mQWP/VA0QFqb4gqeEt3EOXI4b +94JY/CAB8Np7bhCdpLIxua/7MEN/M6rk3Q2OGE/0HeTQ5Ul/ijhi+vZnWupBRYjX +iXqw3DNBT44ldzFnDaeCMCU7OORF9nqde2tKFBtgIQ4y/HP99npR817ZM6DD0MwV +qh3UzuIJKf9oi8P206XxCS7VirFiUpYJy6G4rAJ1oxQaPzYLY8WsRo8CI05+DmTU +GgYtz+Ojz/RRI+B6e/dYtWL5AWKyIAWkGPehXsXf+xSsrwXn1JpcWT8mOyPziNdS +lonyaEo9aj8WW/vdFEDdq/c8kg3aUIdDAAMGB/45EhNik8eUf71Pm589dSsdzUau +pMQkARlHJTxoFMZO4klnx4IEP9FN5tUyPBi+vO3cG/ADvn9m+J6L+IOLpnaHXbvY +D5R76QXENQRsfCanFiSfhe5VlHlcPm6qeUHLbZvZXcNRxG1BdJfNVRaSzQ1eqec9 +861xhPOH5NgRDMw9tyITMDZ1g7A1btkuOoegbivLHU84D+Rk18P+3O8Rts4HzB1V +AVrbs+T+g/L5fYB7urp7iyHCrKToCFZdsoGdlbMRlLHMkfbKC63pu4WWmkCXyah+ ++e19yvErhmWN+ph+vWYsM7NYEJaH+m4Lpoe+D/F7vkrbxcHWZ9fmhbKnKA8LiEkE +GBECAAkFAkj/pNYCGwwACgkQW+C6jLgGAq6bsQCfTWMt5Dxh2AGbhUnsoAbd2ldW +nBgAnj/WyI/NWDkJ+OQ74Jm+86mAVIO6 +=aKI1 +-----END PGP PUBLIC KEY BLOCK----- + pub 5F69AD087600B22C sub 0440006D577EAE4B -----BEGIN PGP PUBLIC KEY BLOCK----- diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 2c867334..e7815ac1 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -4,6 +4,7 @@ true true + @@ -12,15 +13,16 @@ + - + @@ -36,7 +38,6 @@ - @@ -46,6 +47,7 @@ + @@ -66,6 +68,7 @@ + @@ -84,6 +87,7 @@ + @@ -202,11 +206,6 @@ - - - - - @@ -891,6 +890,7 @@ + @@ -1904,22 +1904,6 @@ - - - - - - - - - - - - - - - - @@ -1928,6 +1912,14 @@ + + + + + + + + @@ -1936,6 +1928,14 @@ + + + + + + + + @@ -2042,18 +2042,18 @@ - + - + - + - +