设为首页 收藏本站
查看: 2099|回复: 1

[经验分享] docker-compose 快速部署持续集成测试环境 Gitlab+Harbor+Jenkins pip...

[复制链接]
累计签到:595 天
连续签到:1 天
发表于 2019-3-1 23:47:43 | 显示全部楼层 |阅读模式
在我blog 写得贴过来赚点金币 学python

如果看得不是很清楚   my blog

环境测试部署主机IP:192.168.1.1Jenkins主机IP:192.168.1.2Harbor主机IP:192.168.1.3Gitlab主机IP:192.168.0.10系统信息:    系统:CentOS 7.5    内核:4.18.7-1.el7.elrepo.x86_64    Docker版本:18.09    docker-compose版本:1.23.1
有道笔记原文,为了防止复制粘贴出来的代码格式有误~~~~所有主机的Docker安装方式  可用 ansible-roles 快速部署所有主机   https://github.com/gitDream/ansible-roles_jenkins_harbor_gitlab.git[url=][/url]
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install -y docker-cemkdir /etc/docker/cat << EOF > /etc/docker/daemon.json{   "registry-mirrors": ["https://registry.docker-cn.com"],    "live-restore": true,    "default-shm-size": "128M",    "max-concurrent-downloads": 10,    "oom-score-adjust": -1000,    "debug": false}   EOFsystemctl enable dockersystemctl restart docker[url=][/url]

安装Gitlab
  • 参考这篇文章:
  • Docker方式安装:
  • 安装Harbor
  • 参考:
  • http://blog.51cto.com/bigboss/2316525
  • docker 配https registry私有仓库的重点说明
  • 生成ca 证书  给harbor 使用
  • [backcolor=rgb(255, 255, 255) !important][size=1em]
    1

    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./server.key -out ./server.crt -subj "/CN=registry.lotbrick.com"




    copydocker 客户端登入harbor 前导入自制Ca 证书位置         mkdir -p /etc/docker/certs.d/registry.lotbrick.com        #registry.lotbrick.com  创建域名目录         
    mkdir -p /etc/docker/certs.d/registry.lotbrick.com
    scp ./server.crt  /etc/docker/certs.d/registry.lotbrick.com/ca.crt
  • systemctl daemon-reloadsystemctl restart docker
    docker login registry.lotbrick.com
  • 安装Jenkins
  • [backcolor=rgb(255, 255, 255) !important][size=1em]
    1

    2

    3

    4

    5

    6

    7

    8

    yum install -y python-pip
    pip install docker-compose

    cd $HOME && mkdir jenkins && cd jenkins
    wget https://raw.githubusercontent.com/JyBigBoss/docker-compose/master/jenkins/Dockerfile
    wget https://raw.githubusercontent.com/JyBigBoss/docker-compose/master/jenkins/docker-compose.yaml

    docker-compose up -d




    Jenkins需要安装的插件
  • [backcolor=rgb(255, 255, 255) !important][size=1em]
    1

    2

    Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication
    Gitlab、Git Parameter、Git Tag Message、Pipeline、docker-build-step、Docker Pipeline




    创建git仓库
    • 在web页面创建一个test仓库,并在在仓库中新建一个index.html文件
    • [backcolor=rgb(255, 255, 255) !important][size=1em]
      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      cd $HOME
      git clone git@192.168.0.10:yfg/test.git
      cd test/
      cat << EOF > index.html
      <h1>Test 123</h1>
      EOF
      git add .
      git commit -m 'add index.html'
      git push

      #创建两个tag
      git tag v1 -m 'version:1'
      git push --tags
      git tag v2 -m 'version:2'
      git push --tags








      在Harbor上创建一个test仓库

      配置Jenkins
      • 打开Jenkins的设置页面,配置Publish over SSH插件
      • 创建一个流水线(pipeline)项目















    [url=][/url]
    node {  stage(' Git clone ') {      git branch: 'master', credentialsId: 'a4a81561-8bc0-426e-89f9-b4d4aa1925d6', url: 'git@192.168.0.10:yfg/test.git'      env.check_to_tag="$TAG"      sh '[ -n "${check_to_tag}" ] &&  git checkout ${check_to_tag} ||  { echo -e "切换至指定的tag的版本,tag:${check_to_tag} 不存在或为空,请检查输入的tag!" && exit 111; }'  }  stage("Create Dockerfile"){      sh '''cat << EOF > DockerfileFROM python:3.7.1-alpineRUN mkdir /testWORKDIR /testCOPY ./ /testEXPOSE 8000CMD ["python","-m","http.server"]EOF'''      sh 'cat Dockerfile'  }  stage("Create docker-compose.yaml "){      sh '''cat << EOF > docker-compose.yamlversion: "2.4"services:http:  image: registry.lotbrick.com/test/http:${check_to_tag}  container_name: python-http_server  ports:    - "80:8000"  restart: alwaysEOF'''      sh 'cat docker-compose.yaml'  }  stage('Build Image And Push to registry') {    //withRegistry('仓库地址','jenkins凭据ID')    docker.withRegistry('https://registry.lotbrick.com', '9ffa7ef5-38c6-49da-8936-ec596359be56'){        //build当前目录(workspace)下的Dockerfile        def BuildImage = docker.build("registry.lotbrick.com/test/http:${check_to_tag}")        //Push刚才Build出来的镜像        BuildImage.push()      }}stage('Depoly'){    //调用Publish Over SSH插件,上传docker-compose.yaml文件并且执行deploy脚本      sshPublisher(publishers: [sshPublisherDesc(configName: 'jenkins_pipeline_test_deploy', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '/bin/bash /root/deploy/deploy.sh', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/root/deploy', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'docker-compose.yaml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}[url=][/url]

    • 生成流水线脚本的方法





    • Jenkins凭据ID获取方法




    • 发布脚本:depoly.sh:放到要部署代码的主机的/root/deploy目录下
    • [backcolor=rgb(255, 255, 255) !important][size=1em]
      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      #!/bin/bash
      echo '正在更新版本......'

      cd /root/deploy

      IMAGE_NAME='registry.lotbrick.com/test/http'
      DOCKER_TAG=`awk -F ':' '/.*image/{print $NF}' docker-compose.yaml`

      echo -e "\n"
      docker-compose pull && docker-compose up -d

      if [  "$?" == 0 ];then
          echo '删除旧的image'
          OLD_IMAGE=`docker images | grep $IMAGE_NAME | awk '{print $2,$3}' | grep -v "${DOCKER_TAG}" |awk '{print $1}'`
          for i in $OLD_IMAGE;do
              docker rmi http:$i
          done
      else
         echo "更新版本失败!!!"
         exit 111
      fi





      测试发布
      • 第一次发布












      • 再来一次
      #感觉没玩够,再传个代码测试一回cd $HOMEgit clone https://github.com/HFIProgramming/mikutap.git\cp -r mikutap/* test/cd testgit add .git commit -m 'add mikutap page'git tag v3 -m 'add mikutap page'git push --tags









运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-676038-1-1.html 上篇帖子: Docker五种存储驱动原理及应用场景和性能测试对比 下篇帖子: Docke入门到进阶-Docker介绍
累计签到:5 天
连续签到:5 天
发表于 2019-3-3 16:09:47 | 显示全部楼层

66666666666666

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表