引言
项目开发过程中,会在服务器上不断地更新项目开发版本。因项目开发技术栈的不同,版本更新有时会是几行简单的命令,有时会是复杂耗时的部署步骤。我们可以用 jenkins(持续集成工具)来完成这些重复性的操作。本文以 jenkins 搭配 gitlab 的方式来记录一下使用过程。后续的持续集成流程如下:
软件版本
- 服务器操作系统:Ubuntu 16.04.7 LTS
- jenkins:2.332.1
- 软件版本控制软件:GitLab Community Edition 12.3.5
使用过程
-
在服务器上下载并启动 jenkins 服务。提供两个脚本分别用来启动和关闭 jenkins 服务(供参考):
start.sh
#!/bin/bash java_path='/opt/java/jdk1.8.0_151/bin/java' jenkins_war='/opt/jenkins/jenkins.war' log_path='/opt/jenkins/log/jenkins.log' run_pid=`ps -aux | grep ${java_path} | grep jenkins | grep -v grep | awk '{print $2}'` if [ "${run_pid}" ] then echo "jenkins is already running with pid ${run_pid}" else echo 'start jenkins...' nohup ${java_path} -jar ${jenkins_war} --httpPort=8081 > ${log_path} 2>&1 & echo 'jenkins is started' fi
stop.sh
#!/bin/bash java_path='/opt/java/jdk1.8.0_151/bin/java' run_pid=`ps -aux | grep ${java_path} | grep jenkins | grep -v grep | awk '{print $2}'` if [ ${run_pid} ] then echo 'stop jenkins...' kill -9 ${run_pid} echo 'jenkins is stopped' else echo 'jenkins is not running!' fi
-
登录 jenkins 管理平台。默认的登录用户名为
admin
,默认的登录密码保存在文件~/.jenkins/secrets/initialAdminPassword
中。如果以步骤 1 提供脚本中的启动实例为准,登录平台地址为http://ip:8081
。在登录过程中,可以选择安装默认推荐的插件。登录过程需要等待一段时间。登录成功后,安装插件:① GitLab :用来支持 gitlab 触发 jenkins 进行构建操作
② GitLab Authentication :用来提供 gitlab 连接支持
③ Publish Over SSH : 用来提供服务器连接支持安装成功后重启 jenkins 服务。
-
在菜单 “系统管理 -> 系统配置” 页面下,找到 Publish over SSH 栏,根据提示添加一个 SSH Server。添加完成后点击 “Test Configuration” 按钮验证正确性(可连接上)。jenkins 持续集成任务的每次被触发执行就是靠这些配置连接上目标服务器。
-
在菜单 “新建任务” 下创建一个自由风格的软件项目。
-
在任务创建页面的 源码管理 tab 下,选中 git。输入我们项目的 gitlab 地址,并新建一个用于登录该项目地址的凭据。在新建凭据后选中它。
-
在任务创建页面的 构建触发器 tab 下,选中 " Build when a change is pushed to GitLab. GitLab webhook URL: xxx "。这里的 xxx 就是 gitlab 中新增 web 钩子时的链接值。可根据自己的需要点击此 tab 栏下的 高级 选项,点击 " Secret token " 输入框下的 " Generate " 按钮来生成一串密钥。此密钥用来进行 gitlab web 钩子触发 jenkins 执行集成任务时的安全验证。
-
在 构建 tab 下,选择下拉框中的 “Send files or execute commands over SSH”。在 “SSH Server” 选择框中选中我们在 步骤 3 中创建好的服务器。在 “Exec command” 文本输入框中输入要执行的命令。
-
保存。
-
登录 gitlab 项目管理平台。
-
打开要集成的项目,在 设置 -> 集成 菜单下,添加一个 Web 钩子,用来自动发送请求通知 jenkins 执行集成任务。其中,“链接(URL)” 输入框的值为 步骤 6 中的 xxx,如果在 步骤 6 中生成了一串密钥,需要填写到“安全令牌”输入框中。最后,取消“ SSL 证书验证 ”后保存 Web 钩子设置。
-
在刚才新增的 Web 钩子右侧,可以做一些集成触发测试,或者直接在我们的项目中做一些测试信息提交。稍等一下,在 jenkins 管理平台查看我们集成任务被触发执行的具体细则。
-
战斗结束,祝君好运。