Scaffolder Jenkins client actions bring Jenkins job management into your Backstage templates. Instead of clicking around in Jenkins, you can create or change jobs as part of a normal template run. It fits teams that run a self hosted Backstage and want Jenkins to be part of the same paved path.
The plugin exposes actions that cover common tasks. You can create a job from a known config. You can copy an existing job. You can enable or disable a job. You can destroy a job when it is no longer needed. You can trigger a build to verify things right away. These actions run inside Scaffolder so every new service can leave the template with a ready Jenkins setup.
Typical use cases are simple. Spin up a pipeline when a new repo is created. Clone a golden job to keep standards across teams. Turn off a risky job during a change freeze, then turn it back on. Retire legacy jobs during a migration. Kick off a first build to smoke test the setup.
The result is less drift and fewer manual steps. Platform teams get consistent naming and layout. Developers get a faster pull request to pipeline path. You keep Jenkins where it works best while letting Backstage own the flow.
Installation Instructions
These instructions apply to self-hosted Backstage only.
Install the backend module
- Add the Scaffolder Jenkins module to your backend
yarn --cwd packages/backend add @backstage-community/plugin-scaffolder-backend-module-jenkins
- Register the module in your backend entry point
Edit packages/backend/src/index.ts
import { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
// other feature additions
backend.add(
import('@backstage-community/plugin-scaffolder-backend-module-jenkins'),
);
backend.start();
Configure Jenkins access
Add credentials to your app config
app-config.yaml
jenkins:
baseUrl: ${JENKINS_SERVER_URL}
username: ${JENKINS_USERNAME}
apiKey: ${JENKINS_API_KEY}
You can keep these values in environment variables in your runtime config
app-config.local.yaml
jenkins:
baseUrl: https://jenkins.example.com
username: backstage-bot
apiKey: ${JENKINS_API_KEY}
Use the Scaffolder actions in a template
Create a new template in your repo
catalog templates debug-jenkins.yaml
apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
name: debug-jenkins
title: debug-jenkins
description: Template for debugging
tags:
- debug
spec:
owner: user
type: debug
steps:
- id: template
name: Jenkins create job
action: jenkins:job:create
input:
configPath: /path/to/config.xml
jobName: test-project-one
folderName: test-folder
Commit the template as you usually do for your Backstage instance
Reference it from your Scaffolder catalog if needed
Examples for each action
Create job with inline XML
- id: jenkins-job-create
name: Jenkins Job Create
action: jenkins:job:create
input:
jobName: first-job
jobXml: |
<flow-definition plugin="[email protected]_c710cd2e">
<!-- Jenkins XML omitted -->
</flow-definition>
Create job from a file in your skeleton
- id: jenkins-job-create
name: Jenkins Job Create
action: jenkins:job:create
input:
jobName: first-job
folderName: folder
folderPath: config/job.xml
Build a job
- id: jenkins-job-build
name: Jenkins Job Build
action: jenkins:job:build
input:
jobName: first-job
jobParameters: some-value
Copy a job
- id: jenkins-job-copy
name: Jenkins Job Copy
action: jenkins:job:copy
input:
sourceJobName: source-job
targetJobName: target-job
Destroy a job
- id: jenkins-job-destroy
name: Jenkins Job Destroy
action: jenkins:job:destroy
input:
jobName: first-job
Disable a job
- id: jenkins-job-disable
name: Jenkins Job Disable
action: jenkins:job:disable
input:
jobName: first-job
Enable a job
- id: jenkins-job-enable
name: Jenkins Job Enable
action: jenkins:job:enable
input:
jobName: first-job
Note that no output is produced by these actions.
Changelog
This changelog is produced from commits made to the Scaffolder Jenkins Client Actions plugin since a year ago. It may not contain information about all commits. Releases and version bumps are intentionally omitted. This changelog is generated by AI.
Features
- Add Jenkins scaffolder actions. Build. Copy. Create. Create with file. Destroy. Disable. Enable. These actions can target a specific server using a serverUrl input. #2903 merged 4 months ago
- Add first Jenkins scaffolder action to create a job during scaffolding. #1481 merged 12 months ago
Maintenance
- Remove the private flag so the package is usable. #1721 merged 12 months ago
- Release the module under the Jenkins workspace for consistency. #1768 merged 12 months ago
Breaking changes
- None
Set up Backstage in minutes with Roadie
Focus on using Backstage, rather than building and maintaining it.