pipeline自动构建使用
最近在学习研究pipeline自动流水线构建的操作,在这里做一下笔记避免忘记。
这里就不介绍怎么安装了,安装可看 https://blog.youkuaiyun.com/achi010/article/details/93708768
一、pipeline流水线创建
1、在页面的左上角有点击新建任务
2、选择流水线和输入名称,最后点击确定
二、多种操作方式
1、从gitlab上将项目的分支版本拉取到页面中,供用户选择,分支指的是 branch,标签指的是 tag,选择哪个就可以将其查询出来单独显示。
pipeline 代码:
// 自动获取tag上的分支信息
pipeline {
agent any
stages {
stage('环境准备') {
steps {
script {
credentialsid = "系统配置-凭据管理-唯一标识"
giturl = "git服务器上代码地址http那个"
branch = "${params.BRANCH_TAG}"
}
}
}
stage('Example') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: "${branch}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: "${credentialsid}", url: "${giturl}"]]])
}
}
}
}
点击保存,点击构建,之后git上的分支版本信息就会被拉取下来,供用户选择。
2、代码拉取
选择了分支之后,进行代码的拉取,代码如下:
# 这里给gitclone.sh 提供三个参数,将该段代码复制到上面的 stages 花括号内
# ${sshgiturl} 参数为代码地址git开头的
# ${branch} 参数为要拉取的分支名称
# 第三个参数为在操作哪台机器(远程到某一台机器上)进行拉取
stage('拉取代码') {
steps {
script{
sh "/home/xxx/gitclone.sh ${sshgiturl} ${branch} 192.168.2.201"
}
}
}
gitclone.sh 脚本内容如下:
#!/bin/bash
# 从git服务器上拉取代码到指定服务器上
git_url=$1
git_branch=$2
server_ip=$3
work_path="/home/linux/"$git_branch
# 在其它服务器上进行代码的拉取
ssh root@$server_ip << remotessh
if [ ! -d $work_path ];then
mkdir -p $work_path
chmod +x $work_path
fi
cd $work_path
git clone -b $git_branch $git_url
if [ \$? == 0 ];
then
echo "git clone success"
else
echo "git clone error"
exit 1
fi
exit
remotessh
exit
遇到的问题:
问题1:因为在pipeline页面自动构建时,默认操作的是 jenkins 用户,因此gitclone.sh所属的用户和组都是 jenkins,否则会出现如下情况,没有权限操作,当修改为jenkins属组后解决问题:
命令:chown jenkins:jenkins gitclone.sh
问题2:当执行自动构建拉取代码时,出现如下情况,原因是脚本里面在远程访问会遇到是否需要输入yes/no这种情况。
解决方法:需登录到jenkins服务器,切换到jenkins用户,su jenkins,在该用户下远程访问 192.168.2.201 服务器,那么该服务器的信息会存在本地,若出现执行脚本需要卡住需要输入密码的情况,那么执行以下命令,将各自公钥加入到对方服务器中,那么之后在通过ssh访问时则不需要密码。
命令:ssh-keygen -t rsa,在相应的用户根目录下生成密钥公钥,root用户一般都在 /root/.ssh/下,但此处需要将jenkins用户的公钥发送到其它服务器中
命令:ssh-copy-id -i id_rsa.pub root@192.168.2.201
将自己的公钥发送的对方服务器中,之后再次访问时就不要密码,包括在脚本中ssh远程访问时,就跳过了密码的输入。
若在执行 git clone -b $git_branch $git_url 时出现代码拉取不下来的情况,需要输入账号和密码的情况,那么将jenkins下的公钥信息保存到 gitlab 上设置下的SSH keys中,这样服务器在拉取代码时就不需要输入账号和密码。
3、复选框和单选框
Basic Parameter Types:基础参数类型配置
Parameter Type:选择单选框还是多选框等
Number of Visible Items:页面中展示的数量
Delimiter:多选之后的结果之间的间隔符
Choose Source for Value:多个选择值放在这里
页面如下图所示:
总结
目前写这些,后续再补充,有错误的地方还望指正,谢谢。