天天看点

使用gitlab实现上线自动化

头脑风暴和总结:

用户: 所有的web服务,都应该使用普通用户启动。 所有的web服务都不应该监听80端口,除了负载均衡。(普通用户无法启动80端口,除非使用suid)

      useradd www  -u 2000  # 添加用户统一UID

      ssh-keygen -t rsa   # 生成认证的key,将公钥添加到分发机上

  2. 编写部署脚本需要注意的几个问题:

脚本中使用多个方法,尽量使用含义明确的变量

脚本要有lock 文件,防止并发造成问题

脚本要有日志,出现错误时,知道执行到哪一步

脚本的命令要有容错机制,防止输错命令带来灾难性后果

先定义框架,再确定具体的内容

  3. 安装gitlab 并设置:

基础环境准备

安装gitlab-ce

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

配置并启动gitlab-ce

可以使用gitlab-ctl管理gitlab,例如查看gitlab状态:

第一次登录gitlab,需要为root用户修改密码,root用户也是gitlab的超级管理员。

如果要修改仓库的默认显示路径需要修改gitlab 的配置文件:

1

2

3

<code>vim  </code><code>/etc/gitlab/gitlab</code><code>.rb</code>

<code>external_url '  </code><code># 修改url路径名</code>

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

<code> </code><code>gitlab-ctl reconfigure</code>

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.针对不同的项目使用不同的脚本,对不同的项目可以使用相同的脚本框架和思路。标准化规划需要在项目初期做好。

 本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1884795

下一篇: 持续集成