Py学习  »  docker

『中级篇』docker之CI/CD持续集成—GitLab CI服务器(71)

IT人故事会 • 5 年前 • 372 次点击  

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

如何搭建一个gitlab ci服务器,首先解释下为什么选择了gitlab ci没有选择jeakins
1.个人原因,jeakins 网上到处都是资料,怼gitlab ci更加熟悉。
2.gitlab和gitlab之前集成非常好的,这是不用质疑的。

  1. 介绍下gitlab ci,不弱于jeakins,很多方面比jeakins对gitlab集成更强大。
    源码:https://github.com/limingios/docker/tree/master/No.11

创建虚拟机

  • vagrant文件的配置
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.require_version ">= 1.6.0"

boxes = [
    {
        :name => "gitlab-ci",
        :mem => "4096",
        :cpu => "2"
    }
]

Vagrant.configure(2) do |config|

  config.vm.box = "centos/7"
  boxes.each do |opts|
    config.vm.define opts[:name] do |config|
      config.vm.hostname = opts[:name]
      config.vm.provider "vmware_fusion" do |v|
        v.vmx["memsize"] = opts[:mem]
        v.vmx["numvcpus"] = opts[:cpu]
      end
      config.vm.provider "virtualbox" do |v|
        v.customize ["modifyvm", :id, "--memory", opts[:mem]]
        v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
      end
      config.vm.network :private_network, type: "dhcp"
    end
  end
  config.vm.provision "shell", privileged: true, path: "./setup.sh"
end

  • setup.sh的配置
#/bin/sh

sudo yum install -y yum upgrade
sudo yum install -y net-tools
sudo yum install -y curl policycoreutils openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install -y postfix
sudo systemctl  enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld

sudo curl -sSL https://get.docker.com/ | sh

执行命令创建

#源码No.11的gitlab-ci目录
vagrant up

更改安装源

新建 gitlab-ci-multi-runner.repo

sudo touch /etc/yum.repos.d/gitlab-ci-multi-runner.repo
sudo vi /etc/yum.repos.d/gitlab-ci-multi-runner.repo

将以下内容写入文件

[gitlab-ci-multi-runner]
name=gitlab-ci-multi-runner
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ci-multi-runner/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

执行

sudo yum makecache
sudo yum install gitlab-ci-multi-runner

查询运行状态

 sudo gitlab-ci-multi-runner status

设置docker权限
为了能让gitlab-runner能正确的执行docker的命令,需要把gitlab-runner添加到docker group里,然后重启docker 和 gitlab-runner

sudo usermod -aG docker gitlab-runner
sudo service docker restart
sudo gitlab-ci-multi-runner restart 

gitlab-ci注册

  • 输入Gitlab CI地址
http://172.28.128.3/
  • 输入项目CI token

登录gitlab,选择项目,Setting,CICD,选择Runners。

i_qDxLL_yQTzMuSR1-6J
  • 输入 Runner 描述
#自己起个名字方便区别
test1
  • 输入 Runner 标签,可以多个,用逗号隔开
#自己起个标签方便区别
test1
  • 是否不需要每次tag后才打包(不,每次都要tag才会自动打包)。
#直接回车
  • 是否runner锁定在一个工程下(不)。
#直接回车
  • 输入 Runner 执行的语言
shell

gitlab-ci如何使用

  • 根目录添加.gitlab-ci.yml
stages:
  - test
  - build
  - deploy
  
job1:
  stage: test
  tags:
    - test1
  script:
    - echo "个人网站:idig8.com"
    - echo "个人公众号:编程坑太多"
    - echo "--------job1----------"
job2:
  stage: build
  tags:
    - test1
  script:
    - echo "个人网站:idig8.com"
    - echo "个人公众号:编程坑太多"
    - echo "--------job2----------"
job3:
  stage: deploy
  tags:
    - test1
  script:
    - echo "个人网站:idig8.com"
    - echo "个人公众号:编程坑太多"
    - echo "--------job3----------"
  • 查看运行结果

CICD-Pipelines

查看失败原因

#原来是域名的问题,开始修改。
Running with gitlab-ci-multi-runner 9.5.1 (96b34cc)  on gitlab-ci (4d12d67f)
Using Shell executor...Running on gitlab-ci...
Cloning repository...Cloning into '/home/gitlab-runner/builds/4d12d67f/0/root/test1'...
fatal: unable to access 'http://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.example.com/root/test1.git/': 
Could not resolve host: gitlab.example.com; Unknown errorERROR: Job failed: exit status 1
  • 进入gitlab-ci主机

修改hosts文件里面添加gitlab.example.com对应的ip。

sudo vi /etc/hosts 
# 添加 172.28.128.3 gitlab.example.com

重新ci

  • job1,job2,job3的结果

passed 就是已经结束了,运行成功了!必须是顺序执行,如果job1成功才执行job2,然后job3。

PS:整个这个功能是否给你一个很大的想象空间,任何的软件的项目,可以通过ci-Pipelines方式,来定义自己的Pipelines,在测试,部署。很大很的发挥空间。都可以通过自定yml文件来实现。


往期精彩
  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)

今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/0H2k7xPQe0
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/24634
 
372 次点击