
Jenkins
- 96 installs
- 44 repo stars
- Updated May 22, 2026
- bagelhole/devops-security-agent-skills
jenkins is a Claude Code skill for creating and managing Jenkins CI/CD pipelines, agents, plugins, and shared libraries via Jenkinsfiles.
About
A Claude skill for creating and managing Jenkins CI/CD pipelines. A developer uses it to author Jenkinsfiles, configure Docker and Kubernetes agents, manage credentials and parameters, and build shared libraries for pipeline reuse. It targets Jenkins 2.x servers in enterprise build-automation environments.
- Creates declarative and scripted Jenkins pipelines via Jenkinsfile
- Configures Docker, Kubernetes, and labeled agents plus parallel stages
- Covers credentials, parameters, and shared libraries for pipeline reuse
Jenkins by the numbers
- 96 all-time installs (skills.sh)
- Ranked #556 of 1,435 DevOps & CI/CD skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
jenkins capabilities & compatibility
- Capabilities
- ci cd · testing · devops
- Works with
- jenkins · docker · kubernetes · slack
- Use cases
- ci cd · testing · devops
- Pricing
- Free
What jenkins says it does
Create and manage Jenkins CI/CD pipelines, configure agents, manage plugins, and automate builds.
Build, test, and deploy applications using Jenkins, the leading open-source automation server.
npx skills add https://github.com/bagelhole/devops-security-agent-skills --skill jenkinsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 96 |
|---|---|
| repo stars | ★ 44 |
| Last updated | May 22, 2026 |
| Repository | bagelhole/devops-security-agent-skills ↗ |
What it does
Author and manage Jenkins CI/CD pipelines with Jenkinsfiles, agents, and shared libraries.
Who is it for?
Developers automating builds on Jenkins servers in enterprise environments.
Skip if: Teams using GitHub Actions or GitLab CI as their CI/CD system.
When should I use this skill?
Writing Jenkinsfiles, configuring Jenkins agents, or building shared pipeline libraries.
What you get
Declarative or scripted Jenkins pipelines with configured agents, credentials, and shared libraries.
- Declarative or scripted Jenkinsfile
- Agent and credential configuration
- Shared pipeline library
By the numbers
- Example pipeline uses 3 stages (Build, Test, Deploy)
Files
Jenkins
Build, test, and deploy applications using Jenkins, the leading open-source automation server.
When to Use This Skill
Use this skill when:
- Setting up Jenkins pipelines (declarative or scripted)
- Configuring Jenkins agents and executors
- Managing Jenkins plugins and security
- Creating shared libraries for pipeline reuse
- Integrating Jenkins with external tools
Prerequisites
- Jenkins server (2.x or later)
- Admin access to Jenkins
- Java 11+ on Jenkins server
- Basic Groovy understanding for pipelines
Declarative Pipeline
Create Jenkinsfile in repository root:
pipeline {
agent any
environment {
DOCKER_REGISTRY = 'registry.example.com'
APP_NAME = 'myapp'
}
stages {
stage('Build') {
steps {
sh 'npm ci'
sh 'npm run build'
}
}
stage('Test') {
steps {
sh 'npm test'
}
post {
always {
junit 'test-results/*.xml'
}
}
}
stage('Deploy') {
when {
branch 'main'
}
steps {
sh './deploy.sh'
}
}
}
post {
failure {
mail to: 'team@example.com',
subject: "Pipeline Failed: ${env.JOB_NAME}",
body: "Check console output at ${env.BUILD_URL}"
}
}
}Agent Configuration
Docker Agent
pipeline {
agent {
docker {
image 'node:20'
args '-v /tmp:/tmp'
}
}
stages {
stage('Build') {
steps {
sh 'npm ci && npm run build'
}
}
}
}Kubernetes Agent
pipeline {
agent {
kubernetes {
yaml '''
apiVersion: v1
kind: Pod
spec:
containers:
- name: node
image: node:20
command:
- sleep
args:
- infinity
- name: docker
image: docker:24-dind
securityContext:
privileged: true
'''
}
}
stages {
stage('Build') {
steps {
container('node') {
sh 'npm ci && npm run build'
}
}
}
}
}Labeled Agents
pipeline {
agent { label 'linux && docker' }
stages {
stage('Build') {
steps {
sh 'make build'
}
}
}
}Parameters
pipeline {
agent any
parameters {
string(name: 'BRANCH', defaultValue: 'main', description: 'Branch to build')
choice(name: 'ENVIRONMENT', choices: ['dev', 'staging', 'prod'], description: 'Target environment')
booleanParam(name: 'RUN_TESTS', defaultValue: true, description: 'Run tests?')
}
stages {
stage('Deploy') {
when {
expression { params.ENVIRONMENT == 'prod' }
}
steps {
sh "deploy.sh ${params.ENVIRONMENT}"
}
}
}
}Credentials
Using Credentials
pipeline {
agent any
environment {
AWS_CREDS = credentials('aws-credentials')
DOCKER_CREDS = credentials('docker-hub')
}
stages {
stage('Deploy') {
steps {
withCredentials([
usernamePassword(
credentialsId: 'github-token',
usernameVariable: 'GH_USER',
passwordVariable: 'GH_TOKEN'
)
]) {
sh 'git push https://${GH_USER}:${GH_TOKEN}@github.com/repo.git'
}
}
}
}
}Parallel Stages
pipeline {
agent any
stages {
stage('Tests') {
parallel {
stage('Unit Tests') {
steps {
sh 'npm run test:unit'
}
}
stage('Integration Tests') {
steps {
sh 'npm run test:integration'
}
}
stage('E2E Tests') {
steps {
sh 'npm run test:e2e'
}
}
}
}
}
}Shared Libraries
Library Structure
vars/
├── buildApp.groovy
├── deployApp.groovy
└── notifySlack.groovy
src/
└── com/example/
└── Pipeline.groovy
resources/
└── templates/
└── deployment.yamlDefine Shared Step
// vars/buildApp.groovy
def call(Map config = [:]) {
def nodeVersion = config.nodeVersion ?: '20'
docker.image("node:${nodeVersion}").inside {
sh 'npm ci'
sh 'npm run build'
}
}Use Shared Library
@Library('my-shared-library') _
pipeline {
agent any
stages {
stage('Build') {
steps {
buildApp(nodeVersion: '20')
}
}
stage('Deploy') {
steps {
deployApp(environment: 'staging')
}
}
}
post {
failure {
notifySlack(channel: '#builds', status: 'FAILED')
}
}
}Scripted Pipeline
node('linux') {
try {
stage('Checkout') {
checkout scm
}
stage('Build') {
docker.image('node:20').inside {
sh 'npm ci'
sh 'npm run build'
}
}
stage('Test') {
sh 'npm test'
}
if (env.BRANCH_NAME == 'main') {
stage('Deploy') {
sh './deploy.sh'
}
}
} catch (e) {
currentBuild.result = 'FAILURE'
throw e
} finally {
cleanWs()
}
}Plugin Management
Essential Plugins
// Install via Jenkins CLI or init.groovy.d
def plugins = [
'workflow-aggregator', // Pipeline
'git', // Git integration
'docker-workflow', // Docker Pipeline
'kubernetes', // Kubernetes agent
'credentials-binding', // Credentials
'blueocean', // Blue Ocean UI
'job-dsl', // Job DSL
'configuration-as-code' // JCasC
]Configuration as Code
# jenkins.yaml
jenkins:
systemMessage: "Jenkins configured via JCasC"
numExecutors: 2
securityRealm:
local:
users:
- id: admin
password: ${ADMIN_PASSWORD}
authorizationStrategy:
globalMatrix:
permissions:
- "Overall/Administer:admin"
- "Overall/Read:authenticated"
credentials:
system:
domainCredentials:
- credentials:
- usernamePassword:
id: "docker-hub"
username: "user"
password: ${DOCKER_PASSWORD}Multibranch Pipeline
// Automatically discovers branches with Jenkinsfile
// Configure in Jenkins UI: New Item > Multibranch Pipeline
// Branch-specific behavior in Jenkinsfile
pipeline {
agent any
stages {
stage('Deploy') {
when {
anyOf {
branch 'main'
branch 'release/*'
}
}
steps {
sh './deploy.sh'
}
}
}
}Common Issues
Issue: Pipeline Syntax Errors
Problem: Jenkinsfile fails to parse Solution: Use Pipeline Syntax generator in Jenkins UI, validate with jenkins-cli
Issue: Agent Not Connecting
Problem: Build agents disconnect Solution: Check agent logs, verify network connectivity, increase timeout settings
Issue: Out of Memory
Problem: Jenkins crashes or builds fail with OOM Solution: Increase heap size in JAVA_OPTS, clean up old builds
Best Practices
- Use declarative pipelines for most use cases
- Implement shared libraries for reusable code
- Store Jenkinsfile in source control
- Use credentials plugin for secrets management
- Implement proper cleanup in post blocks
- Configure build retention policies
- Use Blue Ocean for modern UI experience
Related Skills
- github-actions - GitHub native CI/CD
- kubernetes-ops - K8s deployment target
- docker-management - Container builds
Jenkins Pipeline Syntax Reference
Declarative Pipeline
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS')
disableConcurrentBuilds()
buildDiscarder(logRotator(numToKeepStr: '10'))
}
environment {
DEPLOY_ENV = 'production'
CREDS = credentials('my-credentials')
}
stages {
stage('Build') {
steps {
sh 'make build'
}
}
stage('Test') {
parallel {
stage('Unit Tests') {
steps {
sh 'make test-unit'
}
}
stage('Integration Tests') {
steps {
sh 'make test-integration'
}
}
}
}
stage('Deploy') {
when {
branch 'main'
}
steps {
sh 'make deploy'
}
}
}
post {
always {
junit 'reports/**/*.xml'
cleanWs()
}
success {
slackSend color: 'good', message: 'Build succeeded'
}
failure {
slackSend color: 'danger', message: 'Build failed'
}
}
}Scripted Pipeline
node('linux') {
try {
stage('Checkout') {
checkout scm
}
stage('Build') {
sh 'make build'
}
if (env.BRANCH_NAME == 'main') {
stage('Deploy') {
sh 'make deploy'
}
}
} catch (e) {
currentBuild.result = 'FAILURE'
throw e
} finally {
cleanWs()
}
}Shared Libraries
// vars/buildPipeline.groovy
def call(Map config) {
pipeline {
agent any
stages {
stage('Build') {
steps {
sh config.buildCommand ?: 'make build'
}
}
}
}
}
// Jenkinsfile
@Library('my-shared-library') _
buildPipeline(buildCommand: 'npm run build')Credentials
withCredentials([
usernamePassword(
credentialsId: 'docker-hub',
usernameVariable: 'DOCKER_USER',
passwordVariable: 'DOCKER_PASS'
)
]) {
sh 'docker login -u $DOCKER_USER -p $DOCKER_PASS'
}Related skills
FAQ
Where does a Jenkins pipeline definition live?
In a Jenkinsfile in the repository root, using declarative or scripted syntax.
What agent types does it cover?
Docker agents, Kubernetes agents, and labeled agents.