设为首页 收藏本站
查看: 1226|回复: 0

[经验分享] 使用gitlab实现上线自动化

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-22 09:48:18 | 显示全部楼层 |阅读模式
头脑风暴和总结:
  • 用户: 所有的web服务,都应该使用普通用户启动。 所有的web服务都不应该监听80端口,除了负载均衡。(普通用户无法启动80端口,除非使用suid)

      useradd www  -u 2000  # 添加用户统一UID
      ssh-keygen -t rsa   # 生成认证的key,将公钥添加到分发机上

  2. 编写部署脚本需要注意的几个问题:
  • 脚本中使用多个方法,尽量使用含义明确的变量
  • 脚本要有lock 文件,防止并发造成问题
  • 脚本要有日志,出现错误时,知道执行到哪一步
  • 脚本的命令要有容错机制,防止输错命令带来灾难性后果
  • 先定义框架,再确定具体的内容



  3. 安装gitlab 并设置:
   https://www.unixhot.com/article/48
  • 基础环境准备

[iyunv@linux-node2 ~]# yum install curl policycoreutils openssh-server openssh-clients postfix[iyunv@linux-node2 ~]# systemctl start postfix
  • 安装gitlab-ce

curl -sS https://packages.gitlab.com/in ... pm.sh | sudo bash[iyunv@linux-node2 ~]# yum install -y gitlab-ce

注:由于网络问题,国内用户,建议使用清华大学的镜像源进行安装:

[iyunv@linux-node2 ~]# vim /etc/yum.repos.d/gitlab-ce.repo[gitlab-ce]name=gitlab-cebaseurl=http://mirrors.tuna.tsinghua.e ... m/el7repo_gpgcheck=0gpgcheck=0enabled=1gpgkey=https://packages.gitlab.com/gpg.key[iyunv@linux-node2 ~]# yum makecache[iyunv@linux-node2 ~]# yum install gitlab-ce
  • 配置并启动gitlab-ce

[iyunv@linux-node2 ~]# gitlab-ctl reconfigure可以使用gitlab-ctl管理gitlab,例如查看gitlab状态:
[iyunv@linux-node2 ~]# gitlab-ctl statusrun: gitlab-workhorse: (pid 12171) 231s; run: log: (pid 7817) 555srun: logrotate: (pid 12175) 230s; run: log: (pid 7832) 548srun: nginx: (pid 12181) 230s; run: log: (pid 7823) 549srun: postgresql: (pid 12186) 229s; run: log: (pid 7683) 587srun: redis: (pid 12194) 229s; run: log: (pid 7600) 592srun: sidekiq: (pid 12198) 229s; run: log: (pid 7806) 558srun: unicorn: (pid 14967) 6s; run: log: (pid 7774) 560s关闭gitlab:[iyunv@linux-node2 ~]# gitlab-ctl stop启动gitlab:[iyunv@linux-node2 ~]# gitlab-ctl start重启gitlab:[iyunv@linux-node2 ~]# gitlab-ctl restart
  • 第一次登录gitlab,需要为root用户修改密码,root用户也是gitlab的超级管理员。
  • 如果要修改仓库的默认显示路径需要修改gitlab 的配置文件:



1
2
3
vim  /etc/gitlab/gitlab.rb

external_url '  # 修改url路径名



修改之后需要重新配置gitlab:

1
gitlab-ctl reconfigure




4.本地设置SSH-key之后可以创建项目,添加具体的信息。部署脚本执行流程:
  • 先判断锁文件是否存在,如果存在则打印提示信息,退出部署。
  • 如果锁文件不存在,说明当前没有其他人执行此脚本,根据输入的命令(deploy、rollback)来执行不同的命令;
  • 如果是deploy则执行,shell_lock:创建锁文件;然后执行code_get:获取代码库中的代码,通过writelog 函数写入日志,切换到代码目录,git pull下最新的代码,然后拷贝到tmp目录;执行code_bulid函数,写入日志; 执行code_config函数,记录日志,将配置文件目录下的文件整体拷贝到tmp目录下对应的项目中,之后对项目名称目录重命名为带有时间戳和版本号的新目录; 执行code_tar函数,写入对应的日志,并将整个项目打包为tar.gz的压缩包;执行code_scp函数,写入日志,分别使用scp 将打包的压缩包拷贝到预生产和生产组的所有远程服务器上;执行pre_deploy,预生产环境的部署,写入日志,通过ssh 远程连接到预生产主机,执行解压命令,然后删除旧的软链接,创建一个指向新版本的软链接。执行pre_test函数,对部署的代码进行测试,如web直接curl一下地址; 根据pre_deploy函数和pre_test相同的原理,对生产主机依次执行group_deploy和group_test函数,解压缩,创建软链接,测试。
  • 如果是rollback,先创建锁文件,执行rollback函数,如果rollback 后面没有输入参数,则提示后退出,如果有参数list ,则列出之前旧的版本信息,如果指定的是版本信息,则调用rollback_fun函数读取需要回滚的主机列表,删除旧的软链接,创建一个新的软链接。回滚完成。

5.针对不同的项目使用不同的脚本,对不同的项目可以使用相同的脚本框架和思路。标准化规划需要在项目初期做好。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-317762-1-1.html 上篇帖子: github之fork的使用 下篇帖子: gitlab6 nginx配置和启动脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表