IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 我的docker随笔37:使用gitlab和jenkins实现CICD -> 正文阅读

[系统运维]我的docker随笔37:使用gitlab和jenkins实现CICD

本文涉及一种利用容器部署 gitlab 和 jenkins 服务实现持续集成(CICD)的方法,其目的是为了在实际工作中使用代码托管及自动化操作。

一、引言

因工作需要,需部署 gitlab 和 jenkins 服务器进行 CICD 测试,换个高大上的名称,叫“组织革新”。本文记录个人的实践,但不涉及部署的具体步骤。

二、技术小结

  • 不同工程,配置不同,本文使用 C++ 工程为例进行实验。
  • 在配置 jenkins 时,建议经常使用页面下方的“应用”,随时保存设置好的参数,以防不测。

三、gitlab和jenkins联调

3.1 概述

实现CICD分几个阶段:使用 gitlab 托管代码,使用 jenkins 进行编译、打包以及发布。两个服务器各有项目对应,同时要进行必要的配置。不同项目,配置方式不尽相同。本节的配置原则上按顺序进行,因此会到 gitlab 和 jenkins 之间来回切换,故先行说明。

3.2 前置条件

3.2.1 允许本地网络请求

使用 root 用户登录 gitlab 服务器,在管理员配置选项选择**网络(Setting)页面,在外发请求(Outbound requests)**中,选择“允许Webhook和服务对本地网络的请求(Allow requests to the local network from web hooks and services)”,保存。如图1所示。

进行该设置的目的是因为本文的 gitlab 和 jenkins 服务均在同一物理服务器上使用 docker 部署。如果不设置,则在 gitlab 中设置 webhooks 时会提示Url is blocked: Requests to the local network are not allowed

在这里插入图片描述

说明:如果jenkins和gitlab不在同一服务器,则不需要进行此设置。

3.2.2 关闭 CSFR

进入 jenkins 容器,找到/usr/local/bin/jenkins.sh文件,找到 exec java 行,在-Duser.home="$JENKINS_HOME"后添加-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true,完整的一行语句如下:

exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@

说明:在笔者定制的 jenkins 镜像中已经进行该修改了。

进行该设置,是因为高版本 Jenkins 无法在界面关闭跨站请求伪造保护(CSRF),因为在 gitlab 进行 webhooks 时会认证失败。提示:

 Hook executed successfully but returned HTTP 403

关闭之后,再次进行 CSFR 页面,提示:

This configuration is unavailable because the System property hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION is set to true.

说明修改成功。

对于物理机部署的 jenkins,则在 /etc/sysconfig/jenkins 文件中找到 JENKINS_JAVA_OPTIONS, 设置如下:

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"

3.3 准备 gitlab 仓库

本文使用仓库地址为 http://10.8.18.168:8888/latelee/ci_test

3.4 配置 jenkins 项目

3.4.1 新建项目

在 jenkins 首页左侧,点击“新建任务”,输入项目项目,选择第一项“自由风格软件项目”。
在这里插入图片描述

点击“确定”进入配置页面。

3.4.2 指定git仓库

源码管理选项页面中,输入 gitlab 仓库地址,注意,URL 地址后须添加.git后缀。
在这里插入图片描述

点击“添加”->Jenkins,添加凭据,默认类型为用户名和密码。
在这里插入图片描述

添加后,选择添加的凭据,红色错误提示消失。
在这里插入图片描述

3.4.3 设置触发条件

构建触发器页面进行触发器的选择。此处有多种方式可选,如定时构建和指定 gitlab 方式。
在这里插入图片描述

勾选“Build when a change is pushed to GitLab.”。注意,该项后面的 URL 地址需要记住,在 gitlab 中将使用。点击“高级”,在“Secret token”处点击“Generate”,生成 token,该 token 亦需要记住。
在这里插入图片描述

进行此设置目的是,当提交代码到 gitlab 仓库时,会自动触发 jenkins 执行 一次构建。触发条件在对应 gitlab 仓库中进行设置。如果不需要自动触发,则可以不触发条件。

3.4.4 指定构建步骤

构建页面,点击“增加构建步骤”,选择“执行shell”,输入构建的命令。
在这里插入图片描述

3.4.5 指定构建后的步骤

构建后操作页面,点击“增加构建后操作步骤”。选择“send build artifacts over SSH”。选择服务器、源目录、目标目录及执行的命令。注意,在本文实践前已经设置好服务器及目标,故只指定源文件和执行命令即可。
在这里插入图片描述

在笔者实践中发现,在“构建环境”、“构建”、“构建后操作”三个页面均可以选择将文件通过 SSH 发送服务器。

3.5 设置 gitlab 的 webhooks

在 gitlab 项目http://10.8.18.168:8888/latelee/ci_test页面, 选择“Settings”->“Webhooks”,输入上小节生成的 URL 和 token。
在这里插入图片描述

点击页面下方“Add webhook”,添加。
在这里插入图片描述

注:同一个gitlab仓库,可支持多个 webhook。

点击“Test”,选择“Push events”,进行测试验证。为保证触发成功,强烈建议在此处先行测试
在这里插入图片描述

触发类型有很多种,根据实际情况选择。

3.4 验证

提交代码到 gitlab 仓库(此处从略)。稍等片刻,在 jenkins 工程的看到进行了触发。
在这里插入图片描述

输出日志如下:
在这里插入图片描述

编译、运行、执行ssh远程服务均成功。在远程服务器的/tmp目录出现a.outlog.txt

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 12:21:05  更:2021-09-01 12:22:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 9:54:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计