centos7下使用gitlab+shell实现CI/CD持续集成持续部署

                  centos7下使用gitlab+shell实现CI/CD持续集成持续部署

流程解释:第一步ci客户端向gitlab服务器注册自己,建立通信,第二步,当项目分支代码收到变化时,自动触发yml脚本,yml脚本根据注册时带入的runner通知客户端deploy脚本更新代码,同时执行编译和部署过程,deploy脚本写代码集成相关操作,具体见下面的讲解

CI部分

第一步:准备三台虚拟机S,C1,C2,我这里的三台机子都是全新的,除了系统文件没有其他文件

S:内存是4G用于装gitlab服务器 IP:192.168.95.131

C1:内存是1G用于装gitlab-CI客户端1 IP:192.168.95.132

C2:内存是1G用于装gitlab-CI客户端2 IP:192.168.95.133

第二步:在S上安装gitlab服务器

安装依赖

sudo yum install curl policycoreutils openssh-server openssh-clients

sudo systemctl enable sshd

sudo systemctl start sshd

sudo yum install postfix

sudo systemctl enable postfix

sudo systemctl start postfix

sudo systemctl start firewalld

sudo firewall-cmd --permanent --add-service=http

sudo systemctl reload firewalld

windows下 下载安装包,下载地址是:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm

并且上传至linux目录下 如/data/web-download

cd  /data/web-download

安装python依赖 -y的意思是所有问答都使用Y

yum install -y policycoreutils-python

安装 这里安装需要花一点时间,耐心等待一下

rpm -i gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm

出现了这个图案,代表安装完成

安装 vim

yum install -y vim

更换端口(这里写ip地址或者域名都可以,但是不能写localhost)

vim  /etc/gitlab/gitlab.rb

启动

gitlab-ctl reconfigure (这里可能需要一点时间)

重启:

gitlab-ctl restart(这里也会可能需要一点时间,不是必须项)

直接ip或者域名 +端口访问,如果访问不了,关闭防火墙或者防火墙开放端口

查看防火墙状态

systemctl status firewalld

关闭防火墙

systemctl stop firewalld

再次访问 即可,第一次登陆需要重新设置密码

新建组,新建项目

到这里服务器已经创建好了,项目也创建好了

第二步:在C1上安装 gitlab-ci客户端

安装 vim

yum install -y vim

安装runner

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash

如果出现尝试其他镜像提示 可以ctrl+c 终止掉进程,然后更改镜像地址

vim /etc/yum.repos.d/runner_gitlab-ci-multi-runner.repo

将一下内容替换runner_gitlab-ci-multi-runner.repo原有的内容

[gitlab-ci-multi-runner]

name=gitlab-ci-multi-runner

baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ci-multi-runner/yum/el7

repo_gpgcheck=0

gpgcheck=0

enabled=1

gpgkey=https://packages.gitlab.com/gpg.key

执行 yum install -y gitlab-ci-multi-runner 即可

注册runner

gitlab-ci-multi-runner register

其中 url是gitlab 服务器的地址

token是上面新建的项目token

配置好后 刷新一下项目的runners,可以找到我们刚刚注册的runner,并且状态是绿色的

如果不是绿色的 重启runner即可

查看runner状态

gitlab-ci-multi-runner verify

重启所有runner:
gitlab-ci-multi-runner run

重启单个runner:
gitlab-ci-multi-runner run-single --url http://IP:port/ --token runnerToken --executor shell

编写 deploy文件

在gitlab-runner的~/.local/bin/目录下新建deploy文件

su gitlab-runner

mkdir ~/.local/bin -p

cd ~/.local/bin

vim deploy

复制以下内容到deploy文件

#!/bin/bash

if [ $# -ne 3 ]

then

echo "arguments error!"

exit 1

else

deploy_path="/data/wwwroot/$3/$1/$2"

if [ ! -d "$deploy_path" ]

then

git clone "[email protected]:${1}/${2}.git" $deploy_path

cd $deploy_path

git checkout $3

else

cd $deploy_path

git pull

fi

fi

以上脚本的意思是如果参数不是三个,打印参数错误

如果目录没建立 这git clone 并且git checkout

如果存在 则git clone

添加脚本执行权限

chmod +x ~/.local/bin/deploy

切换到root身份 编辑/etc/profile文件 最末尾添加加入 path路径

PATH="$HOME/.local/bin:$PATH"

给gitlab-runner用户创建文件权限

chown -hR gitlab-runner:gitlab-runner /data/wwwroot

配置ssh登录

su gitlab-runner

mkdir  ~/.ssh

cd   ~/.ssh

ssh-keygen

然后一直按enter

查看id_rsa.pub文件 并复制 token

创建一个runner-1用户,并将该用户添加到项目成员中(赋予该成员maintainer角色)

在gitlab上,登录runner-1

将刚刚复制的token设置到runner-1用户的ssh-keys上

创建文件 .gitlab-ci.yml 和test.txt ,前者用于CI解析,后者用于触发CI

yml 内容如下

stages:

- deploy

deploy1:

stage: deploy

tags:

- test-runner-1

only:

- master

script:

- bash deploy java test-project master

修改test.txt文件,查看CI 功能是否触发

此时任务可能会报以下错误

gitlab-runner身份下 执行以下命令

/etc/profile

deploy java test-project master

第一次访问这个服务器的时候,有个命令行提示是要把sign添加进已知服务器列表,然后手工输入个yes

同样的,在C2上做C1基本一致的的操作(除了基本配置一致,修改一下yml),这里不再一步一步的演示,至于单机版,就是讲CI客户端和gitlab服务端装在同一服务器上,操作基本一致,这里也不再赘述

修改yml 文件(这里是指定两个runner并行部署)  其他均一致

自行查看c1,cd服务器文件是否都成功修改?如果都修改了,代表CI功能实现

CD部分

c1,c2服务器上安装好jdk,maven,tomcat,mysql,具体可见文章:https://www.cnblogs.com/tjqBlog/p/9573459.html

将一个常规的基于maven的spring web项目上传到gitlab服务器上,(我这里采用spring boot+mybatis的项目),

修改yam文件如下,

增加编译和部署生命周期

设置编译生命周期目标

设置部署生命周期目标

提交修改,查看CI/CD运行轨迹,所有目标均为绿色代表CI/CD功能成功实现,

这里的每种周期运行详情都可以点击进入查看,以下分别截图 deploy,build,ops,三个周期的详情

原文地址:https://www.cnblogs.com/tjqBlog/p/9556552.html

时间: 2024-10-12 02:53:56

centos7下使用gitlab+shell实现CI/CD持续集成持续部署的相关文章

rancher+gitlab+appveyor 实现 CI/CD 流水线(汇总)

rancher+gitlab+appveyor 实现 CI/CD 流水线 本文主要是做一些汇总,将近期接触并弄好的一些工具整合起来,弄一套流水线,减轻一定工作压力 工具介绍 所有的组件都是使用 docker 跑的,所以一款好用的 docker 的 ui 管理工具很重要,那就是rancher.这里只是用来管理一些工具,有点屈才了 项目代码托管使用 gitlab,其内置了 CI/CD,成套使用,非常方便 appveyor 也是一个 CI/CD 解决方案,基于asp.net core开发.其内置 nu

CI/CD持续集成/持续部署 敏捷开发

敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它们的具体名称.理念.过程.术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用. 1,CI/CD持续集

CI / CD /CD 持续集成 持续交付 持续部署

CI / CD /CD 持续集成 持续交付 持续部署 CI CD 是啥?干了啥? CI continuous integration 持续集成 CD continuous delivery 持续交付 CD continuous deploy 持续部署 他们干了点啥 代码自动building 测试环境和项目的自动部署 生产环境和项目的自动部署 恩恩 都是这些 和 管理工作 ** 因为是自动化的 可以在你合并代码后几分钟就开始测试 ** 流程: 用户提交代码到仓库 ->合并代码 -> 自动编译代码

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成] 标签(空格分隔): Jenkins 一.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkins构建完成后,开发构建项目需要一项一项点击,比较麻烦.所以出现pipeline名词. 代码质量检查完毕之后,我们需要将代码部署到测试环境上去,进行自动化测试 新建部署代码项目 点击新建 这里只需要写一下描述 执行Shell脚本 温馨提示:执行命令主要涉及的是权限问题,我们要搞明

Centos7下安装Gitlab

安装依赖 yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python systemctl start postfix systemctl status postfix.service Yum安装 使用这种方式安装的gitlab永远都是最新版的,也会比较慢 curl https://packages.gitlab.com/install/repositories/gitlab/gi

Centos7下ELK+Redis日志分析平台的集群环境部署记录

之前的文档介绍了ELK的架构基础知识,下面简单记录下ELK结合Redis搭建日志分析平台的集群环境部署过程,大致的架构如下: + Elasticsearch是一个分布式搜索分析引擎,稳定.可水平扩展.易于管理是它的主要设计初衷 + Logstash是一个灵活的数据收集.加工和传输的管道软件 + Kibana是一个数据可视化平台,可以通过将数据转化为酷炫而强大的图像而实现与数据的交互将三者的收集加工,存储分析和可视转化整合在一起就形成了ELK. 基本流程:1)Logstash-Shipper获取日

Gitlab Pipeline+Supervisor 实战Python项目CI/CD

一.背景 谈到到CI/CD,我们不禁会想到Gitlab + Jenkins + Docker等一些列优秀的工具,Jenkins以其丰富的插件及灵活配置已经非常好的满足我们日常工作中的CI/CD需求,通常的做法为Gitlab配置webhook,开发人员通过push代码或merge request可以触发执行一些列的测试部署上线工作,打通了开发到部署到整个生命周期,完成持续集成持续构建.在Gitlab 也是具有一套CI/CD到框架,通过简单的注册Gitlab Runner,根据业务测试部署需求撰写

基于OpenStack+Docker设计与实现CI/CD

基于Docker容器技术的OpenStack研发.测试.运维及其相关的CI/CD.DevOps等活动.思想是相通的,读者可以取其可用部分用于自己的业务需求中. IaaS云和容器云不是可有可无.相互竞争的关系,而是相互弥补彼此缺陷的关系.容器改变了应用部署和管理的模式,众所周知,IaaS云通过提供基本的计算.存储和网络来运行虚拟机(VM),在IaaS(基础设施即服务)之上,还有PaaS(平台即服务).SaaS(软件即服务).CaaS(容器即服务).OpenStack作为一个IaaS云的基础设施管理

如何用 Gitlab 一键实现 CI 持续集成?

背景 在目前快节奏生活已经成为社会风潮的大背景下,越来越多的互联网公司为了其应用产品能更快的掌控风向脉搏,抢占市场红利,需要更快速的应用产品开发上线,在市场的反馈下,不断的迭代新功能.在此需求下,持续集成,持续部署,持续交付被越来愈多公司所推崇,DevOPS文化的兴起,一方面是实践打破运维与研发的堡垒之墙,另一方面也是敏捷开发过程中的必要产物. 提高软件开发效能,快速迭代.快速试错,以及根据自己开发团队特点,使用怎样的技术手段,才能是软件开发效能最高,更为快速敏捷,以及怎样才能满足产品能在最短周