Skip to content
Merged
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
289bc42
Update for Grails 7 compatibility
fdevans Jan 2, 2026
de4a8da
Update GitHub workflow to use Java 17 for Grails 7 compatibility
fdevans Jan 4, 2026
d459f13
Update rundeck-core dependency to 6.0.0-SNAPSHOT for Grails 7 compati…
fdevans Jan 4, 2026
3a415d5
Add Central Portal Snapshots repository for rundeck-core:6.0.0-SNAPSHOT
fdevans Jan 6, 2026
6817817
Prepare http-notification for JitPack with Java 17 and Central Portal…
fdevans Jan 6, 2026
05b4958
Update http-step dependency to 1.1.12-grails7-upgrade-test
fdevans Jan 6, 2026
7571537
Bump version to 1.0.13-grails7-upgrade-test
fdevans Jan 6, 2026
f767410
Fix commons-lang3 version conflict
fdevans Jan 7, 2026
435a92f
Standardize on commons-lang3:3.18.0
fdevans Jan 7, 2026
9fac7d6
Downgrade commons-lang3 to 3.17.0 for Grails 7 compatibility
fdevans Jan 7, 2026
4548e19
Bump version to 1.0.17 due to JitPack build timeout
fdevans Jan 7, 2026
be867f9
Bump version to 1.0.18-grails7-upgrade-test and update http-step depe…
fdevans Jan 7, 2026
2269d9a
Modernize build and bump to 1.0.19-grails7-upgrade-test
fdevans Jan 7, 2026
fc4d176
Bump to 1.0.20-grails7-upgrade-test
fdevans Jan 8, 2026
7a2a7ef
Major cleanup and bump to 1.0.21-grails7-upgrade-test
fdevans Jan 8, 2026
65cf000
Migrate to PackageCloud: restore Axion, change groupId to com.rundeck…
fdevans Jan 8, 2026
73d3e82
Fix http-notification: Add Groovy plugin and compilation dependencies
fdevans Jan 9, 2026
f9b3a30
Merge remote-tracking branch 'origin/master' into grails7-upgrade
fdevans Mar 27, 2026
cc43e82
Fix CVE-2025-48924 + Java 17 test compatibility
fdevans Mar 27, 2026
f628f71
Modernize GitHub Actions workflows for Node.js 24 compatibility
fdevans Mar 27, 2026
e6e1ec6
Fix setup-java@v4 missing required distribution parameter
fdevans Mar 27, 2026
d0f586e
Revert http-step dependency to 1.1.20-grails7 to unblock CI
fdevans Mar 27, 2026
d10d12f
Standardize Gradle version to 8.14.3
fdevans Mar 27, 2026
b28c9d0
Fix YAML indentation for distribution parameter
fdevans Mar 27, 2026
d3a613a
Fix YAML indentation and update Gradle wrapper scripts
fdevans Mar 27, 2026
239bf0e
Fix JDK version typo and standardize java-version format
fdevans Mar 28, 2026
458cbda
Update commons-lang3 to 3.20.0 to match rundeck core
fdevans Apr 2, 2026
07be7aa
Fix JAR artifact path to match actual build output (remove -plugin su…
fdevans Apr 3, 2026
efe48fa
Add Maven Publishing.
fdevans Apr 6, 2026
ef93360
Update build.gradle
fdevans Apr 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,28 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
fetch-depth: 0
- 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 1.8
uses: actions/setup-java@v1
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 11
java-version: '17'
distribution: 'zulu'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
- name: Get Release Version
id: get_version
run: VERSION=$(./gradlew currentVersion -q -Prelease.quiet) && echo ::set-output name=VERSION::$VERSION
run: VERSION=$(./gradlew currentVersion -q -Prelease.quiet) && echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
- name: Upload plugin jar
uses: actions/upload-artifact@v4.4.1
uses: actions/upload-artifact@v4
with:
# Artifact name
name: Grails-Plugin-${{ steps.get_version.outputs.VERSION }}
# Directory containing files to upload
path: build/libs/http-notification-plugin-${{ steps.get_version.outputs.VERSION }}.jar
path: build/libs/http-notification-plugin-${{ steps.get_version.outputs.VERSION }}.jar
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow uploads build/libs/http-notification-plugin-<version>.jar, but the project name was changed to http-notification and there’s no archiveBaseName/archiveFileName override in build.gradle. The built artifact will likely be build/libs/http-notification-<version>.jar, causing this upload step to fail. Either update the path here or set the jar archive name explicitly to keep the -plugin suffix.

Suggested change
path: build/libs/http-notification-plugin-${{ steps.get_version.outputs.VERSION }}.jar
path: build/libs/http-notification-${{ steps.get_version.outputs.VERSION }}.jar

Copilot uses AI. Check for mistakes.
35 changes: 13 additions & 22 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,35 +12,26 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: set up JDK 1.8
uses: actions/setup-java@v1
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 11
java-version: '17'
distribution: 'zulu'
- name: Build with Gradle
run: ./gradlew build
- name: Get Release Version
id: get_version
run: VERSION=$(./gradlew currentVersion -q -Prelease.quiet) && echo ::set-output name=VERSION::$VERSION
- name: Create Release
run: VERSION=$(./gradlew currentVersion -q -Prelease.quiet) && echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
- name: Create Release and Upload Asset
id: create_release
uses: actions/create-release@v1.0.0
run: |
gh release create \
--generate-notes \
--title 'Release ${{ steps.get_version.outputs.VERSION }}' \
${{ github.ref_name }} \
build/libs/http-notification-plugin-${{ steps.get_version.outputs.VERSION }}.jar
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This release job attaches build/libs/http-notification-plugin-<version>.jar, but the project name was changed to http-notification and the Gradle jar task doesn’t set an archiveBaseName/archiveFileName. The built JAR will likely be http-notification-<version>.jar, so the release command will fail to find the asset. Align the jar naming (either update this path or set the jar archive name).

Suggested change
build/libs/http-notification-plugin-${{ steps.get_version.outputs.VERSION }}.jar
build/libs/http-notification-${{ steps.get_version.outputs.VERSION }}.jar

Copilot uses AI. Check for mistakes.
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ steps.get_version.outputs.VERSION }}
draft: false
prerelease: false
- name: Upload Release Asset (jar)
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: build/libs/http-notification-plugin-${{ steps.get_version.outputs.VERSION }}.jar
asset_name: http-notification-plugin-${{ steps.get_version.outputs.VERSION }}.jar
asset_content_type: application/octet-stream
161 changes: 86 additions & 75 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,45 +1,28 @@

buildscript {
repositories {
mavenCentral()
maven { url "https://oss.sonatype.org/content/groups/public"}
}
}

plugins {
id 'pl.allegro.tech.build.axion-release' version '1.13.4'
id 'pl.allegro.tech.build.axion-release' version '1.17.2'
id 'groovy'
id 'java'
id 'maven-publish'
}

group 'com.rundeck.plugin'

apply plugin: 'pl.allegro.tech.build.axion-release'
apply plugin: 'groovy'
apply plugin: 'java'

sourceCompatibility = 11
ext.rundeckPluginVersion = '1.2'
ext.pluginClassNames='com.rundeck.plugin.HttpNotificationPlugin'
ext.pluginName = 'Http Notification'
ext.pluginDescription = 'A notification plugin that makes HTTP requests'

group 'com.rundeck.plugins'

scmVersion {
ignoreUncommittedChanges = true
ignoreUncommittedChanges = false
tag {
prefix = ''
prefix = '' // NO "v" prefix - see PLUGIN_TAGGING_ARCHITECTURE.md
versionSeparator = ''
def origDeserialize=deserialize
//apend .0 to satisfy semver if the tag version is only X.Y
deserialize = { config, position, tagName ->
def orig = origDeserialize(config, position, tagName)
if (orig.split('\\.').length < 3) {
orig += ".0"
}
orig
}
}
}
project.version = scmVersion.version

version = scmVersion.version // Dynamic version from git tag

sourceCompatibility = 17
targetCompatibility = 17
ext.rundeckPluginVersion = '1.2'
ext.pluginClassNames='com.rundeck.plugin.HttpNotificationPlugin'
ext.pluginName = 'Http Notification'
ext.pluginDescription = 'A notification plugin that makes HTTP requests'

configurations{
//declare custom pluginLibs configuration to include only libs for this plugin
Expand All @@ -52,54 +35,54 @@ configurations{
}

repositories {
mavenCentral()
mavenLocal()
maven { url 'https://jitpack.io' }

maven {
name = 'Central Portal Snapshots'
url = 'https://central.sonatype.com/repository/maven-snapshots/'
content {
includeGroup('org.rundeck')
}
}
maven {
name = "PackageCloudTest"
url = uri("https://packagecloud.io/pagerduty/rundeckpro-test/maven2")
content {
includeGroup('com.rundeck.plugins')
}
}
mavenCentral()
}

dependencies {
implementation 'org.rundeck:rundeck-core:5.14.0-rc1-20250722'

pluginLibs ('com.github.rundeck-plugins:http-step:1.1.6'){
exclude group: 'org.rundeck', module: 'rundeck-core'
}

implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.14'
implementation 'org.codehaus.groovy:groovy-all:3.0.9'
implementation 'org.apache.groovy:groovy-all:4.0.29'
implementation 'org.rundeck:rundeck-core:6.0.0-SNAPSHOT'

// Add secure commons-lang3 to provide alternative to vulnerable commons-lang 2.6
// Apache HTTP client dependencies for compilation (http-step bundles these but doesn't expose them transitively)
implementation 'org.apache.httpcomponents:httpclient:4.5.14'
// Version 3.18.0 fixes CVE-2025-48924 (StackOverflowError in ClassUtils)
implementation 'org.apache.commons:commons-lang3:3.18.0'

testImplementation group: 'junit', name: 'junit', version: '4.13.1'

testImplementation "org.codehaus.groovy:groovy-all:3.0.17"
testImplementation "org.spockframework:spock-core:2.0-groovy-3.0"
testImplementation "cglib:cglib-nodep:2.2.2"
testImplementation 'org.objenesis:objenesis:1.4'

}

configurations.all {
resolutionStrategy {
// Replace vulnerable commons-lang with secure commons-lang3
dependencySubstitution {
substitute module('commons-lang:commons-lang') using module('org.apache.commons:commons-lang3:3.18.0')
}

// Bundle http-step plugin in lib/ directory for runtime
// Use transitive=false to avoid duplicating dependencies already bundled in http-step JAR
pluginLibs ('com.rundeck.plugins:http-step:1.1.20-grails7') {
transitive = false
}
}


// task to copy plugin libs to output/lib dir
task copyToLib(type: Copy) {
into "$buildDir/output/lib"
from configurations.pluginLibs
testImplementation group: 'junit', name: 'junit', version: '4.13.2'
testImplementation "org.apache.groovy:groovy-all:4.0.29"
testImplementation "org.spockframework:spock-core:2.4-groovy-4.0"
testImplementation "net.bytebuddy:byte-buddy:1.14.11"
testImplementation 'org.objenesis:objenesis:3.4'
}



jar {
from "$buildDir/output"
// Include plugin dependencies in lib/ directory
into('lib') {
from configurations.pluginLibs
}

manifest {
def libList = configurations.pluginLibs.collect{'lib/' + it.name}.join(' ')
attributes 'Rundeck-Plugin-Name' : pluginName
Expand All @@ -115,13 +98,41 @@ jar {
attributes 'Rundeck-Plugin-Archive': 'true'
attributes 'Rundeck-Plugin-Libs': "${libList}"
}
dependsOn(copyToLib)
}

test {
useJUnit()

// Java 17+ module access for reflection/mocking
jvmArgs = [
'--add-opens=java.base/java.lang=ALL-UNNAMED',
'--add-opens=java.base/java.util=ALL-UNNAMED',
'--add-opens=java.base/java.lang.reflect=ALL-UNNAMED',
'--add-opens=java.base/java.net=ALL-UNNAMED'
]
}

//set jar task to depend on copyToLib
jar.dependsOn(copyToLib)

tasks.withType(Test) {
useJUnitPlatform()
}
publishing {
publications {
maven(MavenPublication) {
groupId = 'com.rundeck.plugins'
artifactId = 'http-notification'
version = project.version
from components.java
}
}

repositories {
maven {
name = "PackageCloudTest"
url = uri("https://packagecloud.io/pagerduty/rundeckpro-test/maven2")
authentication {
header(HttpHeaderAuthentication)
}
credentials(HttpHeaderCredentials) {
name = "Authorization"
value = "Bearer " + (System.getenv("PKGCLD_WRITE_TOKEN") ?: project.findProperty("pkgcldWriteToken"))
}
}
}
}
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
3 changes: 1 addition & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#Wed Dec 27 09:45:56 CLST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
Loading
Loading