1987WEB视界-分享互联网热点话题和事件

您现在的位置是:首页 > WEB开发 > 正文

WEB开发

Jenkins集成GitLab

1987web2023-10-06WEB开发70

Jenkins免密拉取GitLab项目

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

-w1020

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

[root@jenkins~]ssh-keygen-t rsaGeneratingpublic/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@jenkinsThekeys 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.pubssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7ckQQf4N93Rjf0ts3Lk4siL6FZmZiBiB+ouwTgw9kKof2NeJTguf0aNfDsgSEet4+bJ53ZKztsFZE/C+sqk7grqeLeYDFBWgdZBz1dmCYT51tRFmZPDEDclOIMc2tz0G50g6DFA1dvIfkzeVbKjBNN0o80FSAwAzrtjMrkyaDcrOmYekiSPM8JYJTTcFLCzIBXz7SXOmKH5vyoAIVpdcwnIhkHNLKfD0MdzGb7Kz/pKMnLubodcxyNir6fqw76qwMe1DE0NtQzpaCrTYhVnAizVqCDek0GMZjTG1vWYNn6a8G7omV3Gde1XjcmjAj6ftVQiVLBRJaIGKI4R/B//nd root@jenkins

将Jenkins的公钥填入GitLab账号中

-w1314

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)?yesWarning: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

-w1617

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

-w1617

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

Jenkins安装GitLab插件

1.安装插件插件名称:

GitLabGitlab HookGitlab AuthenticationGitLab Logo

-w1599

安装完成后重启Jenkins

GitLab为Jenkins生成Token

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

-w1621

2.复制创建的Token

-w1615

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

-w1425

输入以下相关内容

-w1152

选择凭证,测试后保存

-w1377

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

通过GitLab上Jenkins用户的密钥(GitLab绑定Jenkins用户的公钥,Jenkins绑定GitLab上Jenkins用户的私钥)、通过GitLab上Jenkins用户的API Token绑定到Jenkins上的GitLab authentication插件上进行连接。

-w1512

Jenkins构建流水线

1.创建Project新建任务——》流水线

-w1395

2.选择流水线语法

-w1164

3.生成流水线脚本

-w1626

复制生成的git脚本

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

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

将以上脚本写流水线中

-w1507

上面脚本最后执行了/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 bashscp/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.pubssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7ckQQf4N93Rjf0ts3Lk4siL6FZmZiBiB+ouwTgw9kKof2NeJTguf0aNfDsgSEet4+bJ53ZKztsFZE/C+sqk7grqeLeYDFBWgdZBz1dmCYT51tRFmZPDEDclOIMc2tz0G50g6DFA1dvIfkzeVbKjBNN0o80FSAwAzrtjMrkyaDcrOmYekiSPM8JYJTTcFLCzIBXz7SXOmKH5vyoAIVpdcwnIhkHNLKfD0MdzGb7Kz/pKMnLubodcxyNir6fqw76qwMe1DE0NtQzpaCrTYhVnAizVqCDek0GMZjTG1vWYNn6a8G7omV3Gde1XjcmjAj6ftVQiVLBRJaIGKI4R/B//nd root@jenkins172.19.182.107服务器的authorized_keys文件cat/root/.ssh/authorized_keysssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7ckQQf4N93Rjf0ts3Lk4siL6FZmZiBiB+ouwTgw9kKof2NeJTguf0aNfDsgSEet4+bJ53ZKztsFZE/C+sqk7grqeLeYDFBWgdZBz1dmCYT51tRFmZPDEDclOIMc2tz0G50g6DFA1dvIfkzeVbKjBNN0o80FSAwAzrtjMrkyaDcrOmYekiSPM8JYJTTcFLCzIBXz7SXOmKH5vyoAIVpdcwnIhkHNLKfD0MdzGb7Kz/pKMnLubodcxyNir6fqw76qwMe1DE0NtQzpaCrTYhVnAizVqCDek0GMZjTG1vWYNn6a8G7omV3Gde1XjcmjAj6ftVQiVLBRJaIGKI4R/B//nd root@jenkins测试免密登录[root@jenkins/]ssh root@172.19.182.107Lastlogin:TueJun3020:26:122020from172.19.206.72WelcometoAlibabaCloudElasticComputeService!

Jenkins执行任务

1.进入到任务中

-w1362

2.点击立即构建

-w961

3.是否部署

-w1385
-w1329

☆ END ☆

持续集成(CI)上面整个流程中最重要的组成部分就是持续集成(Continuous integration,简称CI)。持续集成指的是,频繁地(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。它的好处主要有两个:

  1. 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易;
  2. 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

持续交付

持续交付(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身份验证了