采用宿主机Docker
如果采用docker安装jenkins,可以通过启动容器时增加docker相关路径来使用本机的docker
设置docker相关的路径。
-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
v /var/run/docker.sock:/var/run/docker.sock 映射宿主机的docker
-v /usr/bin/docker:/usr/bin/docker 映射宿主机的docker
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 在centos7 系统下会出现个别的包丢失,对应的引下宿主机的包就可以。
docker在容器内构建的时候,如果出现权限不够。可以在宿主机中使用以下两种方式:
$ sudo chmod 777 /var/run/docker.sock
或者
$ usermod -a -G docker jenkin
通过构建参数执行不同的step
根据不同的module执行不同的build命令
node {
properties([parameters([
string(defaultValue: 'www.baidu.com', description: '请输入访问地址', name: 'url'),
choice(choices: 'All\ndd\nguest\nflow', description: '请选择对应的项目', name: 'module')
]), pipelineTriggers([])])
stage('Build') {
echo 'Build'
echo "${params.module}"
echo "${params.url}"
if(params.module == 'All' || params.module == 'dd'){
echo 'build dd'
}
if(params.module == 'All' || params.module == 'guest'){
echo 'build guest'
}
}
stage('Test'){
echo 'Test'
}
stage('Deploy') {
echo 'Deploy'
}
}
通过SSH Agent Plugin执行远程命令
sshagent (credentials: ['credential']) {
sh '''ssh -o StrictHostKeyChecking=no -l root xxx.xxx.xxx.xxx << remotessh
echo 1
'''
}
通过SSH Pipeline Steps 插件执行远程命令
方法一: 通过明文账号,密码登录访问
stage('Remote SSH') {
def remote = [:]
remote.name = 'ssh'
remote.host = 'xxx.xxx.xxx.xxx'
remote.user = 'root'
remote.password = 'xxxxxx'
remote.allowAnyHosts = true
sshCommand remote: remote, command:
'''
docker ps
export TAG=1.0.9
echo \$TAG
'''
}
方法二: 通过私钥证书访问
stage('Remote SSH') {
def remote = [:]
remote.name = "ssh"
remote.host = "192.168.3.122"
remote.allowAnyHosts = true
withCredentials([sshUserPrivateKey(credentialsId: 'credential', keyFileVariable: 'identity', passphraseVariable: '', usernameVariable: 'userName')]) {
remote.user = userName
remote.identityFile = identity
sshCommand remote: remote, command:
'''
docker ps
export TAG=1.0.9
echo \$TAG
'''
}
}
Jenkins 镜像
jenkins->插件管理->高级->升级站点
修改URL:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/stable/update-center.json