一. jenkins 的配置
1.前提条件安装了GitLab Plugin (源码管理使用),GitLab Hook(gitlab webhook须要)
Manage Jenkins--->Manage Plugin ---->Available 去找到安装。php
2. 建立 job ,选择 自由风格的项目,点击ok
3. 源码管理
描述配置html
源码管理:要想链接 gitlab服务器,有两种选择,用http协议或者 ssh协议,这里咱们使用sshgit
首先填写 gitlab 的urlweb
配置到gilab 的认证: Credentials ,点击ADD,复制 gitlab ssh密钥对的私钥到下图.shell
认证成功以下图:没有任何报错了安全
说明: 若是 gitlab 配置了ssh 密钥对,jenkins这边也添加了 包含私钥的凭证仍是没法正常链接的话,参考: https://www.cnblogs.com/yitianyouyitian/p/10027552.html服务器
4. 构建触发器设置
勾选以下, 下面的url是回调地址, gitlab webhook 那边的设置会用上.ssh
区分分支 触发构建 设置以下: 只用master分分支变化后才会触发构建.ide
5. 构建
选择 Execute shellgitlab
shell脚本编写,将 代码同步到web服务器目录,重启服务。
注意: shell命令的执行 是在 jenkins 的job 的workspace 目录进行的. 这里是项目 php1的工做目录 /root/.jenkins/workspace/php1 。jenkins从gitlab pull的代码就是放置在这里.
注意: 在这踩坑了,执行 rsync 老是失败,提示permission deny。问题是ssh 无密码访问的问题。这里的jenkins 访问 远程主机 使用的不是默认名字(id_rsa等)的密钥。解决方法以下.
#在 /etc/ssh/ssh_config 添加以下内容 #指明命令中 须要ssh 远程的主机锁使用的用户和密钥。 Host 172.10.30.228 user root IdentityFile ~/.ssh/id_rsa1 #防止弹出判断选择 StrictHostKeyChecking no
二. gitlab 配置
1. gitlab webhook 设置
进入 project .点击 setting-----> integrations设置。注意不是 管理区域的 系统钩子.
填写 上面 构建触发器中的 url. 安全令牌有无均可以(令牌来自jenkins构建触发器中选中的Build When a change is pushed右下角的高级选项,有一个Secret token,点击 Generate,会生成一个安全代码).
点击 test来测试是否能够成功触发.
出现的问题: test 的时候 出现403 anonymous is missing the Job/Build permission 错误。参考: https://blog.csdn.net/u011662047/article/details/80525503
两步解决问题 (测试了,其实只须要第一步就ok了。)
1. 系统管理 -> 插件管理 -> 安装插件gitlab hook
2. 系统管理 -> 系统设置 -> 去掉 Enable authentication for ‘/project’ end-point
其余朋友总结的错误:
https://www.cnblogs.com/zblade/p/9480366.html
再记录一个坑: gitlab 这边 test web hook 成功。可是push后不触发jenkins的构建.找了半天是gitlab 的服务sidekiq 和unicorn没有启动,吐血了。。。