GoCD 整行记(四):配置流水线

上篇文章我们已经完成了流水线的创建,并且能够编译一个 SpringBoot 项目

今天我将继续完善这条流水线,将我们编译好的 jar 包构建成 docker 镜像,并上传到 DockerHub 仓库

功能梳理

  1. 前面我们已经创建了 gocd-springboot-demo-pipelines 流水线(Pipeline),包含一个 build 阶段(Stage),包含一个 build 任务(Job),执行了一条命令(Task) ./gradlew clean build,这条命令会生成一个 jar

    已有的流水线

  2. 这个 jar 包会存储在 gocd-agent 容器的 /godata/pipelines/Pipeline 名称/项目名称/build/libs

    jar 包路径

  3. 将生成的 jar 包保存到本地 GoCD 服务的 Artifacts 仓库

  4. 新增一个阶段 build-publish-docker-image,完成以下工作

    1. 从本地 Artifacts 仓库 拉取 jar
    2. jar 包构建成 docker 镜像
    3. 将镜像推送到你的 DockerHub 仓库

配置 Artifact Stores

GoCD 整行记(零):基于 Docker 打造 CI/CD 流水线这篇文章中,我们在启动 gocd-server 时已经安装了一个插件 docker-registry-artifact-plugin,这个插件可以帮助我们将 docker 镜像推送到 DockerHub 仓库,使用前我们需要对这个插件配置一下

  1. ADMIN -> Artifact Stores 进入配置页面

    进入 Artifact Stores

  2. 点击 Add 按钮,开始配置

    配置 Artifact plugin for docker 插件

    • Registry Type: Others
    • Docker Registry Url: https://index.docker.io/v1/
    • Username: 你的 DockerHub 用户名
    • Password: 你的 DockerHub 密码
  3. 点击 Save 按钮,保存配置

修改流水线配置

保存生成的 jar 包

  1. 进入 gocd-springboot-demo-pipelines -> build -> build -> ARTIFACTS 配置界面
Artifacts 配置界面
  • 选中 Build
  • 点击 Add Artifact 按钮
  1. 配置 Artifact


    配置 Build Artifact
    • Source:这里要填写的是 jar 包的位置,参考:gocd-springboot-demo/build/libs/gocd-springboot-demo.jar
    • Destination:填写保存到 gocd-server 容器的位置:参考 gocd-springboot-demo
    • 这两个路径都是相对路径
  2. 点击 SAVE 按钮,保存配置

  3. 运行一下 Pipeline ,验证配置结果

Artifact 结果

根据图中的路径,可以看到生成的 jar 包已经在 Artifacts 中了

新增构建 docker 镜像阶段

  1. 进入 pipelineStage 编辑界面,点击 Add new stage 按钮
    Stage 编辑界面
  1. 配置新创建的 Stage ,同时创建一个的 JobTask,这个 Task 功能就是构建一个 jar 包的 docker 镜像

    注意,此处执行的命令依赖 Dockerfile 去构建 docker 镜像,gocd-springboot-demo 工程已经包含了这个文件

配置 build-publish-docker-image Stage
  • Stage name:build-publish-docker-image

  • Job Name:build-docker-image

  • Task Type:Custom Command

  • Command:docker

  • Arguments:

    build
    -t
    hezhong0711/gocd-springboot-demo # 此处替换为你创建 DockerHub repository 名称
    .
    
  • Working Directory:这个是保存代码的路径,参考:gocd-springboot-demo

  1. 点击 Save 按钮

  2. 进入刚刚创建的 Tasks 配置界面

    build-docker-image Task 配置界面
  1. 在构建 docker 镜像前,我们需要先拉取 jar 包,因此,需要新增一个 Task

  2. 选中 Fetch Artifact ,点击 Add Task 按钮

新增 Fetch Artifact Task
配置 Fetch Artifact Task
  • Type of Fetch Artifact: GoCD
  • Pipeline:gocd-springboot-demo-pipelines
  • Stage:build
  • Job:build
  • Source:此处填写的是 jar 包保存的路径,参考:gocd-springboot-demo/gocd-springboot-demo.jar
  • 勾选上 Source is a file
  • Destination:拉取 jar包的保存路径,参考: gocd-springboot-demo/build/libs
  1. 点击 Save 按钮保存,按住 Tasks 前面的 8个灰点标志修改一下顺序,点击 Save 保存修改
修改 Task 顺序
  1. 运行一下 pipeline 查看运行结果
查看运行结果
运行日志
  1. 查看编译好的 docker 镜像

    进入 gocd-agent 容器,执行 docker images 查看编译好的镜像

docker 镜像查看

上传 docker 镜像

  1. 进入 gocd-springboot-demo-pipelines -> build-publish-docker-image -> build-docker-image -> Artifacts 配置界面

    配置 docker Artifact 界面

  2. 选中 External ,点击 Add Artifact 按钮

配置 docker Artifact
  • id:参考:docker
  • Store id:选中 docker-hub 这是我们在文章开支配置的 Artifact Stores
  • Image:这个是你在 DockerHub 上创建的 repository
  1. 点击 SAVE 按钮,保存配置

  2. 运行 Pipeline ,查看结果

    上传 docker 镜像日志

    日志中可以看到,GoCD 长在上传 docker 镜像

    任务完成后,可以在 DockerHub 上查看到你上传的 docker 镜像

DockerHub 上查看上传结果

至此,我们已经成功让 GoCD 将我们的 SpringBoot 工程自动编译成 jar 包,然后构建成 docker 镜像,最后上传到 DockerHub 镜像仓库。

后续文章我们将完成最后一步,将已经构建好的 docker 镜像部署到服务器上。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容