本文是《Jenkins流水线(pipeline)实战》系列的第三篇,前面已对Jenkins流水线有了基本认识,也试过从GitHub下载pipeline脚本并执行,今天的实战是编写一段pipeline脚本,该脚本的作用是从GitHub下载一个Java项目(Maven构建的),然后编辑构建此项目,并将构建结果制作成Docker镜像并且推送到私有镜像仓库;

系列文章地址

  1. Jenkins流水线(pipeline)实战之:从部署到体验
  2. 让Jenkins执行GitHub上的pipeline脚本

环境信息

为了快速完成Jenkins部署,本次实战用到了Docker,请在实战前准备好以下环境:

  1. 操作系统:Ubuntu 18.04.2 LT
  2. Jenkins:2.176.3
  3. Docker:19.03.1
  4. 私有镜像仓库:Harbor 1.9.0

实战内容简介

今天的实战功能如下图所示:

关于Docker私有镜像仓库Harbor

构建好的Docker镜像,会被推送到Docker镜像仓库Harbor,此仓库是我自己在本地搭建的,详细搭建步骤请参考CentOS部署Harbor镜像仓库 ,如果您有hub.docker.com网站的账号,也可以直接将镜像推送到此网站,这样大家都能使用到您制作的镜像了。

关于本次用到的GitHub项目

本次实战会将一个GitHub上的项目先编译,再构建成Docker镜像,我这边准备了一个基于Maven构建的SpringBoot项目,这是个Hello world级别的工程,唯一特别之处是pom.xml中用到了Jib插件,用来将SpringBoot项目构建成Docker镜像。

该项目的源码可以从GitHub上下载,地址是:https://github.com/zq2599/blog_demos.git

这个git项目中有多个文件夹,本章的应用在hellojib文件夹下,如下图所示:

来看看此工程的pom.xml,重点是Jib插件部分,如下所示:

 com.google.cloud.tools jib-maven-plugin 1.3.0openjdk:8-jdk-stretchbolingcavalry/hellojib:${project.version}-Xms4g-Xmx4g8080

使用Jib将SpringBoot项目构建成Docker镜像的更多信息,请参考https://blog.csdn.net/boling_cavalry/article/details/94355659;

用私有的GitHub仓库来实战

  1. 考虑到实际工作中大多数源码都没有对外公开,因此我这里也建了个私有GitHub仓库,地址是:https://github.com/zq2599/pipeline.git ,将前面提到的的hellojib工程所有源码都放入此仓库;
  2. pipeline下载私有仓库的源码时需要身份验证,验证方式后面会说到。
  3. 这个私有仓库里面并不只有hellojib一个工程,仓库的根目录下的目录里面才是构建镜像会用到的Maven工程:

创建Jenkins任务

1. 创建一个名为流水线任务:

2. 接来下我们要借助Jenkins提供的语法工具来生成下载GitHub的pipeline代码,如下图,在设置任务的页面点击红框中的按钮:

3. 现在进入的页面是Jenkins辅助我们编写pipeline脚本的地方,请按照下图操作:

4. 在弹出的窗口配置一个保存了GitHub账号和密码的秘钥配置项,请按照下图的数字顺序操作:

5. 如下图红框所示,在下拉菜单中选择刚才创建的秘钥配置:

6. 此时可以发现之前的红色错误提示已经消失(因为鉴权通过了),点击下图红框中的按钮即可生成pipeline源码:

7. 完整的pipeline脚本内容如下,其中阶段从GitHub下载的那段脚本,就是上图中自动生成的:

pipeline { agent any tools { maven 'mvn-3.6.2' } stages { stage('Checkout') { steps { echo '从GitHub下载项目源码' checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'git-account-passwd', url: 'https://github.com/zq2599/pipeline.git']]]) } }  stage('Build') { steps { echo '开始编译构建' sh 'cd hellojib && mvn clean compile -U -DskipTests jib:dockerBuild' } } stage('Push') { steps { echo '将本地Docker镜像推送到Harbor镜像仓库' echo '给当前镜像设置带有Harbor地址和项目名称的Tag,这样才能推送到Harbor的library项目之下' sh 'docker tag bolingcavalry/hellojib:0.0.1-SNAPSHOT 192.168.50.167/library/hellojib:0.0.1-SNAPSHOT' echo '登录Harbor' sh 'docker login 192.168.50.167 -u admin -p Harbor12345' echo '登录chengg成功,开始推送镜像' sh 'docker push 192.168.50.167/library/hellojib:0.0.1-SNAPSHOT' } } stage('Clean') { steps { echo '清理Maven工程' sh 'cd hellojib && mvn clean' echo '删除镜像' sh 'docker rmi bolingcavalry/hellojib:0.0.1-SNAPSHOT 192.168.50.167/library/hellojib:0.0.1-SNAPSHOT' echo '清理完毕' } } }}

8. 将上面的pipeline脚本填写到build-image任务的流水线脚本输入框中,如下图:

9. 点击下图红框中的立即构建即可开始执行流水线任务:

10. 如果配置无误的话任务可以执行成功,如下图,每个阶段的执行结果和耗时都展现出来了:

11. 如果您的任务构架失败了,点击下图红框中的小圆球,会打开任务执行的详细日志,用来检查错误原因:

12. 登录Harbor网站,可以看到推送过来的镜像:

把pipeline脚本放在GitHub上

今天的实战中,编写的pipeline脚本是保存在任务的设置中的,还记得 让Jenkins执行GitHub上的pipeline脚本一文的内容么?您可以尝试将今天的pipeline脚本存放在GitHub上,这样从构建脚本到业务项目都实现了版本控制,在多人开发阶段更加实用。

至此,基于pipeline操作的GitHub项目的实战就完成了,如果您正在寻求容器化环境的CI && CD方案,愿本文能给您提供一些参考。

欢迎关注我的公众号:程序员欣宸

github镜像网站_Jenkins把GitHub项目做成Docker镜像相关推荐

  1. 把代码和环境做成docker镜像_Jenkins把GitHub项目做成Docker镜像

    本文是<Jenkins流水线(pipeline)实战>系列的第三篇,前面已对Jenkins流水线有了基本认识,也试过从GitHub下载pipeline脚本并执行,今天的实战是编写一段pip ...

  2. SpringBoot 项目构建 Docker 镜像调优实践

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:超级小豆丁 http://www.mydlq.club/article/16/ PS ...

  3. docker eclipse打包_【Docker】Maven打包SpringBoot项目成Docker镜像并上传到Harbor仓库(Eclipse、STS、IDEA、Maven通用)...

    写在前面 最近,在研究如何使用Maven将SpringBoot项目打包成Docker镜像并发布到Harbor仓库,网上翻阅了很多博客和资料,发现大部分都是在复制粘贴别人的东西,没有经过实践的检验,根本 ...

  4. Java版人脸检测详解下篇:开发java应用并做成docker镜像

    本篇概览 如果您看过<Java版人脸检测上篇>一文,甚至动手实际操作过,那么你应该会对背后的技术细节感兴趣,开发这样一个应用,咱们总共要做以下三件事: 1.准备好docker基础镜像 2. ...

  5. Spring Boot项目打包Docker镜像

    Spring Boot项目打包Docker镜像 1.编写 Dockerfile 文件 2.加入 spring boot 根路径, 进行 mvn package 打包 3.打包上传项目并解压 4.进入 ...

  6. SpringCloud项目打包Docker镜像并发布到Harbor仓库

    SpringCloud项目打包Docker镜像并发布到Harbor仓库 1. Docker-compose安装 2. Harbor仓库搭建 3. Docker环境配置 4. 项目配置 1. Docke ...

  7. jar构建docker镜像_将jar包打包为docker镜像

    本文主要讲如何将一个jar包打包成一个docker镜像,并运行起来,这里我以metabase.jar为例,这个jar包可以直接使用下面命令进行运行: java -jar metabase.jar 接下 ...

  8. linux docker查找镜像文件,搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法...

    本文为你介绍的内容是Docker入门相关的操作方法:搜索Docker镜像.下载Docker镜像.运行Docker容器.构建自定义Docker镜像.删除容器.删除Docker镜像.以下给出的所有步骤均在 ...

  9. 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上

    一个用于构建和推送Docker镜像的Maven插件. 使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇 ...

最新文章

  1. C#从SQL server数据库中读取l图片和存入图片
  2. lol12月25服务器维护,lol12月10日维护到几点 英雄联盟12月10日10.25版本更新维护时间...
  3. mysql复制模式第四部分-----环形复制
  4. STL札记3-2(hashtable关联容器set、map)
  5. hashmap赋值给另一个hashmap_图解设计一个 HashMap
  6. 区间比较_Simulink(离散PIDamp;区间检测模块)+AURIX功能安全板过流比较电路+电机结构应用与工作原理学习网站...
  7. 高级特性(2)- XML
  8. JZOJ 5640. 【NOI2018模拟4.9】劈配
  9. 新版chrome调整开发者工具位置方式改变
  10. 微信小程序云开发小项目“研岸日记”日记记录分享,源码分享
  11. Java笔记-使用RabbitMQ的Java接口实现round-robin(轮询分发)
  12. 为什么自己编写的页面总是在那里抖动_SEO排名,为什么旧页面比新内容排名高?...
  13. mysql_fetch_array 失败_mysql_fetch_array错误
  14. 分布式数据库中间件的实现原理介绍一:分库分表【转】
  15. 起底 Windows 35 年发展史
  16. 程序员带实习生事后却遭遇白眼狼,吐槽:真TM心累
  17. vue组件之间的参数传递
  18. excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
  19. hapi入门之Authentication篇
  20. 关于创建String对象的抉择

热门文章

  1. python 求最大内切圆和最小外接圆问题
  2. 看看月光blog2014年都搞些啥
  3. RIPS user guide for fresh
  4. 国外计算机从什么开始学,从零开始学电脑知识 1(国外英语资料).doc
  5. ch341a编程器写操作超时失败
  6. Python自动化小米手环运动数据导出
  7. 价值7000万的商业模式,羊毛出在狗身上,猪来买单
  8. R语言基础作图之点图
  9. Debezium的基本使用(以MySQL为例)
  10. 从零到一学习计算机视觉:朋友圈爆款背后的计算机视觉技术与应用 | 公开课笔记...