对于包含相同阶段或步骤的 Jenkins 流水线,可以在 Jenkinsfile 中使用 Jenkins 共享库避免流水线代码重复。
本文档演示如何在 KubeSphere 企业版 DevOps 流水线中使用 Jenkins 共享库。
前提条件
KubeSphere 企业版平台需要安装并启用 DevOps 扩展组件。
已创建一个企业空间、一个 DevOps 项目和一个用户 (例如 project-regular),并已邀请该用户至 DevOps 项目且授予 operator 角色。请参阅角色和成员管理。
已有一个可用 Jenkins 共享库。本教程以 GitHub 仓库中的 Jenkins 共享库为例。
步骤 1:在 Jenkins 仪表盘配置共享库
登录 Jenkins 仪表板并点击左侧导航栏中的系统管理。
向下滚动并点击系统配置。
向下滚动到 Global Pipeline Libraries,然后点击新增。
配置字段如下所示。
Name: 为共享库设置名称(例如,
demo-shared-library
),以便在 Jenkinsfile 中引用此名称来导入共享库。Default version: 设置共享库所在仓库的一个分支名称,将其作为导入共享库的默认分支。本教程将使用 master。
在 Retrieval method 下,选择 Modern SCM。
在 Source Code Management 下,选择 Git,并为项目仓库输入示例仓库的 URL 。如果您使用自己的仓库且访问此仓库需要凭证,还需要配置凭证。
编辑完成后,点击应用。
说明 您还可以配置文件夹级别的共享库。
步骤 2:在流水线中使用共享库
创建流水线
以 project-regular 用户登录 KubeSphere 企业版 Web 控制台。
点击企业空间管理并进入您的 DevOps 项目,在流水线页面点击创建。
在弹出的对话框中,将其命名为 demo-shared-library,点击下一步。
在高级设置中,直接点击创建,使用默认设置创建流水线。
编辑流水线
在流水线列表页面,点击流水线名称进入其详情页面,然后点击编辑 Jenkinsfile。
在弹出的对话框中,添加以下示例 Jenkinsfile。完成编辑后,点击确定。
library identifier: 'devops-ws-demo@master', retriever: modernSCM([
$class: 'GitSCMSource',
remote: 'https://github.com/devops-ws/jenkins-shared-library',
traits: [[$class: 'jenkins.plugins.git.traits.BranchDiscoveryTrait']]
])
pipeline {
agent any
stages {
stage('Demo') {
steps {
script {
mvn.fake()
}
}
}
}
}
说明 根据需要,为 agent 指定 label。
或者,使用以 @Library(‘<配置好的共享库名称>’) _ 开头的 Jenkinsfile。如果使用这种类型的 Jenkinsfile,需要提前在 Jenkins 仪表板上配置共享库。在本教程中,您可以使用以下示例 Jenkinsfile。
@Library('demo-shared-library') _
pipeline {
agent any
stages {
stage('Demo') {
steps {
script {
mvn.fake()
}
}
}
}
}
说明 使用 @Library(‘demo-shared-library@<分支名称>’) _ 来指定特定的分支。
步骤 3:运行流水线
在流水线详情页面,点击运行运行流水线。
点击运行记录页签下的记录,查看流水线运行详情。点击运行日志查看日志详细信息。