83 lines
2.3 KiB
Markdown
83 lines
2.3 KiB
Markdown
# Jenkins Shared Library: Docker Build & Push Steps
|
|
|
|
This Jenkins shared library provides reusable steps for building and pushing Docker images from your pipelines.
|
|
|
|
## 📦 Included Steps
|
|
|
|
| Step | Description |
|
|
|---------------|----------------------------------------|
|
|
| `dockerBuild` | Builds a Docker image |
|
|
| `dockerPush` | Pushes a Docker image to a registry |
|
|
|
|
Each step is implemented as a Global Variable, making them directly usable in declarative pipelines.
|
|
|
|
---
|
|
|
|
## 🧩 How to Set Up in Jenkins
|
|
|
|
### 1. Push the Library to a Git Repository
|
|
|
|
Host this repository in a Git server accessible to your Jenkins instance (e.g. GitHub, GitLab, Gitea, etc.).
|
|
|
|
---
|
|
|
|
### 2. Register the Library in Jenkins
|
|
|
|
Go to **Manage Jenkins → Configure System → Global Pipeline Libraries**, then click **Add**.
|
|
|
|
Fill in the following:
|
|
|
|
- **Name**: `mylib` (or any name you'd like to reference in Jenkinsfiles)
|
|
- **Default version**: `main` (or specify a tag/branch)
|
|
- **Retrieval method**: Modern SCM
|
|
- **Source Code Management**: Git
|
|
- **Project Repository**: `https://your.git.repo/jenkins-shared-library.git`
|
|
- **Credentials**: (only if private)
|
|
|
|
Click **Save**.
|
|
|
|
---
|
|
|
|
## ✅ How to Use in Your Jenkinsfile
|
|
|
|
In any Jenkins pipeline, include the shared library using `@Library` and then call the steps:
|
|
|
|
```groovy
|
|
@Library('mylib') _
|
|
|
|
pipeline {
|
|
agent any
|
|
|
|
environment {
|
|
DOCKER_REGISTRY = 'your.registry.example.com'
|
|
IMAGE_NAME = 'your/image-name'
|
|
IMAGE_TAG = "${DOCKER_REGISTRY}/${IMAGE_NAME}:${params.BUILD_ID}"
|
|
}
|
|
|
|
parameters {
|
|
string(name: 'BUILD_ID', defaultValue: 'latest', description: 'Docker image tag')
|
|
}
|
|
|
|
stages {
|
|
stage('Build Docker Image') {
|
|
steps {
|
|
dockerBuild(
|
|
imageName: "${IMAGE_TAG}",
|
|
dockerfile: "deployments/docker/Dockerfile",
|
|
context: "deployments/docker"
|
|
)
|
|
}
|
|
}
|
|
|
|
stage('Push Docker Image') {
|
|
steps {
|
|
dockerPush(
|
|
imageName: "${IMAGE_TAG}",
|
|
registry: "${DOCKER_REGISTRY}",
|
|
credentialsId: "your-docker-credentials-id"
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|