本文目录导读:

我来详细介绍Jenkins脚本的生成方式,主要包括两种:声明式流水线和脚本式流水线。
声明式流水线 (Declarative Pipeline)
基础结构
pipeline {
agent any
stages {
stage('构建') {
steps {
echo '执行构建...'
}
}
stage('测试') {
steps {
echo '执行测试...'
}
}
stage('部署') {
steps {
echo '执行部署...'
}
}
}
}
使用流水线语法生成器
通过Jenkins界面生成
-
进入流水线语法
- 打开任意Pipeline任务
- 点击左侧的"流水线语法"
-
选择步骤类型
- 从下拉菜单中选择需要的步骤
git,sh,echo等
-
配置参数
- 填写所需的参数
- 点击"生成流水线脚本"
示例:生成git步骤
// 通过语法生成器生成的Git步骤
git branch: 'main',
url: 'https://github.com/your-repo/project.git',
credentialsId: 'github-credentials'
常用脚本模板
完整CI/CD示例
pipeline {
agent any
environment {
APP_NAME = 'myapp'
NODE_VERSION = '16'
}
tools {
nodejs 'NodeJS-16'
}
parameters {
string(name: 'BRANCH', defaultValue: 'main', description: '分支名称')
choice(name: 'ENV', choices: ['dev', 'staging', 'prod'], description: '部署环境')
}
stages {
stage('Checkout') {
steps {
checkout scmGit(
branches: [[name: parameters.BRANCH]],
userRemoteConfigs: [[url: 'https://github.com/example/project.git']]
)
}
}
stage('安装依赖') {
steps {
sh 'npm install'
}
}
stage('运行测试') {
steps {
sh 'npm test'
}
post {
success {
junit 'reports/**/*.xml'
}
}
}
stage('构建') {
steps {
sh 'npm run build'
}
}
stage('代码质量检查') {
steps {
sh 'npm run lint'
sonarQubeEnv: 'SonarQubeServer'
}
}
stage('Docker构建') {
steps {
sh """
docker build -t ${APP_NAME}:${BUILD_NUMBER} .
docker tag ${APP_NAME}:${BUILD_NUMBER} registry.example.com/${APP_NAME}:latest
"""
}
}
stage('部署') {
when {
expression { ENV == 'prod' }
}
steps {
sh 'kubectl apply -f deployment.yaml'
}
}
}
post {
always {
archiveArtifacts artifacts: 'dist/**/*.zip'
cleanWs()
}
success {
echo '构建成功!'
}
failure {
echo '构建失败!'
}
}
}
高级脚本模式
使用共享库
// libraries.groovy
def buildDockerImage(String imageName) {
sh """
docker build -t ${imageName}:${BUILD_NUMBER} .
docker push ${imageName}:${BUILD_NUMBER}
"""
}
// Jenkinsfile
@Library('my-shared-library')_
import com.example.DockerUtils
pipeline {
agent any
stages {
stage('使用共享库') {
steps {
script {
DockerUtils.buildAndPush('myapp', 'latest')
}
}
}
}
}
包含外部脚本
// 方法1: 使用sh步骤
stage('运行外部脚本') {
steps {
sh './scripts/deploy.sh'
}
}
// 方法2: 使用load步骤
stage('加载外部Groovy脚本') {
steps {
load 'pipeline/helpers.groovy'
// 现在可以使用helpers中定义的方法
}
}
生成特定步骤的示例
发送邮件
emailext(
subject: "构建结果: ${env.JOB_NAME} - ${env.BUILD_NUMBER}",
body: "构建状态: ${currentBuild.currentResult}\n\n查看详情: ${env.BUILD_URL}",
to: 'team@example.com',
from: 'jenkins@example.com'
)
触发下游任务
build job: 'deploy-service',
parameters: [
string(name: 'VERSION', value: env.BUILD_NUMBER),
string(name: 'ENVIRONMENT', value: 'production')
]
最佳实践建议
代码复用
def buildAngularApp() {
sh 'npm install && npm run build'
}
def runUnitTests() {
sh 'npm test -- --coverage'
}
pipeline {
agent any
stages {
stage('Build') {
steps { buildAngularApp() }
}
stage('Test') {
steps { runUnitTests() }
}
}
}
使用Credential
withCredentials([string(credentialsId: 'api-token', variable: 'TOKEN')]) {
sh 'curl -H "Authorization: Bearer $TOKEN" http://api.example.com/deploy'
}
常用助手资源
-
Jenkins Pipeline Syntax Generator
- 路径: 任务 → 流水线语法
- 提供可视化的代码生成
-
Pipeline Steps Reference
- 路径: http://your-jenkins/pipeline-syntax/
- 查看所有可用步骤
-
Declarative Directive Generator
- 路径: http://your-jenkins/pipeline-syntax/declare
- 生成声明式指令
需要我针对特定场景(如Docker构建、Kubernetes部署、多分支流水线等)提供更详细的示例吗?
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播