目录

  • pipeline 流水线的使用
  • 脚本示例
  • 语法
  • 点击流水线语法后面有代码生成器
  • 生成拉取git的代码
  • 沙盒允许的脚本不需要审核
  • 非沙盒脚本审核的位置
  • 执行 Java -jar 文件进程退出问题
  • 如果是pipeline风格的项目
  • 如果是自由风格
  • Jenkinsfile

pipeline 流水线的使用

脚本示例
pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                git branch: 'main', credentialsId: '221cd873-1038-474f-9f7c-92a84bb9bcb7', url: 'http://192.168.100.66:180/octopus/Testexample.git'
                echo 'Hello World'
            }
        }
        stage('编译打包') {
            steps {
                sh '''export JAVA_HOME=/root/tools/jdk1.8 
                      mvn clean install'''
                echo 'maven构建完成'
            }
        }
        stage('启动jar') {
            steps {
                
                //设置后台保活
                /**
                 *第一行设置后台保活 
                 * 第二行杀死旧的进程
                 * 第三行复制jar
                 * 第四行启动运行 jar
                 */
               sh '''
                     export JENKINS_NODE_COOKIE=asdsdfsdf
                     ps -ef|grep TestExample-0.0.1-SNAPSHOT.jar|awk '{print $2}'|xargs echo         
                     cp target/*.jar  /root/jar                                                      
                     java -jar /root/jar/*.jar &>/root/jar/nohup.out &                              
                     '''
                echo '启动 jar'
            }
        }
         
       
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
语法

pipeline 定义流水线标志
stages 定义阶段
stage 定义具体的阶段
steps 定义一个阶段里面的的步骤,里面是具体的每一个步骤

我们需要关心的只是steps 里面每一个步骤应该怎么写

点击流水线语法后面有代码生成器

jenkins流水线脚本使用_git

生成拉取git的代码

示例步骤里面可以选很多模型,比如配置git拉取代理,发送文件到目标服务器,执行 shell 脚本,发送邮件等等

生成代码以后铁道对应的steps 里面就行

jenkins流水线脚本使用_git_02

沙盒允许的脚本不需要审核

jenkins流水线脚本使用_git_03

非沙盒脚本审核的位置

jenkins流水线脚本使用_jar_04

没有勾选 Grovy 沙盒选项的代码需要 点击审核的脚本才能运行

jenkins流水线脚本使用_保活_05

执行 Java -jar 文件进程退出问题

如果是pipeline风格的项目

export JENKINS_NODE_COOKIE=xxx,可以让执行脚本的时候后台保活

sh '''export JENKINS_NODE_COOKIE=dontkillme
				 cp target/*.jar  /root/jar
                 nohup java -jar /root/jar/*jar &>nohup.out &'''
            echo 'run jar'
  • 1.
  • 2.
  • 3.
  • 4.

jenkins流水线脚本使用_git_06

如果是自由风格

export BUILD_ID=xxx,可以让后台保活

export BUILD_ID=dontkillme
ps -ef|grep TestExample-0.0.1-SNAPSHOT.jar|awk '{print $2}'|xargs echo
cp target/*.jar  /root/jar
java -jar /root/jar/*.jar &>/root/jar/nohup.out &
  • 1.
  • 2.
  • 3.
  • 4.

jenkins流水线脚本使用_git_07

Jenkinsfile

jenkins的构建脚本可以放在jenkins里面,也可以放在git仓库。

比如在项目中通过Jenkinsfile定义构建脚本,然后jenkins去git取构建脚本,以此来构建流水线。

jenkins流水线脚本使用_git_08