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