This directory contains automated CI/CD workflows for the plugin-bootstrap project.
Triggers:
- Push to
masterormainbranches - Pull requests to
masterormainbranches
What it does:
- Checks out the code
- Sets up JDK 11 (Temurin distribution)
- Validates the Gradle wrapper for security
- Runs
./gradlew clean build check(compiles, runs tests) - Builds distribution packages (
.deband.rpm)
Purpose: Ensures code quality and that the project builds successfully on every commit and PR.
Triggers:
- Push of a version tag matching pattern
v*(e.g.,v1.2.0)
What it does:
- Checks out the code with full history
- Sets up JDK 11 (Temurin distribution)
- Validates the Gradle wrapper
- Runs
./gradlew clean build(full build with tests) - Builds all distribution formats:
- Regular tar/zip archives
- Shadow (fat) tar/zip archives
- Debian package (
.deb) - RPM package (
.rpm)
- Extracts version from the tag
- Creates a GitHub release with:
- Release name: "Release X.Y.Z"
- All distribution packages attached
- Auto-generated release notes from commits
Purpose: Automates the release process, ensuring consistent builds and making distribution packages immediately available.
To create a new release:
# 1. Update version and changelog (if needed)
# 2. Commit all changes
git add .
git commit -m "Prepare for release X.Y.Z"
# 3. Create and push the tag
git tag -a vX.Y.Z -m "Release version X.Y.Z"
git push origin main
git push origin vX.Y.ZThe release workflow will automatically:
- Build all packages
- Create the GitHub release
- Upload distribution files
- Make them available at: https://github.com/rundeck/plugin-bootstrap/releases
Both workflows require specific permissions:
- build.yml: Default permissions (read repository)
- release.yml:
contents: writepermission to create releases
These permissions are configured in each workflow file.
Keep actions up to date for security and features:
actions/checkout: Currently v4actions/setup-java: Currently v4gradle/wrapper-validation-action: Currently v2softprops/action-gh-release: Currently v1
Check for updates: https://github.com/marketplace?type=actions
The project uses Java 11 as the minimum version. This is set in:
- Both workflow files
build.gradle(sourceCompatibility = 11.0)- Generated plugin templates
The workflows build multiple package formats:
- Regular distributions: Standard tar/zip with dependencies separate
- Shadow distributions: Fat archives with all dependencies bundled
- System packages:
.debfor Debian/Ubuntu,.rpmfor RedHat/CentOS
Shadow distributions are recommended for most users as they're self-contained.