使用gitlab和gitlab-runner实现项目多服务器自动同步

使用gitlab和gitlab-runner实现项目多服务器自动同步

本人创建了4台ubuntu(16.04.3 LTS)虚拟机,其中一台单独作为gitlab服务器,其余的作为server服务器

一. 首先部署一台gitlab服务器, 以ubuntu系统为例(其他系统可参考此链接

1. 安装并配置必要的依赖关系
如果你想使用 Postfix 发送邮件,请在安装过程中根据提示选择 ‘Internet Site’。 你也可以用 Sendmail 或者 配置一个自定义的 SMTP 服务 并 把它作为一个 SMTP 服务器。
sudo apt-get install -y curl openssh-server ca-certificates
sudo apt-get install -y postfix
2.添加 GitLab 镜像源并安装
curl -sS http://packages.gitlab.com.cn/install/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install gitlab-ce
如果没有外网 可以先下载对应的安装包然后再(.deb是ubuntu的安装包格式)
dpkg -i gitlab-ce-XXX.deb
3.配置并启动 GitLab
sudo gitlab-ctl reconfigure
4.通过浏览器访问上一步配置的域名
第一次访问 GitLab,系统会重定向 url 到重置密码的页面,你需要输入初始化管理员账号的密码。 设置完成后,系统会重定向到登录界面,你就可以使用刚才输入的密码登录系统了。
系统默认的管理员账号为 root, 登录系统后,你可以修改管理员账号为自己喜欢的账号。
可以在 /var/opt/gitlab/nginx/conf中的gitlab-http.conf的配置指定的域名给gitlab服务器
在 /etc/gitlab/gitlab.rb文件中修改gitlab的域名(此处的修改为git@www.xxx.com的地址 建议和gitlab-http.conf中的server 一致)
external_url 'http://www.xxx.com'
可使用
gitlab-ctl stop|start|restart #管理gitlab服务器 
至此gitlab服务器已搭建完毕

二. 搭建gitlab-runner(以ubuntu 16.04.3 LTS)为例

因gitlab占用内存过高,外加本人电脑配置只有8G内存,所以就将gitlab-runner安装在了其中一台服务器中
1.添加GitLab的官方存储库:
curl -L
https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
2.安装gitlab-runner(默认最新版),也可安装指定版本
sudo apt-get install gitlab-runner #默认最新版
sudo apt-get install gitlab-runner=10.0.0 #安装指定版本
3.安装完成后就该注册gitlab-runner(此处可以理解为拿到营业执照)
1)开启注册
sudo gitlab-runner register
2)输入gitlab服务器的URL,获取gitlab服务器地址和令牌(token),使用root账号登录的你gitlab服务器,然后访问 http://xxx.xxx.com/admin/runners,其中xxx.xxx.com是你的gitlab服务器地址,进入页面后你将会看到

这里写图片描述

第一个红色的部分就是 url
第二个红色的部分就是token(令牌)
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com #此处填写的第一条红色的部分
3)输入您获得的注册Runner的令牌:
Please enter the gitlab-ci token for this runner
xxx #此处XXX填入第二条获取的token
4)输入跑步者的描述,你可以稍后在GitLab的UI中进行更改:
Please enter the gitlab-ci description for this runner
[hostame] my-runner #随意 可在gitlab服务器UI中进行修改
5)输入与Runner关联的标签,稍后可以在GitLab的用户界面中进行更改:
Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag #随意 可在gitlab服务器UI中进行修改
6)选择Runner是否应该选择没有标签的作业,可以稍后在GitLab的UI中进行更改(默认为false):
Whether to run untagged jobs [true/false]:
[false]: true
7)选择是否将Runner锁定到当前项目,稍后可以在GitLab的UI中进行更改。Runner特定时有用(默认为true):
Whether to lock Runner to current project [true/false]:
[true]: true
8)输入Runner执行者:
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
shell #本人选择的是shell
至此 gitlab-runner配置完成

三.配置服务器之间的ssh登录

1.本人三台服务器的ip分别是:
192.168.56.101,
192.168.56.102,
192.168.56.104
gitlab服务器的ip是:
192.168.56.103
gitlab-runner安装的服务器为102(后面用102来代替对应的服务器)
因为gitlab-runner部署的服务器是102所以要建立 gitlab-runner用户与101,102和104之间的root ssh免密码登录
为什么是gitlab-runner用户呢 因为执行同步代码的脚本是gitlab-runner用户
1.先在102服务器切换gitlab-runner用户
su gitlab-runner
2.使用ssh-keygen -t rsa生成ssh的公钥和私钥
ssh-keygen -t rsa #回车之后3次回车即可
你就会在 /home/gitlab-runner/.ssh目录下发现2个文件
id_rsa.pub 和id_rsa
3.然后再切换到root用户,重复上述操作,这样 root用户的ssh的公钥和私钥也生成了,接下来就是将gitlab-runner用户的公钥写入root用户的authorized_keys文件中
cat /home/gitlab-runner/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys
4.重启ssh service ssh restart
5.先切换到gitlab-runner用户 su gitlab-runnner
6.使用ssh登录root用户 ssh root@192.168.56.102
你会发现你已经切换到了root用户了
7.101和104的服务器的root的ssh同理,只需要将102服务器的中/home/gitlab-runner/.ssh/id_rsa.pub的内容分别写入 101和104/root/.ssh/authorized_keys中即可
重启101和104服务器的ssh服务service ssh restart
然后就可以使用102的gitlab用户
ssh root@192.168.56.104
ssh root@192.168.56.101
注意 第一次连接会提示yes/no, 输入yes即可

四.创建项目,并且创建一个.gitlab-ci.yml文件

例如
stages:
  - build_product

build_product:
  stage: build_product
  only:
      - master
  script:
    - /www/auto.sh
其中的 auto.sh是shell脚本,用来ssh登录服务器然后实现项目代码同步
示例代码如下
#!/bin/bash
ssh root@192.168.56.102 << ssh102
cd /www/haochi
git pull origin master
ssh102

#101
ssh root@192.168.56.101 << ssh101
cd /www/haochi
git pull origin master;
ssh101

#104
ssh root@192.168.56.104 << ssh104
cd /www/haochi
git pull origin master;
ssh104
至此 一套完整的gitlab+gitlab-runner自动化项目项目部署就完成啦
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
gitlab-runner是一个开源的持续集成工具,它与GitLab配合使用,用于自动化构建、测试和部署项目GitLab Runner 9.5是GitLab Runner的一个版本,它是一种轻量级的工具,可在单独的计算机或Docker容器中运行,用于执行GitLab CI/CD(持续集成/持续交付)流水线中的作业(job)。 GitLab Runner 9.5带来了一些新功能和改进。例如,它支持了新的配置选项,可以更灵活地配置GitLab Runner的行为。它还改进了并行构建的性能,提高了作业执行的效率。 此外,GitLab Runner 9.5还引入了一种新的特性:CSDN,即Continuous Security & Delivery Network。CSDN使得在运行CI/CD流水线期间进行持续安全性测试变得更加容易。通过集成CSDN,GitLab Runner能够在每个作业中自动运行安全性扫描程序,并根据发现的漏洞或问题提供反馈。 CSDN能够集成多个开源和商业安全性工具,如SonarQube、Nexus IQ、Qualys等。它可以自动化代码审查、漏洞扫描、依赖库分析等安全性任务,并生成详细的报告。这让开发团队能够及早发现和解决安全性问题,提高应用程序的安全性和质量。 总之,GitLab Runner 9.5提供了更多的配置选项和性能改进,并引入了CSDN特性以支持持续安全性测试。通过使用GitLab Runner 9.5和CSDN,开发团队可以更轻松地实现自动化的持续集成和持续交付,并提高应用程序的安全性和质量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

裸奔的小凉瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值