博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gitlab Pipeline+Supervisor Python项目CI/CD实战 (二)
阅读量:642 次
发布时间:2019-03-14

本文共 4022 字,大约阅读时间需要 13 分钟。

三.实战部署

3.1 服务器列表

名称 IP 软件 备注
gitlab-server 10.57.61.138 gitlab-server Gitlab 服务器
gitlab-common-runner 10.57.61.11 gitlab-runner 公用runner服务器
Des-server 172.21.0.10 miniconda/supervisor 项目部署服务器

3.2 架构图

图片描述

根据上图,我们可以清晰当看清楚两种部署模式,多个项目公用一个gitlab-runner,和将gitlab-runner部署到目标服务器上。由于存在多个项目,方便后期多项目管理,本次我们利用到为公用gitlab-runner。

3.3 前期准备

  • Gitlab-runner服务区的gitlab-runner用户可以免密钥登录des-server服务器
  • Gitlab服务器安装配置
  • 在目标服务器安装配置conda虚拟环境
  • supervisor部署配置
[program:go2cloud_platform]command=/data/miniconda3/envs/go2cloud_platform/bin/python /project/go2cloud_platform/runserver start alluser=rootstdout_logfile=/var/log/go2cloud_platform.logautostart=trueautorestart=truestartsecs=60stopasgroup=trueikillasgroup=truestartretries=1redirect_stderr=true

3.4 配置部署

3.4.1 Gitalb Runner配置

  • Gitlab runner安装注册
    • gitlab-runner安装
# 配置yum源curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash# 安装runnersudo yum install -y gitlab-ci-multi-runner
  • 开启项目Pipelines

有的项目为开启pipeline,需要手动开启

settings->General->Visibility, project features, permissions->Pipelines
可以配置所有人或此项目到Members可以配置管理Pipeline

  • 记录注册信息

settings->CI/CD>Runners

图片描述
记录注册url和token
图片描述

  • 在gitlabrunner服务器进行注册
# gitlab runner注册到平台sudo gitlab-ci-multi-runner register

图片描述

此处我们选择的为单机shell执行,如果为docker可以选择docker,注册完成后可以返回gitlab web管理界面查看已经注册的runner。
图片描述

也可以对runner进行配置。

  • 配置runner

可以勾选Active,runner为公用对时候,暂停Runner不接受新的jobs

如果没有制定tag,可以运行在未指定tag的作业。
图片描述

3.4.2  编写

stages:  - clean_env            # 清理环境及杀死进程  - deploy_src           # 部署源码  - install_dependency   # 更新依赖    - restart_server       # 重启服务  - check_server         # 检测服务  variables:  BASE_DIR: "/go2cloud_platform/"job clean_env_job:  stage: clean_env  script:    - ssh -o stricthostkeychecking=no root@172.16.100.2 pkill supervisord || true    - ssh -o stricthostkeychecking=no root@172.16.100.2 killall /data/miniconda3/bin/python || true    - ssh -o stricthostkeychecking=no root@172.16.100.2 killall /data/miniconda3/envs/go2cloud_platform/bin/python || true    - ssh -o stricthostkeychecking=no root@172.16.100.2 rm -rf /project${BASE_DIR}*  tags:    - 51common-runner  only:    - dev  when: alwaysjob deploy_src_job:  stage: deploy_src  script:    - scp -r /home/gitlab-runner/builds/QFafrHEq/0/devops/${BASE_DIR}* root@172.16.100.2:/project${BASE_DIR}    - ssh -o stricthostkeychecking=no root@172.16.100.2 cp /project/config/config.yml /project${BASE_DIR}  tags:    - 51common-runner  only:    - dev  when: alwaysjob install_dependency_job:  stage: install_dependency  script:    - ssh -o stricthostkeychecking=no root@172.16.100.2 /data/miniconda3/envs/go2cloud_platform/bin/python -m pip install -r /project${BASE_DIR}requirements/requirements.txt  tags:    - 51common-runner  only:    - dev  when: manualjob restart_server_job:  stage: restart_server  script:    - ssh -o stricthostkeychecking=no root@172.16.100.2 sleep 7    - ssh -o stricthostkeychecking=no root@172.16.100.2 supervisord -c /etc/supervisord.conf    - ssh -o stricthostkeychecking=no root@172.16.100.2 ps -ef |grep supervisord |grep -v grep  tags:    - 51common-runner  only:    - dev  when: alwaysjob check_server_job:  stage: check_server  script:    - ssh -o stricthostkeychecking=no root@172.16.100.2 sleep 7    - ssh -o stricthostkeychecking=no root@172.16.100.2 ps -ef|grep "8088"  tags:    - 51common-runner  only:    - dev  when: always

在此我们部署服务分为五个步骤

  • 清理环境:可以配置为全部删除目标源代码或这rsync/scp增量覆盖到目标服务器,如果增量部署,需要考虑迁移数据库到重复执行。
  • 部署源码:将gitlab-runner服务器pull下来到代码scp到目标服务器到目标部署目录,
  • 安装依赖:此处有可能后期更新requirements,配置为manual手动去执行更新,如果有更新,手动去安装。
  • 重启服务:此时启动为supervisord服务,启动后可以自动启动配置到项目服务。
  • 检测进程:由于此项目为平台为写单元测试,部署上去存在可能代码有异常进程为能正常启动,检测进程是否正常启动可方便为们知道部署是否成功。

项目中到配置指标和变量可以参考:

  • 查看pipeline
    图片描述
    图片描述
  • 查看具体jobs信息
    图片描述
    如果那个jobs执行失败可以进行手动retry。
  • 查看CI/CD charts

图片描述

charts直观的展示来构建到成功及失败图表。

  • 查看构建邮件
    图片描述
  • 在des-server查看项目

图片描述

  • 通过web界面查看

图片描述

至此一个完整到Gitlab runner就配置完成。

四.总结反思

  • gitlab-runner配置简单,与gitlab集成友好,无需单独搭建构建平台,告警有gitalb发送。当新建一个项目的时候,不需要配置webhook回调地址,将部署继承在代码的 中易于维护管理。
  • gitlab-ci/cd没有代码审计,需要单独配置,随着业务增加,团队扩充需要单独构建代码审计平台。
  • 如果小型Devops团队建议利用Gitlab CI/CD方便管理维护,如果大型gitlab ci/cd无法满足可以结合jenkins来实现CI/CD。

五.参考资料

转载地址:http://lmzlz.baihongyu.com/

你可能感兴趣的文章