docker-compose 快速部署持续集成测试环境 Gitlab+Harbor+Jenkins pipeline 实现 tag run docker Images

摘要:
环境测试部署主机IP:192.168.1.1Jenkins主机IP:192.168.1.2Harbor主机IP:192.168.1.3Gitlab主机IP:192.168.0.10系统信息:系统:CentOS7.5内核:4.18.7-1.el7.elrepo.x86_64Docker版本:18.09docker-compose版本:1.23.1有道笔记原文,为了防止复制粘贴出来的代码格式有误~~~

环境

测试部署主机IP:192.168.1.1
Jenkins主机IP:192.168.1.2
Harbor主机IP:192.168.1.3
Gitlab主机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

wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce

mkdir /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}   
EOF
systemctl enable docker
systemctl restart docker

安装Gitlab

  • 参考这篇文章:

    http://blog.51cto.com/bigboss/2129284

  • Docker方式安装:

    https://github.com/JyBigBoss/docker-compose/blob/master/gitlab/docker-compose.yaml

  • 安装Harbor

  • 参考:

  • http://blog.51cto.com/bigboss/2316525
  • docker 配https registry私有仓库的重点说明
  • 生成ca 证书 给harbor 使用
  • 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-reload
    systemctl restart docker
    docker login
    registry.lotbrick.com
  • 安装Jenkins
  • 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需要安装的插件

  • 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文件

    • 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
      

      Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
      Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
      Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器


      在Harbor上创建一个test仓库

      Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器


      配置Jenkins

        • 打开Jenkins的设置页面,配置Publish over SSH插件

          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器

        • 创建一个流水线(pipeline)项目

          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
          Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器

    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 > Dockerfile
    FROM python:3.7.1-alpine
    RUN mkdir /test
    WORKDIR /test
    COPY ./ /test
    EXPOSE 8000CMD ["python","-m","http.server"]
    EOF'''
          sh 'cat Dockerfile'}
      stage("Create docker-compose.yaml "){
          sh '''cat << EOF > docker-compose.yaml
    version: "2.4"services:
    http:
      image: registry.lotbrick.com/test/http:${check_to_tag}
      container_name: python-http_server
      ports:
        - "80:8000"restart: always
    EOF'''
    
          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)])
    
    }
    }
      • 生成流水线脚本的方法
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器

      • Jenkins凭据ID获取方法
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器

      • 发布脚本:depoly.sh:放到要部署代码的主机的/root/deploy目录下
      •   #!/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 "
        "
          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
        

        测试发布

        • 第一次发布

        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器

        • 再来一次

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

        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器
        Gitlab+Harbor+Jenkins pipeline实现利用tag部署docker容器

免责声明:文章转载自《docker-compose 快速部署持续集成测试环境 Gitlab+Harbor+Jenkins pipeline 实现 tag run docker Images》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android : 移植curl-7.61.1 及 openssl-1.1.0i系统综合实践 第2次实践作业 ——学习Dockerfile下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

如何指定GCC的默认头文件路径

如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:)原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631===============================================================================在交叉编译的时候我们需要...

Java代码自动部署

Java代码自动部署 【 ①Java代码自动部署-总结简介】        代码部署是每一个软件开发项目组都会有的一个流程,也是从开发环节到发布功能必不可少的环节。对于Java开发者来说,Java代码的发布部署也是经常需要做的一件事,特别是互联网公司。代码的发布上线关系到保证生产环境能够正常启动及功能是否能正常运行,所以代码部署在整个项目开发周期还是占据很...

【CI/CD】Jenkins查询及自定义工作空间(自由风格项目、maven项目)

本文记录下如何查询及自定义工作空间。  一、Jenkins默认工作空间  按照下图可找到Jenkins的默认工作目录。  该目录下为Jenkins的默认工作空间。 二、Jenkins任务自定义工作空间  进入某个具体任务中,按照下图可找到Jenkins的自定义工作目录。  1、自由风格项目   2 、maven风格项目 maven风格的项目修改项目...

layui时间组件的应用

  layui为我们封装了一些很方便的组件,四件组件就是其中之一   这里拿一个直接显示在页面上的日历组件来说明      上面的翻页按钮对应月份和年份的翻页      HTML部分,只需要写一个div来接取组件 <div id="test"></div>   然后引入js   这里要对应你自己的layui.js地址 <sc...

android中的资源访问

一.android中的资源是在代码中使用的外部文件。图片,音频,动画和字符串等叫做android中的资源文件。 二.Android工程 资源类型布局表    与src源文件夹并列的两个文件夹assets和res用来保存资源文件。      1.assets文件夹中放原声文件如MP3文件,通过AssetManager类以二进制流的形式访问      2.re...

用sqlserver的sqlcmd、osql、isql的备份与还原

用sqlserver的sqlcmd、osql、isql的备份与还原 --sqlcmd ,sql2005新加工具1、备份"C:\Program Files\MicrosoftSQLServer\90\Tools\Binn\SQLCMD.EXE" -S .\sqlexpress -U sa -P 000000 -d master -Q"BACKUP DATAB...