模式切换
脚本式流水线(Scripted Pipeline)
脚本式流水线(Scripted Pipeline)是一种基于 Groovy 语法的流水线语法,它提供了更高自定义和动态逻辑的能力,适合复杂的构建场景。
脚本式流水线使用 Groovy 脚本来定义流水线,可以使用 Jenkins 提供的全局变量和方法来实现更灵活的流水线逻辑。
脚本式 Pipeline 以 node
块为基础,并通过调用 stage
和 steps
来组织构建过程。它的基本结构如下:
groovy
node {
stage('Build') {
echo 'Building...'
}
stage('Test') {
echo 'Testing...'
}
stage('Deploy') {
echo 'Deploying...'
}
}
主要特点
完全的 Groovy 控制:脚本式 Pipeline 允许使用完整的 Groovy 语法,这意味着可以使用条件语句、循环、函数等编程结构来控制构建过程。
灵活的构建逻辑:脚本式 Pipeline 适合需要复杂逻辑的场景,例如动态生成阶段、条件执行等。
更大的自由度:与声明式 Pipeline 相比,脚本式 Pipeline 更加灵活,但也需要开发者更仔细地管理状态和逻辑。
示例
- 基本的脚本式 Pipeline
groovy
node {
stage('Build') {
echo 'Building the application...'
// 可能的构建命令
sh 'make'
}
stage('Test') {
echo 'Running tests...'
// 可能的测试命令
sh 'make test'
}
stage('Deploy') {
echo 'Deploying the application...'
// 可能的部署命令
sh 'make deploy'
}
}
- 使用条件逻辑
可以在脚本中使用条件语句来控制不同阶段的执行。
groovy
node {
stage('Build') {
echo 'Building the application...'
sh 'make'
}
stage('Test') {
if (env.BRANCH_NAME == 'main') {
echo 'Running tests on the main branch...'
sh 'make test'
} else {
echo 'Skipping tests on non-main branch.'
}
}
stage('Deploy') {
echo 'Deploying the application...'
sh 'make deploy'
}
}
- 使用循环
可以在 Pipeline 中使用循环来处理多个项目或任务。
groovy
node {
stage('Build') {
def projects = ['project1', 'project2', 'project3']
for (project in projects) {
echo "Building ${project}..."
sh "cd ${project} && make"
}
}
}
- 定义函数
可以在脚本式 Pipeline 中定义函数,以便重用代码。
groovy
node {
stage('Build') {
buildProject('my-app')
}
stage('Test') {
runTests()
}
stage('Deploy') {
deployProject()
}
}
def buildProject(String projectName) {
echo "Building ${projectName}..."
sh "cd ${projectName} && make"
}
def runTests() {
echo 'Running tests...'
sh 'make test'
}
def deployProject() {
echo 'Deploying the application...'
sh 'make deploy'
}
- 使用环境变量
可以在脚本式 Pipeline 中使用环境变量,以便在构建过程中进行配置。
groovy
node {
stage('Build') {
env.APP_NAME = 'my-app'
echo "Building ${env.APP_NAME}..."
sh "cd ${env.APP_NAME} && make"
}
}