运维部署个人学习运营相关

GoCD 整行记(零):基于 Docker 打造 CI/CD 流

2021-03-31  本文已影响0人  小麻烦它爹

本系列文章手把手教你打造一套从代码提交服务部署的完整流水线。我将以一个 SpringBoot 程序为例。

目标

流程梳理

首先梳理一下整个流水线需要完成的工作

  1. 拉取最新代码
  2. 基于最新代码,生成 jar
  3. 构建应用程序 docker 镜像
  4. docker 镜像部署推送到 DockerHub 仓库
  5. 登录应用服务器,完成应用的部署工作

定制化功能分析

根据上述梳理的结果,GoCD 需要集成以下这些功能

  1. JDK8:用于编译 SpringBoot 程序,生成 jar
  2. docker:用于构建应用程序镜像
  3. expect:用于登录远程服务器,完成应用部署的工作

步骤

定制镜像

gocd-server 镜像

该镜像基于 gocd 官方提供的镜像 集成了JDK8 环境,详细步骤参考 GoCD 整行记(一):定制 gocd-server

docker pull hezhong0711/gocd-server-jdk8

gocd-agent 镜像

基于 官方提供的 gocd-agent 镜像 集成了 JDK8 / docker / expect 环境,详细步骤参考 GoCD 整行记(二):定制 gocd-agent

docker pull hezhong0711/gocd-agent-jdk8

启动环境

启动 gocd-server 容器

  1. 启动容器

    docker run -d -p8153:8153 \
      -e GOCD_PLUGIN_INSTALL_docker-registry-artifact-plugin=https://github.com/gocd/docker-registry-artifact-plugin/releases/download/v1.3.0-138-exp/docker-registry-artifact-plugin-1.3.0-138.jar \
      hezhong0711/gocd-server-jdk8
    
  2. 查看启动结果

    ➜  ~ docker ps
    CONTAINER ID   IMAGE                                COMMAND                  CREATED        STATUS        PORTS                               NAMES
    8a4d531691c4   hezhong0711/gocd-server-jdk8         "/docker-entrypoint.…"   31 hours ago   Up 31 hours   0.0.0.0:8153->8153/tcp              focused_franklin
    
    • 找到容器的 NAMES 值:focused_franklin,后面会用到
  3. 浏览器打开 http://localhost:8153 可以看到 GoCD 启动界面

    GoCD 启动界面

启动 gocd-agent 容器

  1. 启动容器

    docker run -d \
      -e GO_SERVER_URL=http://$(docker inspect --format='{{(index (index .NetworkSettings.IPAddress))}}' GOCD_SERVER_NAMES):8153/go \
      -v '/var/run/docker.sock:/var/run/docker.sock:rw' hezhong0711/gocd-agent-jdk8:latest
    
    • GOCD_SERVER_NAMES 替换为上一步查看的 NAMES 即可
  2. 浏览器打开 http://localhost:8153/go/agents ,可以看到刚刚创建的 Agent 节点,此时状态为 Pending

Agent 管理界面
  1. 启用节点:勾选节点 -> 点击 ENABLE 按钮
启用 Agent 结果

启用后,状态变为 Idle

至此,GoCD 环境启动完成!

上一篇下一篇

猜你喜欢

热点阅读