美文网首页javaWeb学习IT必备技能
Docker下的简要CI/CD流程

Docker下的简要CI/CD流程

作者: 张都尉 | 来源:发表于2020-06-15 16:34 被阅读0次

    CI/CD的概念
    随着DevOps理念的普及与扩散,大家经常会看到持续集成(Continuous Integration)与持续交付(Continuous Delivery)这样的字眼,而怎样使用与选择这些方法成了大多数IT团队必须面对的问题。在讨论更加深入地讨论问题之前,首先需要清楚这两者之间的主要区别是什么,以及用什么方法可以更好改善工作流程,从而在更短的时间内为目标用户提供更高质量的软件。
    如下,我们这里说一下简要的架构流程图:


    架构
    机器准备(3台)
    • CI / CD 10.0.4.3(Drone + Gogs + SonarQube)
    • Docker 镜像仓库 10.0.4.22(Harbor)
    • 测试环境 10.0.4.50

    SonarQube

    安装 SonarQube
    docker run -d --name sonarqube -p 9000:9000 --net mynetwork --ip 172.18.0.5 --restart=always sonarqube:alpine
    
    安装 中文语言包

    [图片上传失败...(image-a007c5-1592209989872)]

    安装完成后,点击 restart,重启 SonarQube 服务器

    默认账密
    账号:admin
    密码:admin


    Gogs

    安装 Gogs
    docker run -d --name=gogs --restart=always -p 3000:3000 -p 3001:22 -v /docker/gogs:/data  --net mynetwork --ip 172.18.0.2 gogs/gogs
    
    配置 Gogs
    克隆仓库

    Drone

    安装 Drone
    docker run \
      --volume=/var/lib/drone:/data \
      --env=DRONE_AGENTS_ENABLED=true \
      --env=DRONE_GOGS_SERVER=http://172.18.0.2:3000 \
      --env=DRONE_RPC_SECRET=drone666 \
      --env=DRONE_SERVER_HOST=172.18.0.3 \
      --env=DRONE_SERVER_PROTO=http \
      --env=DRONE_LOGS_TRACE=true \
      --env=DRONE_USER_CREATE=username:public,admin:true \
      --publish=80:80 \
      --publish=443:443 \
      --restart=always \
      --detach=true \
      --name=drone \
      --net mynetwork \
      --ip 172.18.0.3 \
      drone/drone:1
    
    安装 Drone-runner
    docker run -d \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -e DRONE_RPC_PROTO=http \
      -e DRONE_RPC_HOST=172.18.0.3 \
      -e DRONE_RPC_SECRET=drone666 \
      -e DRONE_RUNNER_CAPACITY=2 \
      -e DRONE_RUNNER_NAME=${HOSTNAME} \
      -e DRONE_LOGS_TRACE=true \
      -e DRONE_RUNNER_NETWORKS=mynetwork \
      -p 81:3000 \
      --restart always \
      --name runner \
      --net mynetwork \
      --ip 172.18.0.4 \
      drone/drone-runner-docker:1
    
    登录 Drone

    使用 Gogs 账号

    同步 Gogs 仓库
    激活 Gogs 仓库

    该步骤会在 Gogs 仓库中,生成 WebHook

    开启 Drone 信任模式
    查看 Gogs WebHook
    测试 Gogs WebHook

    Harbor

    安装 docker-compose
    yum install docker-compose
    
    安装 Harbor
    mkdir ~/software && cd ~/software
    wget https://github.com/goharbor/harbor/releases/download/v1.9.3/harbor-offline-installer-v1.9.3.tgz
    tar -xvf harbor-offline-installer-v1.9.3.tgz
    cd ~/harbor
    
    配置 Harbor
    // harbor.yml
    hostname: 10.0.4.22
    http:
      port: 80
    
    启动 Harbor
    ./install.sh
    

    默认帐密
    账号:admin
    密码:[ harbor.yml password ]

    创建仓库

    编辑项目

    该环节,以 JavaScript 前端项目为例

    初始化项目
    yarn init -y
    yarn add -D parcel-bundler
    
    配置脚本
    // package.json
    "scripts": {
        "build": "parcel build index.html"
      },
    
    创建项目入口
    // index.html
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <body>
            <p>888888888</p>
        </body>
    </html>
    
    创建 drone 配置文件
    // .drone.yml
    kind: pipeline
    name: default
    
    steps:
    - name: restore-cache
      image: drillster/drone-volume-cache
      volumes:
        - name: cache
          path: /cache
      settings:
        restore: true
        mount:
         - ./node_modules
    
    - name: code-analysis
      image: aosapps/drone-sonar-plugin
      settings:
        SONAR_HOST: http://172.18.0.5:9000
    
    - name: build-frontend
      image: node
      commands:
      - yarn install
      - yarn build
    
    - name: rebuild-cache
      image: drillster/drone-volume-cache
      volumes:
        - name: cache
          path: /cache
      settings:
        rebuild: true
        mount:
         - ./node_modules
    
    - name: upload-docker
      image: plugins/docker
      settings:
        repo: 10.0.4.22/repo_drone/image_drone
        registry: 10.0.4.22
        username: public
        password: Abcdefg123
        tags: v1.0.0
        insecure: true
        debug: true
        dockerfile: Dockerfile
    
    - name: ssh run
      image: appleboy/drone-ssh
      settings:
        host: 10.0.4.50
        username: root
        password: gdhr@123
        port: 22
        script:
          - docker pull 10.0.4.22/repo_drone/image_drone:v1.0.0
          - docker run -d -p 1111:80 --restart=always 10.0.4.22/repo_drone/image_drone:v1.0.0
    
    volumes:  
      - name: cache  
        host:  
          path: /tmp/cache_drone
    

    末尾打个花呗红包广告-挣个人人写作费用

    用花呗省钱,红包机率好的几十

    相关文章

      网友评论

        本文标题:Docker下的简要CI/CD流程

        本文链接:https://www.haomeiwen.com/subject/sckhxktx.html