Gitlab+Gitlab-CI+Docker实现持续集成(CI)与持续部署(CD)

写在前面

记录一下,一个自动化开发部署项目的构建过程与简单使用,实现真正的DevOps

gitlab Server安装(>=4g内存)

步骤一:安装依赖

yum -y install git gcc glibc-static telnet
yum -y install curl policycoreutils-python openssh-server
systemctl enable sshd
systemctl start sshd
yum -y install postfix
systemctl enable postfix
systemctl start postfix

步骤二:设置镜像源

设置清华镜像源
vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

步骤三:yum正式安装

yum -y install gitlab-ce

步骤四:修改配置文件
vim /etc/gitlab/gitlab.rb
重新加载配置文件进行启动
gitlab-ctl reconfigure
gitlab-ctl restart
gitlab-ctl status

然后使用,这台主机的IP就可以直接访问到界面
例:192.168.2.228
一开始是修改root的密码
然后,登录进去,可以选择新建一个组并在该组下面新建一个项目
,在windows上进行git clone ,可以选择克隆http模式的,这时会跳出用户名和密码的输入框,这个用户名密码就是gitlab登录使用的账户密码

Gitlab -CI(Runner) 服务器的安装

【这台服务器中安装好docker】

docker安装参考
https://blog.csdn.net/liuge36/article/details/79779291

步骤一:下载配置yum repository信息:

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

步骤二:安装gitlab-ci-multi-runner

yum install -y gitlab-ci-multi-runner

步骤三:安装完毕,就可以进行状态定位查看:

gitlab-ci-multi-runner status
/etc/hosts
192.168.1.113 gitlab.csylh.cn

步骤四=======补充:由于我们的CI服务器,即Gitlab-runner 需要执行docker的命令,因此需要将gitlab-runner这个用户进行授权等操作

保证gitlab-CI服务器上面有安装Docker服务
操作:将gitlab-runner用户添加到root或者docker组中去
usermod -aG root gitlab-runner
重启docker服务
service docker restart
systemctl restart docker.service
重启runner的service
gitlab-ci-multi-runner restart

这样一来,就可以在runner中去使用docker的命令了

步骤五:注册

[把runner注册到gitlab的服务器中去],让gitlab服务器知道我们有这个runner
命令:gitlab-ci-multi-runner register
依次
输入gitlab服务器的地址: http://gitlab.csylh.cn
ps:这里的url地址需要注意:假如不和gitlab服务器在一台上,需要将url的映射地址添加在/etc/hosts

输入token:某一个具体项目中》details>settings》ci/cd>runners:找到token码
输入runner的描述:默认或自定义
输入tags: 比如:test,demo
回车
回车
这个时候,就是会看见succeeded
接下来,需要进行选择runner执行操作的方式
比如:shell

命令:gitlab-ci-multi-runner list 查看
或:回到页面,查看刚才的token位置 ,会多一个绿色的runner

如何去使用刚为HelloWorld项目注册的runner呢??
在HelloWorld》CI/CD》pipelines

通过.gitlab-ci.yml的文件去定义CI的pipelines
接下来,为HelloWorld项目增加这个文件:

# .gitlab-ci.yml定义阶段
stages:
	- build
	- test
	- deploy
job1:
	stage: test
	tags:
		- demo
	script:
		- echo "I am job1"
		- echo "I am test stage"
job2:
	stage: build
	tags:
		- demo
	script:
		- echo "I am job2"
		- echo "I am build stage"
#部署阶段
job3:
	stage: deploy
	tags:
		- demo
	script:
		- echo "I am job3"
		- echo "I am deploy stage"

案例二:基于真实项目的CI操作

https://github.com/imooc-course/docker-cloud-flask-demo
这是在gitlab server 上面的操作
步骤一:new project > import project > repo by url

步骤二:这个时候项目就在自己搭建gitlab服务器上了

这是在gitlab-ci 上面的操作
可以把项目git clone的方式拷贝到gitlab-ci服务器上面来

克隆之后,进入到目录
步骤三:使用DockerFile文件进行构建镜像
docker build -t flask-demo .
docker build -t [镜像名] dockerfile的位置
生成了一个叫做flask-demo的image

步骤四:根据生成的镜像启动一个容器
docker run -d -p 5000:5000 flask-demo
docker run -d -p 5000:5000 [镜像名]
打开浏览器,就可以访问网站了

步骤五:
我们需要持续集成CI这一步骤,来完成单元测试和检测代码风格
我们在本地gitlab-ci服务器上面使用tox进行单元测试和代码风格的校验
tox应该是pyhton的一个第三方校验的工具

ps:使用docker的一个好处就是,不会让你的物理机环境变得脏乱

假如在gitlab-ci服务器上面使用docekr容器进行构建项目的话,
首要问题就是,你注册的runner的gitlab服务器的URL,
容器中是不能找到的

DNS服务的配置

【新机器】docker-mertion创建docker-host
启动一个dnsmasq ,其实就是一个DNS服务

Gitlab CI DNS Server
配置一个DNS的服务器,能够让其他的容器解析到gitlab的URL地址
步骤一:
将gitlab-ci 服务器上面的192.168.1.112 gitlab.csylh.cn 映射关系移除

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值