1. 常用指令
1.1 步骤
定义本次有多少流程,每个流程干什么事情
stage('Clone') {
// 执行克隆代码块
}
stage('Build Project') {
// 执行构建代码块
}
1.2 节点
定义使用哪个打包节点去进行构建,其中参数为Jenkins-Agent的Label
node('k8s-agent-dotnet') {
sh 'dotnet --info'
}
node('k8s-agent-java') {
sh 'java -version'
}
node('docker-agent') {
sh 'docker -v'
}
1.3 工作目录切换
切换到所需的工作目录
dir('src/publish') {
// 执行脚本
}
dir("src/publish/${env.dir_name}") {
// 执行脚本
}
1.4 切换容器
多容器Node切换到不同的容器中,从而使用不同的工具进行打包操作
container('dotnet5'){
sh 'dotnet --info'
}
1.4 使用凭据
使用Jenkins凭据,也就是在管理中配置的Jenkins凭据,其中credentialsId
参数需要输入凭据的Id
withCredentials([usernamePassword(credentialsId: 'xxxxxx', passwordVariable: 'password', usernameVariable: 'username')]) {
echo "密码:${password}"
echo "用户名:${username}"
}
1.5 Docker-Pipeline插件
Docker-Pipeline这个插件Api比较多,建议去查看官方文档Docker-Pipeline插件使用手册
其中下面的最简单的使用方式,withRegistry
第一个参数是仓库地址,第二个参数是使用哪个凭据,也就是在凭据中定义的那个Id
docker.withRegistry('https://docker-factory.xxx.top', 'harbor_push_robot') {
def docker_img = docker.build("${env.p_ns}/${env.p_name}:${env.app_version}");
docker_img.push()
}
1.6 使用NodeJs
NodeJs插件详解
其中Pipeline使用nodejs
这个指令去使用NodeJs,参数是NodeJs配置的名称
nodejs('NodeJs 15.5.0') {
sh 'node -v'
}
1.6 使用sshPublisher
插件地址
这个插件允许你将构建产物发送到其他的物理服务器上面去,牛逼!!!
sshPublisher(publishers: [
sshPublisherDesc(configName: server,
transfers: [
sshTransfer(
cleanRemote: false, // 清空远程目录
excludes: '',
execCommand: "sh ./scripts/update_service_v2.sh ${env.p_name} ${env.c_type}", // 执行脚本
execTimeout: 120000,
flatten: false,
makeEmptyDirs: true, // 创建一个空文件夹
noDefaultExcludes: false,
patternSeparator: '[, ]+',
remoteDirectory: 'pkgs', // 远程目录,这是一个相对目录
remoteDirectorySDF: false,
removePrefix: 'publish', // 是否需要去掉文件夹前缀
sourceFiles: "publish/${env.p_name}.${env.c_type}" // 本地源文件
)
],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false,
verbose: true // 是否需要脚本执行详情
)
]
1.7 执行Groovy脚本
在这个标签中包着才能解析并执行Groovy的语法。
script {
// 执行脚本
}
1.7 执行Shell脚本
注意区分单引号和双引号,单引号不能带环境变量
sh 'echo "Hello World"'; // 执行不带环境变量的脚本
sh "echo ${env.sc}";// 执行带环境变量的脚本
2. 流水线代码片段生产器
使用这个就能直接生成所需插件的使用片段,如果没得那就只能自己写了~
image.png image.png
网友评论