Jenkins免密拉取GitLab项目

1.在Jenkins上为GitLab创建一个专有的拉取代码的账号 Jenkins需要构建哪些项目就在GitLab给予账号相应权限 我这里已经创建过Jenkins用户,下面用它登录后添加SSH-KEY

2.在Jenkins服务器上生成ssh-key

[root@jenkins ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:IUQIuu0SAdSbZvENbIjFYTrUrnuqKGBmZtwPj6lvz60 root@jenkins
The key's randomart image is:
+---[RSA ]----+
|ooB=+oo |
|ooo*.= |
|oo. * + . |
| +.* . o . |
|+ * S |
|.@ o |
|O o * |
|oo =.o. |
|=o*..E.. |
+----[SHA256]-----+

查看公钥

[root@jenkins ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7ckQQf4N93Rjf0ts3Lk4siL6FZmZiBiB+ouwTgw9kKof2NeJTguf0aNfDsgSEet4+bJ53ZKztsFZE/C+sqk7grqeLeYDFBWgdZBz1dmCYT51tRFmZPDEDclOIMc2tz0G50g6DFA1dvIfkzeVbKjBNN0o80FSAwAzrtjMrkyaDcrOmYekiSPM8JYJTTcFLCzIBXz7SXOmKH5vyoAIVpdcwnIhkHNLKfD0MdzGb7Kz/pKMnLubodcxyNir6fqw76qwMe1DE0NtQzpaCrTYhVnAizVqCDek0GMZjTG1vWYNn6a8G7omV3Gde1XjcmjAj6ftVQiVLBRJaIGKI4R/B//nd root@jenkins

3.测试SSH-KEY 到jenkins服务器上拉取项目来测试ssh-key免密是否生效

[root@jenkins ~]# yum install git -y
[root@jenkins ~]# git clone git@106.14.10.124:dev01/sample.git
正克隆到 'sample'...
The authenticity of host '106.14.10.124 (106.14.10.124)' can't be established.
ECDSA key fingerprint is SHA256:bO22/HlgAAGXi9CXTxDE6wvNCUcTs2OajL9PinZMN/.
ECDSA key fingerprint is MD5:ec:4f::0a:b6::cf:6e:da:5b:fa:5b:be:b9:2f:db.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '106.14.10.124' (ECDSA) to the list of known hosts.
remote: Enumerating objects: , done.
remote: Counting objects: % (/), done.
remote: Compressing objects: % (/), done.
remote: Total (delta ), reused (delta ), pack-reused
接收对象中: % (/), done.

如上,ssh-key已生效

配置jenkins自动拉取代码

1.jenkins 服务器添加证书 系统配置——》Manage Credentials

系统配置——》Manage Credentials——》Jenkins——》全局凭证——》添加凭证

这样的话Jenkins服务器拉取GitLab的代码就不需要再进行认证了。

Jenkins安装GitLab插件

1.安装插件 插件名称:

•GitLab

•Gitlab Hook

•Gitlab Authentication

•GitLab Logo

安装完成后重启Jenkins

GitLab为Jenkins生成Token

1.我们使用Jenkins用户登录GitLab 然后使用Jenkins用户创建Token

2.复制创建的Token

3.打开Jenkins 系统管理——》系统配置

输入以下相关内容

选择凭证,测试后保存

4.查看凭证 现在有以下两种方式与GitLab进行认证

•通过GitLab上Jenkins用户的密钥(GitLab绑定Jenkins用户的公钥,Jenkins绑定GitLab上Jenkins用户的私钥)、

•通过GitLab上Jenkins用户的API Token绑定到Jenkins上的GitLab authentication插件上进行连接。
Jenkins构建流水线
创建Project 新建任务——》流水线

2.选择流水线语法

3.生成流水线脚本

复制生成的git脚本

4.编写Pipline脚本 我这里脚本如下

node {
stage('拉取代码'){
git credentialsId: 'b907af22-5a74-4eee-aa5f-a822c764279c', url: 'git@172.19.95.139:dev01/sample.git'
echo "Code Pull"
}
stage('代码扫描'){
echo "Code Scanning"
}
stage('代码构建'){
echo "Code Build"
}
stage('是否部署'){
input '是否部署'
}
stage('开始部署'){
sh '/opt/jenkins/sample/sample_release.sh'
}
}

将以上脚本写流水线中

上面脚本最后执行了/opt/jenkins/sample/sample_release.sh脚本,我们到执行任务的Jenkins服务器上去编写这个部署脚本。脚本如下:jenkins服务器将/usr/local/src/sample.zip文件拷贝到了172.19.182.107上

[root@jenkins /]# cat /opt/jenkins/sample/sample_release.sh
#!/usr/bin/env bash scp /usr/local/src/sample.zip root@172.19.182.107:/usr/local/

这里我们需要先让Jenkins服务器与172.19.182.107做免密登录,将Jenkins的公钥拷贝到172.19.182.107服务中的/root/.ssh/authorized_keys文件中

#Jenkins的公钥(这里为root的公钥,Jenkins进程就需要用root用户运行)
[root@jenkins /]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7ckQQf4N93Rjf0ts3Lk4siL6FZmZiBiB+ouwTgw9kKof2NeJTguf0aNfDsgSEet4+bJ53ZKztsFZE/C+sqk7grqeLeYDFBWgdZBz1dmCYT51tRFmZPDEDclOIMc2tz0G50g6DFA1dvIfkzeVbKjBNN0o80FSAwAzrtjMrkyaDcrOmYekiSPM8JYJTTcFLCzIBXz7SXOmKH5vyoAIVpdcwnIhkHNLKfD0MdzGb7Kz/pKMnLubodcxyNir6fqw76qwMe1DE0NtQzpaCrTYhVnAizVqCDek0GMZjTG1vWYNn6a8G7omV3Gde1XjcmjAj6ftVQiVLBRJaIGKI4R/B//nd root@jenkins #172.19..107服务器的authorized_keys文件
cat /root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7ckQQf4N93Rjf0ts3Lk4siL6FZmZiBiB+ouwTgw9kKof2NeJTguf0aNfDsgSEet4+bJ53ZKztsFZE/C+sqk7grqeLeYDFBWgdZBz1dmCYT51tRFmZPDEDclOIMc2tz0G50g6DFA1dvIfkzeVbKjBNN0o80FSAwAzrtjMrkyaDcrOmYekiSPM8JYJTTcFLCzIBXz7SXOmKH5vyoAIVpdcwnIhkHNLKfD0MdzGb7Kz/pKMnLubodcxyNir6fqw76qwMe1DE0NtQzpaCrTYhVnAizVqCDek0GMZjTG1vWYNn6a8G7omV3Gde1XjcmjAj6ftVQiVLBRJaIGKI4R/B//nd root@jenkins #测试免密登录
[root@jenkins /]# ssh root@172.19.182.107
Last login: Tue Jun :: from 172.19.206.72 Welcome to Alibaba Cloud Elastic Compute Service !

Jenkins执行任务

1.进入到任务中

2.点击立即构建

3.是否部署

 
 
爆肝整理的,2020超全学习资料免费分享给大家,点击后面的链接,可直接领取:https://apprhKAAI3V6603.h5.xeknow.com/st/76WHBZtWV (免费!免费!免费!)
 
 

技术干货:Jenkins集成GitLab的更多相关文章

  1. jenkins集成gitlab

     一.配置jenkins 1.安装Gitlab Hook Plugin )生成随机token 在系统中生成 openssl rand -hex 0f2a47c861133916d2e299e3 )创建 ...

  2. jenkins 集成jmeter-简单篇

    测试用例上传至gitlab后,使用jenkins集成gitlab,并执行压测命令 执行完成后,可在jenkins中查看压测报告不同的项目创建最好创建不同的project) [集成]安装&配置& ...

  3. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken

    项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个 ...

  4. Jenkins与Gitlab集成

    一.安装jenkinshttps://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/     #清华yum源 yum -y install java-1.8. ...

  5. 使用Jenkins+Docker+Gitlab+Maven搭建持续集成环境

    继使用Docker搭建Gitlab后 大致的步骤如下: 开发人员通过IDE工具(IntelliJ IDEA)将代码推送到gitlab. jenkins从gitlab中获取到源码,并使用maven编译. ...

  6. DEVOPS技术实践_11:Jenkins集成Sonar

    前言 前面已经有介绍sonar的安装,简单应用,下面在简答的研究一下sonar和jenkins集成的简单使用,对于sonar的安装不做介绍 一 sonar的简单介绍 持续检查避免了低质量的代码,比如S ...

  7. jenkins 与 gitlab 的持续集成

    前言介绍 gitlab与jenkins的安装部署请参考之前的文章:这里介绍一下jenkins与gitlab结合的好处. gitlab可以自己实现CICD功能,jenkins也可以结合其他工具来实现CI ...

  8. 50篇经典珍藏 | Docker、Mesos、微服务、云原生技术干货

    概念篇 全方位探(tian)索(keng)Mesos各种存储处理方式 老肖有话说@Mesos User Group第四次约会 技术实践 | Mesos 全方位“烹饪”指南 回顾 JAVA 发展轨迹,看 ...

  9. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(7)

    项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)–技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静 ...

随机推荐

  1. webpack简单笔记

    本文简单记录学习webpack3.0的笔记,已备日后查阅.节省查阅文档时间 安装 可以使用npm安装 //全局安装 npm install -g webpack //安装到项目目录 npm insta ...

  2. 如何用 React 构建前端架构

    早期的前端是由后端开发的,最开始的时候仅仅做展示,点一下链接跳转到另外一个页面去,渲染表单,再用Ajax的方式请求网络和后端交互,数据返回来还需要把数据渲染到DOM上.写这样的代码的确是很简单.在We ...

  3. Python数据可视化实战:实时更新海外疫情数据,实现数据可视化

    前言 我国的疫情已经得到了科学的控制,开始了全面的复工复产,但是国外的疫情却“停不下来”.国外现在可谓就是处于水深火热当中啊,病毒极强的传染性,导致了许多的人都“中招”了,我国已经全面复工复产了,人大 ...

  4. JAVA 字节流 与 字符流 的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 字节流 在操作时本身不会用到缓冲区(内存),是文件本身直接操作的 字符流 在操作时使用了缓冲区,通过缓冲区再操作文 ...

  5. 新一代APM链路监控选型的一个总结重点是skywalking和pinpoint的对比

    链路监控选型的一个比较:1.cat框架:需要对业务代码有较强的侵入性,对代码的侵入性很大,集成成本较高,风险较大:2.zipkin框架:仅支持spring cloud,不支持dubbo,功能及其简单, ...

  6. SpringMVC 学习笔记(六)拦截器

    5.1.处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器) 类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理. ...

  7. caffe的python接口学习(3)训练模型training

    如果不进行可视化,只想得到一个最终的训练model, 那么代码非常简单,如下 : import caffe caffe.set_device(0) caffe.set_mode_gpu() solve ...

  8. Python 中的元类到底是什么?这篇恐怕是最清楚的了

    类作为对象 在理解元类之前,您需要掌握 Python 的类.Python 从 Smalltalk 语言中借用了一个非常特殊的类概念. 在大多数语言中,类只是描述如何产生对象的代码段.在 Python ...

  9. C# 获取枚举的描述Description

    方法类: public static class EnumExtensions { #region Enum /// <summary> /// 获取枚举变量值的 Description ...

  10. ref和out的使用及区别

    1.  ref的使用:使用ref进行参数的传递时,该参数在创建时,必须设置其初始值,且ref侧重于修改: 2. out的使用: 采用out参数传递时,该参数在创建时,可以不设置初始值,但是在方法中必须 ...