pipeline使用

pipeline自动构建使用

最近在学习研究pipeline自动流水线构建的操作,在这里做一下笔记避免忘记。

这里就不介绍怎么安装了,安装可看 https://blog.csdn.net/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:多个选择值放在这里

页面如下图所示:

 

 

 

总结

目前写这些,后续再补充,有错误的地方还望指正,谢谢。

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值