Jenkins集成GitLab
Jenkins免密拉取GitLab项目
1.在Jenkins上为GitLab创建一个专有的拉取代码的账号Jenkins需要构建哪些项目就在GitLab给予账号相应权限 我这里已经创建过Jenkins用户,下面用它登录后添加SSH-KEY
2.在Jenkins服务器上生成ssh-key
[root@jenkins~]ssh-keygen-t rsa
Generatingpublic/privatersa key pair.
Enterfileinwhich to save the key(/root/.ssh/id_rsa):
Enterpassphrase(emptyfornopassphrase):
Entersame passphrase again:
Youridentification has been savedin/root/.ssh/id_rsa.
Yourpublickey has been savedin/root/.ssh/id_rsa.pub.
Thekey fingerprintis:
SHA256:IUQIuu0SAdSbZvENbIjFYTrUrnuqKGBmZtwPj6lvz60root@jenkins
Thekeys randomart image is:
+---[RSA2048]----+
|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
将Jenkins的公钥填入GitLab账号中
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...
Theauthenticityofhost106.14.10.124 (106.14.10.124)cant be established.
ECDSA key fingerprintisSHA256:bO22/HlgAAGXi9CXTxDE6wvNCUcTs2OajL9PinZMN/0.
ECDSA key fingerprintisMD5:ec:4f:14:0a:b6:72:cf:6e:da:5b:fa:5b:be:b9:2f:db.
Areyou sure you want tocontinueconnecting(yes/no)?yes
Warning:Permanentlyadded106.14.10.124(ECDSA)to the listofknown hosts.
remote:Enumeratingobjects:6,done.
remote:Countingobjects:100%(6/6),done.
remote:Compressingobjects:100%(4/4),done.
remote:Total6(delta0),reused0(delta0),pack-reused0
接收对象中:100%(6/6),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构建流水线
1.创建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.182.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
Lastlogin:TueJun3020:26:122020from172.19.206.72
WelcometoAlibabaCloudElasticComputeService!
Jenkins执行任务
1.进入到任务中
2.点击立即构建
3.是否部署
☆ END ☆
持续集成(CI)上面整个流程中最重要的组成部分就是持续集成(Continuous integration,简称CI)。持续集成指的是,频繁地(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。它的好处主要有两个:
- 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易;
- 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
持续交付
持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。
玩转gitlab+jenkins
我很高兴的宣布在 Jenkins 中 GitHub 应用进行身份验证现已支持。这是许多用户期待已久的功能。它已在GitHub Branch Source 2.7.1中发布,现在可以在 Jenkins 更新中心使用。
身份验证为 GitHub 应用带来了很多好处:
更高的请求频率限制
- GitHub 应用程序的速率限制随您的组织规模而定,而基于用户的令牌的限制为 5000,无论您拥有多少存储库。与用户无关的身份验证
- 每个 GitHub 应用都有自己的用户独立身份验证。不再需要机器人用户或确定谁应该是 2FA 或 OAuth 令牌的所有者。改进的安全性和更严格的权限
- 与服务用户及其个人访问令牌相比,GitHub Apps 提供了更精细的权限。这使 Jenkins GitHub 应用程序需要更少的权限集即可正常运行。访问 GitHub Checks API
- GitHub Apps 可以访问 GitHub Checks API 以从 Jenkins 作业创建检查运行和检查套件,并提供有关提交和代码注释的详细反馈。
1
Jenkins支持GithubAPP身份验证了