gitlab ci 自动化部署,gitlab cicd 自动发布

  gitlab ci 自动化部署,gitlab cicd 自动发布

  1.基本概念1.1 CI/CD CI,持续集成,就是持续集成。即在代码构建过程中,不断进行代码的集成、构建和自动化测试;有了CI工具,可以在代码提交过程中,通过单元测试尽早发现引入的错误;

  CD,持续部署,就是持续投放。代码搭建完成后,新版本可以轻松上线部署,有利于快速迭代和产品交付。

  1.2 GitLab CI/CD GitLab CI/CD是一套基于GitLab的CI/CD系统,允许开发者通过gitlab-ci.yml配置项目中的CI/CD流程,提交后系统可以自动执行任务,完成CI/CD操作。而且,它的配置非常简单。GitLab CI/CD由独立的runner程序完成,runner是用go语言编写的,所以可以很好的跨平台。通常情况下,runner可以部署到除gitlab服务器以外的任何服务器上,从而避免对gitlab服务器造成影响。

  2.gitlab CI/CD与其他CI/CD工具的区别和优势与其他CI/CD工具相比,gitlab CI/CD配置简单,易于与gitlab集成。与jenkins相比,不需要配置webhook回调地址,也不需要同时在jenkins中新建这个项目的编译配置。只要在项目中配置gitlab-ci.yml文件,这个项目就可以编译了。并且通过gitlab上的界面可以看到gitlab CI/CD的流程。

  3.有三个默认阶段:构建整个CI执行流程的链接:构建、测试和部署。

  首先执行构建。如果发生错误,该配置项将立即失败;

  测试构建在成功执行后执行。如果发生错误,该配置项将立即失败;

  测试成功执行后,将执行部署。如果出现错误,该配置项将失败。

  如果作业未指定阶段,则默认为测试阶段。

  3.示例项目3.1项目细节教程是一个简单的flask应用程序。

  bp=Blueprint(tutorial ,__name__)@bp.route(/,methods=[GET])def hello():返回 Hello World!Docker-compose.yml和dockerfile是Docker的配置文件,用来部署上面的flask应用。

  Dockerfile:

  来自python:3 . 6 . 5运行mkdir-p/var/www/git lab-ci-example work dir/var/www/git lab-ci-example add。/var/www/git lab-ci-example/RUN pip install-U pip pip install-r requirement . txt-I http://mirrors.aliyun.com/pypi/simple/-trusted-host mirrors.aliyun.com docker-compose . yml:

  版本:“3”服务:应用程序:内部版本:container_name: tutorial_app命令:gunicorn -c gunicorn.py app:app端口:- 50001:5000 卷:-。/var/www/git lab-CI-example network _ mode:bridge 3.2 ci/CD配置在项目的根目录下创建一个. gitlab-ci.yml文件来配置CI/CD进程。

  在开始的时候。gitlab-ci.yml,定义每个任务执行前需要的所有阶段、环境变量和准备工作,然后定义整个过程包含的所有任务。

  下面这个例子的主要流程是测试部署。

  图像:“instrumentisto/rsync-ssh”变量:PIP_CACHE_DIR: ~/.缓存/PIP/缓存:路径:-$ { PIP _ CACHE _ DIR }阶段:-构建-测试-部署构建_作业:阶段:构建脚本:-echo build something -echo build _ job done test _ job:stage:test image: python:3。6 .5 before _ script:-PIP-V-PIP install-r要求。http://mirrors.aliyun.com/pypi/simple/-trusted-host mirrors.aliyun.com脚本:#运行测试命令或脚本-python测试/test _ view。py-echo test something -echo test _ job done deploy _ job:stage:deploy when:manual before _ script:-target _ address=服务器地址-ssh-keyscan $ {目标地址} ~/。ssh/known_hosts - chmod 644 ~/.ssh/已知主机脚本:#嘘连接远程服务器执行相应命令# 更新代码、重启码头工人等操作-project _ name=git lab-ci-example-stage _ SRV=games dk @ $ { target _ address }-work _ dir=/home/apps-rsync-av-e ssh-exclude= * ."饭桶"。/$ { stage _ SRV }:$ { work _ dir }/$ { project _ name }-ssh $ { stage _ SRV } docker-compose-f $ { work _ dir }/$ { project _ name }/docker-compose。yml up-d-build -ssh $ { stage _ SRV } docker-compose-f $ { work _ dir }/$ { project _ name }/docker-compose。yml PS -echo deploy something -echo deploy _ job done only:-master 3.3自动测试在测试任务中,准备工作是把需要的环境和库安装上,在之前_脚本中完成。

  完成该准备工作后就可以在脚本在执行测试命令或执行测试脚本等。

  3.4 自动部署在部署任务中,准备工作是把需要操作的服务器的公钥指纹收集到已知主机中。

  接着,把最新代码同步到服务器对应目录,然后通过嘘在服务器上执行相应的部署操作(启动或重启码头工人服务)。

  运行成功后访问相应地址的50001端口即可看见"你好世界!"。

  4.关键字参数

  参考或引用链接https://docs.gitlab.com/ee/README.html

  https://blog.csdn.net/Choerodon/article/details/97751754

  https://segmentfault.com/a/1190000011890710

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: