【linux】gitlab + jenkins 实现持续集成

本文详细介绍了如何在Ubuntu服务器上配置jenkins和gitlab,实现持续集成。通过jenkins的GitLab插件和Publish Over SSH插件,结合gitlab的webhook,当gitlab中有代码变更时,自动触发jenkins进行构建和部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

项目开发过程中,会在服务器上不断地更新项目开发版本。因项目开发技术栈的不同,版本更新有时会是几行简单的命令,有时会是复杂耗时的部署步骤。我们可以用 jenkins(持续集成工具)来完成这些重复性的操作。本文以 jenkins 搭配 gitlab 的方式来记录一下使用过程。后续的持续集成流程如下:

push
web 钩子
开发人员
gitlab
jenkins
执行我们定义好的任务

软件版本

  • 服务器操作系统:Ubuntu 16.04.7 LTS
  • jenkins:2.332.1
  • 软件版本控制软件:GitLab Community Edition 12.3.5

使用过程

  1. 在服务器上下载并启动 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
    
  2. 登录 jenkins 管理平台。默认的登录用户名为 admin,默认的登录密码保存在文件 ~/.jenkins/secrets/initialAdminPassword 中。如果以步骤 1 提供脚本中的启动实例为准,登录平台地址为 http://ip:8081。在登录过程中,可以选择安装默认推荐的插件。登录过程需要等待一段时间。登录成功后,安装插件:

    ① GitLab :用来支持 gitlab 触发 jenkins 进行构建操作
    ② GitLab Authentication :用来提供 gitlab 连接支持
    ③ Publish Over SSH : 用来提供服务器连接支持

    安装成功后重启 jenkins 服务。

  3. 在菜单 “系统管理 -> 系统配置” 页面下,找到 Publish over SSH 栏,根据提示添加一个 SSH Server。添加完成后点击 “Test Configuration” 按钮验证正确性(可连接上)。jenkins 持续集成任务的每次被触发执行就是靠这些配置连接上目标服务器。

  4. 在菜单 “新建任务” 下创建一个自由风格的软件项目。

  5. 在任务创建页面的 源码管理 tab 下,选中 git。输入我们项目的 gitlab 地址,并新建一个用于登录该项目地址的凭据。在新建凭据后选中它。

    在这里插入图片描述

  6. 在任务创建页面的 构建触发器 tab 下,选中 " Build when a change is pushed to GitLab. GitLab webhook URL: xxx "。这里的 xxx 就是 gitlab 中新增 web 钩子时的链接值。可根据自己的需要点击此 tab 栏下的 高级 选项,点击 " Secret token " 输入框下的 " Generate " 按钮来生成一串密钥。此密钥用来进行 gitlab web 钩子触发 jenkins 执行集成任务时的安全验证。

  7. 构建 tab 下,选择下拉框中的 “Send files or execute commands over SSH”。在 “SSH Server” 选择框中选中我们在 步骤 3 中创建好的服务器。在 “Exec command” 文本输入框中输入要执行的命令。

  8. 保存。

  9. 登录 gitlab 项目管理平台。

  10. 打开要集成的项目,在 设置 -> 集成 菜单下,添加一个 Web 钩子,用来自动发送请求通知 jenkins 执行集成任务。其中,“链接(URL)” 输入框的值为 步骤 6 中的 xxx,如果在 步骤 6 中生成了一串密钥,需要填写到“安全令牌”输入框中。最后,取消“ SSL 证书验证 ”后保存 Web 钩子设置。

    在这里插入图片描述

  11. 在刚才新增的 Web 钩子右侧,可以做一些集成触发测试,或者直接在我们的项目中做一些测试信息提交。稍等一下,在 jenkins 管理平台查看我们集成任务被触发执行的具体细则。

  12. 战斗结束,祝君好运。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值