『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)

上次主要说了在githubCI的服务器,并且也演示了github的runner执行CICD,这次通过真实的python项目来演示下CICD。项目通过gitlab和gitlabCI进行CICD。
源码地址:https://github.com/limingios/docker-cloud-flask-demo
源码:https://github.com/limingios/docker/tree/master/No.11

随便找一个开源的python的在github项目。添加到gitlab上。

copy到gitlab上

  • new project


    『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第1张图片
  • Git repository URL

https://github.com/limingios/docker-cloud-flask-demo

『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第2张图片
  • 点击create project
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第3张图片
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第4张图片

思考

上次注册了ci的runner,其实这个runner就是一个shell,通过命令的形式在ci服务器上运行该运行的程序。有可能ci服务器没有装python2 或者python3,我们可以在ci服务器里面装python2或者python3,但是如果想一下,这个ci服务器有很多人在用的话,python有很多环境,python有很多不同的依赖,如果环境全部都装在这个shell里面是不是很混乱,不光是python项目,如果有java项目啊,js的项目都装一下包肯定会很乱很乱,怎么去解决这个问题,看来只能通过docker了。

runner管理新的flask-demo

『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第5张图片

python2.7的环境

 sudo gitlab-ci-multi-runner register
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第6张图片

python3.4的环境

 sudo gitlab-ci-multi-runner register
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第7张图片
sudo gitlab-ci-multi-runner verify
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第8张图片

新建github-ci 文件

『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第9张图片
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第10张图片
stages:
  - style
  - test

pep8:
  stage: style
  script:
    - pip install tox
    - tox -e pep8
  tags:
    - python2.7
    
unittest-py27:
   stage: test
   script:
     - pip install tox
     - tox -e py27
   tags:
     - python2.7

unittest-py34:
   stage: test
   script:
     - pip install tox
     - tox -e py34
   tags:
     - python3/4

『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第11张图片

本地docker没有提前拉取镜像,下载python2.7 和 python3.4的比较慢,我直接增加了加速器

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b81aace9.m.daocloud.io
sudo systemctl restart docker 
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第12张图片

结果还是报错了,开始分析:

Cloning repository...
Cloning into '/builds/root/flask-demo'...
fatal: unable to access 'http://gitlab-ci-token:[email protected]/root/flask-demo.git/': Couldn't resolve host 'gitlab.example.com'
ERROR: Job failed: exit code 1
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第13张图片

Runner启动的docker容器里无法访问到gitlab.example.com这个地址(能访问到才怪)。这一般是由于我们的测试环境没有使用域名导致的,gitlab论坛里也不少人讨论这个问题,如果你是在部署正式的gitlab环境,那你自然会有一个域名来使用。不过我这里只是搭建测试环境,所以我使用了一种投机的方法:

修改Runner的/etc/gitlab-runner/config.toml文件,在其中的[runner.docker]下增加:

sudo vi /etc/gitlab-runner/config.toml

『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第14张图片
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第15张图片

成功了 重新Retry

『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第16张图片
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第17张图片
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第18张图片
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第19张图片
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)_第20张图片

PS:这次主要给大家简单的介绍下CI,还没设计到CD。下次吧!


往期精彩
  1. docker导学(一)
  2. 容器的技术概述(二)
  3. docker的魅力初体验-5分钟安装wordpress不走弯路(三)
  4. docker官网介绍(四)
  5. 如何在mac上安装docker(五)
  6. 如何在window上安装docker(六)
  7. 如何在mac上通过vagrant安装虚拟机(七)
  8. 如何在window上通过vagrant安装虚拟机(八)
  9. docker-Machine的本地使用(九)
  10. docker-Machine的本地使用(十)
  11. 在linux/mac下通过Docker-Machine在阿里云上的使用(11)
  12. docker架构和底层技术(12)
  13. docker Image概述(13)
  14. 手动建立一个base Image(14)
  15. 什么是Container(15)
  16. 构建自己的Docker镜像(16)
  17. Dockerfile详解(17)
  18. 镜像的发布(18)
  19. Dockerfile实战(19)
  20. 容器的操作(20)
  21. Dockerfile实战CMD和ENTRTYPOINT的配合(21)
  22. 容器的资源限制(22)
  23. docker网络(23)
  24. docker学习必会网络基础(24)
  25. Linux网络命名空间(25)
  26. Docker Bridge详解(26)
  27. 容器之间的Link(27)
  28. 容器的端口映射(28)
  29. 容器网络之host和none(29)
  30. 多容器复杂应用的部署(30)
  31. overlay网络和etcd实现多机的容器通信(31)
  32. docker的数据持久化存储和数据共享(32)
  33. windows下vagrant 通过SecureCRT连接centos7(33)
  34. 数据持久化之Data Volume(34)
  35. 数据持久化之bind Mounting(35)
  36. docker 使用bind Mounting实战(36)
  37. docker容器安装wordpress(37)
  38. docker Compose到底是什么(38)
  39. Docker Compose的安装和基本使用(39)
  40. Docker 水平扩展和负载均衡(40)
  41. Docker compose 部署一个复杂的应用(41)
  42. 容器编排Docker Swarm介绍(42)
  43. docker-swarm创建一个多节点集群(43)
  44. play with docker 的使用(44)
  45. docker-swarm中的Service创建维护和水平扩展(45)
  46. 在docker-swarm集群里通过serivce部署wordpress(46)
  47. 集群服务间通信之RoutingMesh(47)
  48. RoutingMesh之Ingress负载均衡(48)
  49. Docker-Stack部署wordpress(49)
  50. Docker-Stack部署投票应用(50)
  51. Docker-Secret管理和使用(51)
  52. Docker service更新(52)
  53. Docker的收费模式(53)
  54. Docker-cloud介绍(54)
  55. Docker Cloud自动构建 Docker image(55)
  56. Docker企业版的在线免费体验(56)
  57. docker企业版本地安装之UCP(57)
  58. docker体验阿里云的容器服务(58)
  59. 阿里云安装Docker企业版UCP和DTR(59)
  60. Kubenetes简介(60)
  61. Minikube快速搭建K8S单节点环境(61)
  62. K8S最小调度单位Pod(62)
  63. K8S横向扩展功能ReplicaSet和ReplicationController(63)
  64. k8s重要的Deployment(64)
  65. Vagrant在本地搭建多节点K8S集群(65)
  66. k8s基础网络Cluster Network(66)
  67. k8s的Service简介和演示(67)
  68. k8s的NodePort类型Service以及Label的简单实用(68)
  69. CI/CD持续集成/持续部署(69)
  70. docker之CI/CD持续集成-gitlab安装(70)
  71. docker之CI/CD持续集成—GitLab CI服务器(71)

你可能感兴趣的:(『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72))