『中级篇』docker之CI/CD持续集成-CD演示(74)
2018-10-30 01:13:32
李明
  • 访问次数: 177
  • 注册日期: 2018-07-09
  • 最后登录: 2018-12-10

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

这次主要看下CICD中的CD功能。源码: https://github.com/limingios/docker/tree/master/No.11

从gitlab中flask-demo下载代码到本地。

通过git clone 克隆到本地

166c0d0741777cf3?w=1240&h=512&f=png&s=12
166c0d074183dea8?w=853&h=536&f=png&s=140

修改.gitlab-ci.yml 增加部署代码

  • 修改

stages:   - style   - test   - deploy 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-deploy:    stage: deploy    script:      - docker build -t flask-demo .      - docker run -d -p 5000:5000 flask-demo    tags:      - demo
  • 提交到自建的gitlab上 commit push

166c0d07428e3923?w=1240&h=524&f=png&s=19
166c0d07424a1117?w=1240&h=665&f=png&s=76

  • 增加了pipline

166c0d074253c279?w=1238&h=706&f=png&s=51
166c0d07ab8ed163?w=1209&h=649&f=png&s=34
166c0d07af5abe49?w=1064&h=330&f=png&s=22
166c0d07484902e0?w=1240&h=372&f=png&s=36

想想一下场景

gitlab-ci.yml是否有问题,假如有人修改代码,提交代码,重新CICD的时候

#执行这句没问题 docker build -t flask-demo . #执行这句就有问题了,之前已经有一个了之前的端口号就是5000,部署肯定报错的,解决方案,可以先将之前的remove掉,在起一个新的。可以写一些简单的脚本。 docker run -d -p 5000:5000 flask-demo
  • 先将刚才创建的remove掉

 sudo docker ps sudo docker rm -f 容器名称

166c0d07b5517f23?w=1240&h=72&f=png&s=161

  • 修改yml

.gitlab-ci.yml 然后commit push到服务器上

stages:   - style   - test   - deploy 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-deploy:    stage: deploy    script:      - docker build -t flask-demo .      - if [ $( docker ps -aq --filter name=web) ]; then docker rm -f web;fi      - docker run -d -p 5000:5000 --name web flask-demo    tags:      - test1

166c0d07ca0a765e?w=1240&h=840&f=png&s=15
166c0d07b026318d?w=1155&h=610&f=png&s=37

PS:基本的流程就是开发人员提交代码,自动构建,然后可以在ci服务器上访问,整个流程基本就是这样。

166b140b7f118904?w=1080&h=541&f=png&s=45