一、环境准备
主机名 | 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