美文网首页自动化运维
Jenkins-Pipeline脚本编写入门

Jenkins-Pipeline脚本编写入门

作者: 野生DBNull | 来源:发表于2021-08-23 16:45 被阅读0次

    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

    相关文章

      网友评论

        本文标题:Jenkins-Pipeline脚本编写入门

        本文链接:https://www.haomeiwen.com/subject/nbjliltx.html