模式切换
Jenkinsfile
Jenkinsfile 是用于定义 Jenkins Pipeline 的文本文件,它包含了 Pipeline 的整个流程,包括节点、阶段和步骤的定义。
Jenkinsfile 可以通过多种方式创建和管理,如:通过 Jenkins Web UI、通过 SCM(源代码控制管理系统)提交、通过 Jenkinsfile Runner 等。
虽然 Jenkins Pipeline 可以通过 Jenkins Web UI 进行配置,但推荐使用 Jenkinsfile 来定义流水线,以便更好地管理和维护流水线配置。
例如某公司有运维A、运维B、运维C三个运维人员,他们都有自己的 Jenkins 账号,他们都可以通过 Jenkins Web UI 创建流水线,但是这样会导致流水线配置分散在不同的 Jenkins 账号下,不利于统一管理和维护。 如果使用 Jenkinsfile 来定义流水线,那么可以将流水线配置文件统一存放在代码仓库中,所有运维人员都可以访问和修改,这样就能更好地管理和维护流水线配置。
下面是一个使用 Jenkins Pipeline 从 Gitee 拉取代码并自动化构建并运行一个简单的 Spring Boot 项目的示例,运行后浏览器访问 http://localhost:8080
可看到如下图页面:
前提条件
- Jenkins 安装:确保 Jenkins 已经安装并运行。
- 远程仓库:准备一个包含 Spring Boot 项目的 Gitee 仓库。
- JDK 和 Maven:确保 Jenkins 节点上已经安装 JDK 和 Maven,并在 Jenkins 中正确配置。
请注意,JDK 需下载对应操作系统处理器架构的版本,如:linux-x64、windows-x64、macos-aarch64 等。
Declarative Pipeline 示例
groovy
pipeline {
agent any
tools {
maven 'maven-3.8'
}
environment {
CRDENTIALS_ID = '1ebc6cb2-d121-4d28-9b25-1fd28c7d4bc7' // 凭证ID
GIT_REPO = 'https://gitee.com/hongyoudan/my-spring-boot' // Gitee仓库地址
GIT_BRANCH = 'main' // 需要拉取的分支
IMAGE_NAME = 'my-declarative-pipeline' // 镜像名称
IMAGE_TAG = 'latest' // 镜像标签
}
stages {
stage('Initialize') {
steps {
echo "初始化..."
sh "docker rm -f ${IMAGE_NAME}"
sh "docker rmi -f ${IMAGE_NAME}:${IMAGE_TAG}"
}
}
stage('Checkout') {
steps {
echo "拉取代码..."
git branch: "${GIT_BRANCH}", url: "${GIT_REPO}", credentialsId: "${CRDENTIALS_ID}"
}
}
stage('Build') {
steps {
echo "构建项目..."
sh "mvn clean package -DskipTests"
}
}
stage('Build Image') {
steps {
echo "构建镜像..."
sh "docker build -t ${IMAGE_NAME}:${IMAGE_TAG} ."
}
}
stage('Deploy') {
steps {
echo "部署应用..."
sh "docker run --name ${IMAGE_NAME} -p 8080:8080 -d ${IMAGE_NAME}:${IMAGE_TAG}"
}
}
}
post {
success {
echo '构建成功!'
}
failure {
echo '构建失败!'
}
}
}
Scripted Pipeline 示例
groovy
node {
def crdentialsId = '1ebc6cb2-d121-4d28-9b25-1fd28c7d4bc7' // 凭证ID
def gitRepo = 'https://gitee.com/hongyoudan/my-spring-boot' // Gitee仓库地址
def gitBranch = 'main' // 需要拉取的分支
def mvnHome = tool 'maven-3.8' // 使用配置中的 Maven 名称
def mvn = "${mvnHome}/bin/mvn" // Maven命令路径
def imageName = 'my-scripted-pipeline' // 镜像名称
def imageTag = 'latest' // 镜像标签
try {
stage('Initialize') {
echo "初始化..."
sh "docker rm -f ${imageName}"
sh "docker rmi -f ${imageName}:${imageTag}"
}
stage('Checkout') {
echo "拉取代码..."
git branch: gitBranch, url: gitRepo, credentialsId: crdentialsId
}
stage('Build') {
echo "构建项目..."
sh "${mvn} clean package -DskipTests"
}
stage('Build Image') {
echo "构建镜像..."
sh "docker build -t ${imageName}:${imageTag} ."
}
stage('Deploy') {
echo "部署应用..."
sh "docker run --name ${imageName} -p 8080:8080 -d ${imageName}:${imageTag}"
}
} catch (Exception e) {
echo "构建过程中发生错误:${e.message}"
currentBuild.result = 'FAILURE' // 设置构建状态为失败
} finally {
if (currentBuild.result == 'FAILURE') {
echo "构建失败!"
} else {
echo "构建成功!"
}
}
}
使用流水线语法片段生成器
Jenkins 的片段生成器(Snippet Generator)是一个非常方便的工具,可以帮助用户生成构建任务的脚本片段,尤其是在使用 Pipeline 脚本时。通过它,你可以选择某些构建步骤或插件,然后 Jenkins 会自动生成对应的 Groovy 代码片段,供你在 Jenkinsfile 或者 Pipeline 中使用。
你可以通过以下步骤使用 Jenkins 的片段生成器:
- 进入 Jenkins 控制台:打开你的 Jenkins 控制台,通过 URL 访问你的 Jenkins 实例,例如:
http://<ip>
。 - 进入片段生成器:点击 "New Item" 创建一个新的项目,选择 "Pipeline" 类型的项目。 然后点击项目的 "配置 (Configure)",在 Pipeline 部分的 Pipeline Script 区域下方找到 "Pipeline Syntax" 链接,点击该链接,这就是片段生成器页面。
- 选择步骤:在片段生成器页面,选择你想生成的构建步骤,例如“Git 拉取代码”、“Shell 执行脚本”等等。
- 配置参数:根据所选步骤配置相关参数,如 Git URL、Shell 脚本内容等。
- 生成片段:配置完成后,点击 "Generate Pipeline Script" 按钮。Jenkins 会为你生成相应的 Groovy 脚本片段。
- 使用生成的片段:你可以将生成的片段复制粘贴到 Jenkinsfile 中,或者直接在 Pipeline 配置里使用。