Gitlab+Jenkins实现自动部署

http://blog.51cto.com/bigboss/2129477

https://www.cnblogs.com/wsy1030/p/9228488.html

http://appletest.lofter.com/post/1d595918_f5521cb

在 Jenkins 上配置项目,通过 ssh key 的 credential 从指定端口的 Gitlab 上拉取代码。划重点,“指定端口”是啥概念?Gitlab 默认端口是 22,ssh 拉取代码的命令是这样的:

git clone git@git.applewu.com:testlab/mydemo.git

如果 Gitlab Server 上更改了配置,改成走 3088 端口。那么,ssh 拉取代码的命令就应该是这样子滴:

git clone [git@git.applewu.com:3088]:testlab/mydemo.git

就是这么的简单,但是当我把地址配置到 Jenkins,发现 Jenkins 把 "[" 符号转义了;搞笑的是,“]”却没有转义。如下图。

涉及实际项目的 url 和端口号我都抹掉了。通过红色高亮可以看出,"["已经被转义为 "%25255b","%255"。

既然 Jenkins 的 GitClient 插件存在这种 Issue,那咱们就要换个姿势配置。


解决思路:

更改 ssh 配置,访问 git server 的时候,指定走某个端口。

划重点,要更新 Jenkins 的 ssh 配置啊,不是 Jenkins 这台服务器的 ssh 配置。这正是我之前犯糊涂的地方 :(

服务器的 ssh 配置文件,(当前用户)路径一般在:

~/.ssh/config

而 Jenkins 读取的配置文件路径是,{jenkins安装路径}/.ssh/config ,即

/var/lib/jenkins/.ssh/config

config 文件的内容是:

Host git.applewu.com

Port 3088

配置完成之后,就可以在 Jenkins 通过以下命令拉代码了:

git clone git@git.applewu.com:testlab/mydemo.git

系统环境:

  • Gitlab主机

    • IP:192.168.1.2
  • Jenkins主机

    • IP:192.168.1.3

一、为何要做自动部署

 #为什么要做自动部署,因为懒啊!!! #部署Tomcat的在这里:http://blog.51cto.com/bigboss/2155423 

二、配置Gitlab

 #首先,你得有一个代码仓库,赶紧到gitlab上创建一个,然后创建个分支并创建一个文件。 

Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署

 #其次,你得配置一个ssh公钥到gitlab上,这样才能模拟开发上传代码到gitlab。 #至于ssh公钥私钥怎么生成,自己百度去。 

Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署

#克隆代码仓库,然后测试是否能够上传代码到gitlab git clone git@192.168.1.2:root/test.git cd test/ echo 11111 > 1.txt
git add .
git commit -m "add 1.txt" git push

Gitlab+Jenkins实现自动部署


三、配置Jenkins

#打开jenkins页面 #添加插件:系统管理 - 插件管理  #需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter  #添加完插件重启jenkins,开始添加要部署代码的主机,注意一定是要能够ssh登陆的用户。 #添加主机:系统管理 - 系统设置 找到Publish over SSH 

Gitlab+Jenkins实现自动部署

#端口号修改点击高级输入 
#添加完主机之后,新建一个项目,开始配置构建操作 

Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署

 #配置gitlab,当有代码提交时,触发jenkins的部署操作 

Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署


四、测试提交代码是否会部署到远程主机

#再次克隆仓库 git clone git@192.168.1.2:root/test.git cd test/ echo '测试Jenkins' > index.html
git add .
git commit -m 'add index.html' git push #提交之后去jenkins页面看看 

Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署


小坑:

  • 错误提示:

    #很多朋友使用最新版本的gitlab做自动部署时,在增加web钩子那一步, #点击test push events时会报错:Url is blocked: Requests to the local network are not allowed

    Gitlab+Jenkins实现自动部署

  • 解决方法:

    #这是因为新版的gitlab为了安全默认禁止了本地局域网地址调用web hook #我们在设置里允许就行,具体步骤如下:

    Gitlab+Jenkins实现自动部署
    Gitlab+Jenkins实现自动部署

    A+
发布日期:2019年01月08日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: