🙊
关于作者
  • 个人简历
  • 联系作者
  • 运维日常记录
    • RAID 磁盘阵列
    • MBR 与 GPT 分区
    • Linux 命令行判断GPT和MBR分区
    • CentoS 7 系统 扩容根分区
  • Linux运维学习笔记
    • 计算机网络基础知识
    • Linux 系统启动过程
    • Linux 命令基本格式
    • Linux 文件删除原理
    • Linux 目录结构说明
    • Linux 查看命令帮助信息
    • Linux Yum 命令
    • Linux Apt 命令
  • Linux 运维管理
    • Linux 硬件管理
    • Linux 软件管理
    • Linux 磁盘管理
    • Linux 系统管理
    • Linux 网络管理
    • Linux 用户和组管理
    • Linux 文件与目录管理
    • Linux 文件压缩与解压缩管理
    • Linux SSL证书自动更新管理
  • 运维环境搭建
    • CentOS 7 安装与优化
    • CentOS 安装高版本Node.js
    • CentOS 升级安装Python2.7.X
    • CentOS 安装 Python3.8.X
    • CentOS 安装 PHP7.4.X
    • CentOS 安装 Mysql 8.0
    • CentOS 安装 Zabbix 5.0
    • Windows Server 部署 IIS
    • Cronsun 任务管理器部署
    • Teltport 堡垒机部署
    • Jump Server 堡垒机搭建及使用
    • CI & CD 持续集成部署
    • ELK6.5.0+Filebeat 日志系统部署
    • Lustre 分布式并行文件系统部署
  • 系统安全加固
    • Linux 操作系统加固
    • Windows 操作系统安全加固
    • Password 安全加固
    • OpenSSL 安全加固
    • NFS 服务安全加固
    • Rsync 服务安全加固
    • IIS 服务安全加固
    • PHP 语言环境安全加固
    • Apache 服务安全加固
    • Nginx 服务安全加固
    • Tomcat 服务安全加固
    • MySQL 服务安全加固
    • PostgreSQL 服务安全加固
    • Redis 服务安全加固
    • MongoDB 服务安全加固
    • 暴力破解攻击和防御
  • 云原生运维教程
    • Docker 理论
    • Docker 基本架构
    • Docker 基本概念
    • Docker 基本使用
      • 容器
      • 镜像
      • 仓库
    • Docker 存储
    • Docker 网络
    • Docker 安装
  • Linux 系统故障排查
    • Linux 系统重置密码方法
    • Linux 系统误操作修改目录权限为 777 修复方法
  • Windows 系统故障排查
    • Windows 和 Windows Server 中启用/禁用 SMBv1、SMBv2 和 SMBv3
    • Windows10建立映射网络驱动器报错,无法挂载共享文件系统,解决办法
  • 运维工具使用
    • 常用 Git 命令简介及使用
    • 常用 SVN 命令简介及使用
    • 常用 Vi / Vim 文本编辑工具简介及使用
    • 国内常用加速源使用及配置
    • 软碟通制作U启动和再生龙恢复Linux系统及备份
    • 常用JetBrains系列IDE快捷键
  • 中间件教程学习
    • Nginx 极简教程
    • Nginx 安装
    • Nginx 配置
    • Nginx 问题集
    • Mysql 教程
    • Mysql 运维
    • Mysql 原理
    • Redis 教程
    • Redis 持久化
    • Redis 复制
    • Redis 哨兵
    • Redis 集群
    • Redis 运维
    • PostgreSQL 教程
    • H2 教程
    • SqLite 教程
    • 数据库中间件 flyway
  • Nginx 入门教程
  • MySQL 入门教程
  • Nosql 数据库
  • 常用工具快捷键
    • Windows10常用快捷键大全
  • Group 1
由 GitBook 提供支持
在本页
  • CI / CD 的优点是什么?
  • 特征
  • 一、Jenkins简介
  • 二、GitLab简介
  • 主机配置
  • 三、GitLab环境部署
  • 安装依赖包。
  • 设置SSH开机自启动并启动SSH服务。
  • 安装Postfix来发送通知邮件。
  • 设置Postfix开机自启动。
  • 启动Postfix服务。
  • 四、添加GitLab软件包仓库。
  • 安装GitLab。
  • 添加公钥
  • 五、Jenkins环境部署
  • 系统要求
  • 软件配置:
  • 安装JDK
  • 安装tomcat
  • 六、下载Jenkins
  • 插件安装:
  • 安装完成出现如下页面:
  • 七、配置Jenkins
  • 进来系统设置如下图,然后鼠标往下滑:
  • 部署密钥:
  • 构建触发器
  • 八、配置Gitlab,当有代码提交时,触发Jenkins的部署操作
  • 测试提交代码是否会部署到远程主机
  • 九、查看部署好的web服务器
  • 访问web测试页面
  • 十、总结
  • 小坑:
  • 解决方法:

这有帮助吗?

  1. 运维环境搭建

CI & CD 持续集成部署

上一页Jump Server 堡垒机搭建及使用下一页ELK6.5.0+Filebeat 日志系统部署

最后更新于3年前

这有帮助吗?

博客作者:联系请,搬运不易,希望请作者喝咖啡,可以点击联系

CI / CD 的优点是什么?

  • 集成: GitLab CI / CD是GitLab的一部分,支持从计划到部署(甚至更多)的单个对话

  • 开源: CI / CD是开源GitLab社区版和专有GitLab企业版的一部分

  • 易于学习: 请参阅GitLab的 指南

  • 无缝: 是单个GitLab应用程序的一部分,具有出色的用户体验

  • 可扩展: 测试可以在单独的计算机上分布式运行,您可以根据需要添加任意数量的计算机

  • 更快的结果: 每个构建可以拆分为多个作业,这些作业可以在多台计算机上并行运行

  • 针对交付进行了优化: 多个阶段,手动部署门, 和

特征

  • 多平台: 您可以在Unix,Windows,macOS和任何其他支持Go的平台上执行构建。

  • 多语言: 构建脚本是命令行驱动的,并且可以与Java,PHP,Ruby,C和任何其他语言一起使用。

  • 稳定: 您的构建在与GitLab不同的机器上运行。

  • 并行构建: GitLab CI / CD在多台机器上拆分构建,以实现快速执行。

  • 实时日志记录: 合并请求中的链接将您带到动态更新的当前构建日志。

一、Jenkins简介

Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

二、GitLab简介

主机配置

三、GitLab环境部署

安装依赖包。

sudo yum install -y curl policycoreutils-python openssh-server

设置SSH开机自启动并启动SSH服务。

sudo systemctl enable --now sshd

安装Postfix来发送通知邮件。

sudo yum install postfix

设置Postfix开机自启动。

sudo systemctl enable postfix

启动Postfix服务。

输入命令vim /etc/postfix/main.cf打开main.cf文件并找到下图内容:

vim /etc/postfix/main.cf

将这行代码改为inet_interfaces = all,然后按Esc键,然后输入:wq并回车以保存并关闭main.cf文件。

输入命令sudo systemctl start postfix启动Postfix服务。

sudo systemctl start postfix

四、添加GitLab软件包仓库。

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

安装GitLab。

sudo EXTERNAL_URL="GitLab服务器的公网IP地址" yum install -y gitlab-ce

这个是我gitlab公网ip

安装完成会出现如下图片:

说明已经自动启动getlab服务,如没有出现以上情况则说明硬件配置太低或输入systemctl restart gitlab-runsvdir.service 重启gitlab服务

systemctl restart gitlab-runsvdir.service 

其他操作命令:

sudo gitlab-ctl status      #查看服务的状态
sudo gitlab-ctl start       #启动
sudo gitlab-ctl stop        #关闭
sudo gitlab-ctl restart     #重启
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb     #gitlab配置文件

如果修改了配置文件,需要执行 gitlab-ctl reconfigure 进行更新配置(只要修改了该文件,必须执行该命令才能生效)

gitlab-ctl reconfigure

执行 gitlab-ctl restart 重启服务,我这里不做修改

gitlab-ctl restart

服务启动成功后即可通过公网IP去访问,如果修改了端口,IP后面就要加上端口去访问

使用浏览器访问GitLab服务器的公网IP地址,显示如下页面,说明环境搭建成功。

管理员默认为root用户,初始密码不能低于8位

把要克隆或要上传代码这台服务器的公钥cat /root/.ssh/id_rsa.pub打开公钥文件复制到gitlab服务器指定位置上

cat /root/.ssh/id_rsa.pub

添加公钥

#克隆代码仓库,然后测试是否能够上传代码到gitlab

yum -y install git                         #安装git
git clone git@139.9.91.82:root/test.git    #克隆远程仓库
cd test/
echo 11111 > 1.txt
git add .
git commit -m "add 1.txt"
git push

五、Jenkins环境部署

系统要求

最低推荐配置:

256MB可用内存

1GB+可用内存

50 GB+ 可用磁盘空间

软件配置:

Java 8—​无论是Java运行时环境(JRE)还是Java开发工具包(JDK)都可以。

安装JDK

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

安装tomcat

[root@jenkins ~]# tar -xf apache-tomcat-9.0.6.tar.gz
[root@jenkins ~]# mv apache-tomcat-9.0.6 /usr/local/tomcat

六、下载Jenkins

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

两种方式使用其中一种就可以下载了

[root@jenkins ~]# ls
apache-tomcat-9.0.6.tar.gz baidu.html index.html jenkins.war
[root@jenkins ~]# cd /usr/local/tomcat/         #切换到tomcat目录
[root@jenkins tomcat]# pwd
/usr/local/tomcat
[root@jenkins tomcat]# rm -rf webapps/*         #删除tomcat根目录下其他默认文件
[root@jenkins tomcat]# ls webapps/
[root@jenkins tomcat]# mv /root/jenkins.war /usr/local/tomcat/webapps/ #移动下载好的jenkins.war包到tomcat网页根目录下
[root@jenkins tomcat]# ls
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
[root@jenkins tomcat]# ./bin/startup.sh         #启动tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@jenkins tomcat]# ls webapps/              #tomcat服务启动会自动解jenkins.war包
jenkins jenkins.war

插件安装:

注意:

打×的插件是由于网络传输导致的安装失败,后面再重新安装即可。

插件安装可以自定义,可以用社区推荐安装,工作需要的插件一定要安装上

安装完成出现如下页面:

如果插件没安装完会出现如下页面,点纠正安装相关插件就好了:

必须需要添加的6个插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter

七、配置Jenkins

进来系统设置如下图,然后鼠标往下滑:

部署密钥:

#添加主机:系统管理 - 系统设置 找到Publish over SSH

开始添加要部署代码的主机,注意一定是要能够ssh登陆的用户。

这里要注意的是要先把jenkins服务器的公钥传送给要部署代码的那台机然后再点测试

#添加完主机之后,新建一个项目,开始配置构建操作

添加完后,选择root或git用户进行认证没有任何提示表示成功

构建触发器

这里一定要勾上

八、配置Gitlab,当有代码提交时,触发Jenkins的部署操作

测试提交代码是否会部署到远程主机

#再次克隆仓库

git clone git@139.9.91.82:root/test.git
cd test/
echo '测试Jenkins' > index.html
git add .
git commit -m 'add index.html'
git push

#提交之后去Jenkins页面看看

九、查看部署好的web服务器

访问web测试页面

访问成功

十、总结

小坑:

错误提示:

#很多朋友使用最新版本的gitlab做自动部署时,在增加web钩子那一步,

#点击test push events时会报错:Url is blocked: Requests to the local network are not allowed

解决方法:

#这是因为新版的gitlab为了安全默认禁止了本地局域网地址调用web hook

#我们在设置里允许就行,具体步骤如下:

灵活的管道: 您可以在每个阶段定义多个并行作业,并且可以 。

版本管道: 一个 包含您的测试,整个过程的步骤,使每个人都能贡献更改,并确保每个分支获得所需的管道。

自动缩放: 您可以 ,以确保立即处理您的构建并将成本降至最低。

构建工件: 您可以将二进制文件和其他上载到 GitLab并浏览和下载它们。

本地测试 有 ,您可以 。

Docker支持: 您可以使用自定义Docker映像, 作为测试的一部分启动 , ,甚至可以在Kubernetes上运行。

容器注册表: 用于存储,共享和使用容器映像。

受保护的变量: 在部署期间使用每个环境保护的安全地存储和使用机密信息

环境: 定义多个环境,包括临时 ,请参阅每个环境的部署历史记录。

是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。

是一个完整的DevOps平台,作为单个应用程序提供,从根本上改变了开发,安全和运营团队的协作方式。GitLab帮助团队将软件交付时间从数周缩短至数分钟,降低开发成本,并降低应用程序漏洞的风险,同时提高开发人员的生产率。

1GB可用磁盘空间(作为一个容器运行jenkins的话推荐10GB)为小团队推荐的硬件配置:

访问jenkins官网

然后访问 见到如下图片就说明安装成功:

触发其他构建
.gitlab-ci.yml文件
自动旋转虚拟机
构建工件
多个执行程序
在本地复制测试
服务
构建新的Docker映像
内置的容器注册表,
受
变量
Review Apps
Jenkins
GitLab
Docker
下载Jenkins
http://139.159.189.191:8080/jenkins
点击
博客作者
快速入门
环境
变量
JenkinsJenkins
JenkinsJenkins
Iterate faster, innovate togetherGitLab
Logo
Logo
Logo