一、环境准备
| 主机名 | ip | 安装软件 |
|---|---|---|
| jenkins | 192.168.75.149 | jenkins |
| gitlab | 192.168.75.147 | gitlab |
| web | 192.168.75.155 | 部署应用 |
二、jenkins服务器配置
1、生产公钥
[root@jenkins ~]# ssh-keygen
(2)获取公钥信息
公钥信息在配置 Gitlab SSH Keys 时用到。

(3)获取私钥信息
私钥信息在配置 Jenkins Publish over SSH 时用到。

(4)复制公钥到应用服务器
[root@jenkins ~]# ssh-copy-id 192.168.75.155
三、配置 Gitlab
1、创建示例项目 git-test

2、配置 SSH Keys

将jenkins的公钥复制过来,点击add key

3、配置 Access Token

点击create按钮

将生成的 Access Token 记录下来,后面在配置 GitLab 凭据时用到:

四、配置 Jenkins
1、安装插件
进入“插件管理”,安装插件:GitLab、Generic Webhook Trigger、Git Parameter、Publish Over SSH,安装完插件重启系统
2、配置 GitLab 凭据
进入系统配置,点击【添加】添加凭据

选择Gitlab API token,输入从gitlab生成的token,输入ID,点击确定

输入gitlab的连接名称、连接地址,点击【Test Connection】测试成功后点击【保存】

3、配置 Publish over SSH
进入系统配置,配置 Publish over SSH,输入jenkins的私钥

4、配置 SSH Servers
输入应用服务器的ip和用户名,点击测试,成功之后点击保存
注意:配置 Jenkins SSH Servers 时,Remote Directory 设为 “/”,如果不设置,文件会默认拷贝到 /root 目录下

5、创建任务
点击“新建任务”,创建任务 pipeline-test,选择自由风格的软件项目

6、配置任务
(1)配置git
输入gitlab的地址和凭证(我用的是用户名和密码的)

(2)构建触发器

点击高级,点击Generat生产token

(3)构建
选中“Send files or execute command over SSH”


(4)jenkins其他配置
勾选匿名用户具有可读权限

Error 403 No valid crumb was included in the request 报错解决 容器化jenkins关闭CSRF
参考链接:
进入jenkins容器修改/usr/local/bin/jenkins.sh脚本,将原来的exec java -Duser.home="$JENKINS_HOME" ${FUTURE_OPTS} "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@"改为
exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@",保存退出,重启容器即可

取消勾选Enable authentication for ‘/project’ end-point

五、配置 Gitlab Webhook
进入gitlab项目,选择webhook,填写jenkins上的地址和token保存即可


返回200则说明成功

六、测试
修改代码并 push 到远程仓库



其他:需提前安装以下插件:gitlab hook-plugin,gitlab-plugin,gitlab


















