自动化运维

Jenkins-Pipeline脚本编写入门

2021-08-23  本文已影响0人  野生DBNull

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
上一篇 下一篇

猜你喜欢

热点阅读