首页 > 其他分享 >jenkins中使用Pipeline script 和Pipeline script from SCM的区别

jenkins中使用Pipeline script 和Pipeline script from SCM的区别

时间:2022-12-24 21:55:20浏览次数:45  
标签:SCM Pipeline git script -- locust test jenkins

Pipeline script from SCM

Pipeline script from SCM是从git上拉取Dockerfile,使用Dockerfile中的script去执行,但是要注意的是,当Dockerfile和代码在一个repo的时候,拉取Dockerfile其他代码也会一同拉取下来,因此脚本要把git credentialsId: 'admin', url: 'ssh://[email protected]:7999/aut/locust_test.git'给注释掉,举个例子:
比如Dockerfile中的脚本是这样的:

pipeline {
    agent {
        docker { image 'docker.io/beck123/locust:v1'}
    }
    
    
    
    stages {
        stage("Git checkout") {
            steps {
                // sh '''
                //     if [ -d locust_test ]
                //     then
                //       rm -f locust_test
                //     fi
                //    '''
                sh '''
                echo "拉取代码前容器内部的文件:"
                ls -l
                '''
                //git credentialsId: 'admin', url: 'ssh://[email protected]:7999/aut/locust_test.git'
            }
        }
            
        stage('Test') {
            steps {
                sh '''
                    echo "拉取代码后容器内部的文件:"
                    ls -l
                    locust -f src/locustfile.py --headless -u 100 -r 5 -t 120s -H http://192.168.1.2:8099
                   '''
            }
        }
    }
}

如果把jenkins workshop下的locust_test文件删了,会发现拉取前和拉取后的文件时间都一样

实际上开始拉取Dockerfile的时候,其他代码就一起拉下来了

Pipeline script

使用Pipeline script,就需要在jenkins pipline的脚本里定义git credentialsId: 'admin', url: 'ssh://[email protected]:7999/aut/locust_test.git',不能注释掉,否则代码不会拉下来

pipeline {
    agent {
        docker { image 'docker.io/beck123/locust:v1'}
    }
    
    
    
    stages {
        stage("Git checkout") {
            steps {
                // sh '''
                //     if [ -d locust_test ]
                //     then
                //       rm -f locust_test
                //     fi
                //    '''
                sh '''
                echo "拉取代码前容器内部的文件:"
                ls -l
                '''
                git credentialsId: 'admin', url: 'ssh://[email protected]:7999/aut/locust_test.git'
            }
        }
            
        stage('Test') {
            steps {
                sh '''
                    echo "拉取代码后容器内部的文件:"
                    ls -l
                    locust -f src/locustfile.py --headless -u 100 -r 5 -t 120s -H http://192.168.1.2:8099
                   '''
            }
        }
    }
}

一个发现

如果仔细看jenkins home下的workspace,会发现即使容器销毁了,这里也会保留一个代码目录,我猜测这可能是docker容器的数据卷,容器创建后自动挂载到这个目录上,本身容器内也就相当于有了一份代码数据,如果代码有更新,那么只拉取更新部分的

[root@k8s-master workspace]# cd /var/lib/jenkins/workspace/
[root@k8s-master workspace]# pwd
/var/lib/jenkins/workspace
[root@k8s-master workspace]# ls
locust_test  locust_test@tmp
[root@k8s-master workspace]# ls locust_test
Dockerfile  Jenkinsfile  README.md  requirements.txt  src
[root@k8s-master workspace]# ls -l locust_test
总用量 16
-rw-r--r-- 1 jenkins jenkins  178 12月 24 18:35 Dockerfile
-rw-r--r-- 1 jenkins jenkins  938 12月 24 18:44 Jenkinsfile
-rw-r--r-- 1 jenkins jenkins  109 12月 24 18:35 README.md
-rw-r--r-- 1 jenkins jenkins 1045 12月 24 18:35 requirements.txt
drwxr-xr-x 3 jenkins jenkins   65 12月 24 18:35 src
[root@k8s-master workspace]# 

标签:SCM,Pipeline,git,script,--,locust,test,jenkins
From: https://www.cnblogs.com/my_captain/p/17003440.html

相关文章

  • Script-字符串-2022-12-24
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><script>//<!--采用严格检查模式usestrict放在第一行//let定义......
  • SCRIPT-严格检查-2022-12-24
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><script><!--采用严格检查模式usestrict放在第一行let定义局部变......
  • Centos7上使用jenkins执行pipeline在容器内部拉取环境运行代码的各种坑
    环境Centos7上部署了三个服务bitbucket192.168.1.156:7900jenkins192.168.1.156:8080docker服务坑一:忘了bitbucket的登录密码解决办法这个直接去bitbucket官网:lo......
  • [Typescript] Branded type
    Forexample,wehaveatyperepersentcurrency:USD,valueshouldbesomethinglike '$123',astringtypewith`$`andnumber. Solet'ssaywemakeaUSDt......
  • 彻底弄懂Javascript模块导入导出
    笔者开始学习Javascript的时候,对模块不太懂,不知道怎么导入模块,导出模块,就胡乱一通试比如importxxfrom'test.js'不起作用,就加个括号import{xx}from'test.js'反......
  • JavaScript:类(class)
    在JS中,类是后来才出的概念,早期创造对象的方式是newFunction()调用构造函数创建函数对象;而现在,可以使用newclassName()构造方法来创建类对象了;所以在很多方面,类的使用方......
  • 解决pipline找不到docker命令:/Users/beck/.jenkins/workspace/locust_test@tmp/durabl
    问题一:/Users/beck/.jenkins/workspace/locust_test@tmp/durable-884e1b18/script.sh:line1:docker:commandnotfound完整的pipeline如下,在dockerhub上我打包了locu......
  • 第一百一十七篇: JavaScript 工厂模式和原型模式
    好家伙,本篇为《JS高级程序设计》第八章“对象、类与面向对象编程”学习笔记 1.工厂模式工厂模式是另外一种关注对象创建概念的创建模式。它的领域中同其它模式的不同......
  • 史上最全!熬夜整理56个JavaScript高级的手写知识点!!专业扫盲!
    本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。前言大家好,我是林三心,基础是进阶的前提,前面我给大家分享了本菜鸟这一年来笔记中的50个JS基础知识点和50个JS高......
  • 教你用JavaScript实现进度条
    案例介绍欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个进度条。进度条数字自动增加,条状图片动画演示进度完成度。通过实......