github镜像网站_Jenkins把GitHub项目做成Docker镜像
本文是《Jenkins流水线(pipeline)实战》系列的第三篇,前面已对Jenkins流水线有了基本认识,也试过从GitHub下载pipeline脚本并执行,今天的实战是编写一段pipeline脚本,该脚本的作用是从GitHub下载一个Java项目(Maven构建的),然后编辑构建此项目,并将构建结果制作成Docker镜像并且推送到私有镜像仓库;
系列文章地址
- Jenkins流水线(pipeline)实战之:从部署到体验
- 让Jenkins执行GitHub上的pipeline脚本
环境信息
为了快速完成Jenkins部署,本次实战用到了Docker,请在实战前准备好以下环境:
- 操作系统:Ubuntu 18.04.2 LT
- Jenkins:2.176.3
- Docker:19.03.1
- 私有镜像仓库: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仓库来实战
- 考虑到实际工作中大多数源码都没有对外公开,因此我这里也建了个私有GitHub仓库,地址是:https://github.com/zq2599/pipeline.git ,将前面提到的的hellojib工程所有源码都放入此仓库;
- pipeline下载私有仓库的源码时需要身份验证,验证方式后面会说到。
- 这个私有仓库里面并不只有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镜像相关推荐
- 把代码和环境做成docker镜像_Jenkins把GitHub项目做成Docker镜像
本文是<Jenkins流水线(pipeline)实战>系列的第三篇,前面已对Jenkins流水线有了基本认识,也试过从GitHub下载pipeline脚本并执行,今天的实战是编写一段pip ...
- SpringBoot 项目构建 Docker 镜像调优实践
点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:超级小豆丁 http://www.mydlq.club/article/16/ PS ...
- docker eclipse打包_【Docker】Maven打包SpringBoot项目成Docker镜像并上传到Harbor仓库(Eclipse、STS、IDEA、Maven通用)...
写在前面 最近,在研究如何使用Maven将SpringBoot项目打包成Docker镜像并发布到Harbor仓库,网上翻阅了很多博客和资料,发现大部分都是在复制粘贴别人的东西,没有经过实践的检验,根本 ...
- Java版人脸检测详解下篇:开发java应用并做成docker镜像
本篇概览 如果您看过<Java版人脸检测上篇>一文,甚至动手实际操作过,那么你应该会对背后的技术细节感兴趣,开发这样一个应用,咱们总共要做以下三件事: 1.准备好docker基础镜像 2. ...
- Spring Boot项目打包Docker镜像
Spring Boot项目打包Docker镜像 1.编写 Dockerfile 文件 2.加入 spring boot 根路径, 进行 mvn package 打包 3.打包上传项目并解压 4.进入 ...
- SpringCloud项目打包Docker镜像并发布到Harbor仓库
SpringCloud项目打包Docker镜像并发布到Harbor仓库 1. Docker-compose安装 2. Harbor仓库搭建 3. Docker环境配置 4. 项目配置 1. Docke ...
- jar构建docker镜像_将jar包打包为docker镜像
本文主要讲如何将一个jar包打包成一个docker镜像,并运行起来,这里我以metabase.jar为例,这个jar包可以直接使用下面命令进行运行: java -jar metabase.jar 接下 ...
- linux docker查找镜像文件,搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法...
本文为你介绍的内容是Docker入门相关的操作方法:搜索Docker镜像.下载Docker镜像.运行Docker容器.构建自定义Docker镜像.删除容器.删除Docker镜像.以下给出的所有步骤均在 ...
- 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
一个用于构建和推送Docker镜像的Maven插件. 使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇 ...
最新文章
- C#从SQL server数据库中读取l图片和存入图片
- lol12月25服务器维护,lol12月10日维护到几点 英雄联盟12月10日10.25版本更新维护时间...
- mysql复制模式第四部分-----环形复制
- STL札记3-2(hashtable关联容器set、map)
- hashmap赋值给另一个hashmap_图解设计一个 HashMap
- 区间比较_Simulink(离散PIDamp;区间检测模块)+AURIX功能安全板过流比较电路+电机结构应用与工作原理学习网站...
- 高级特性(2)- XML
- JZOJ 5640. 【NOI2018模拟4.9】劈配
- 新版chrome调整开发者工具位置方式改变
- 微信小程序云开发小项目“研岸日记”日记记录分享,源码分享
- Java笔记-使用RabbitMQ的Java接口实现round-robin(轮询分发)
- 为什么自己编写的页面总是在那里抖动_SEO排名,为什么旧页面比新内容排名高?...
- mysql_fetch_array 失败_mysql_fetch_array错误
- 分布式数据库中间件的实现原理介绍一:分库分表【转】
- 起底 Windows 35 年发展史
- 程序员带实习生事后却遭遇白眼狼,吐槽:真TM心累
- vue组件之间的参数传递
- excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
- hapi入门之Authentication篇
- 关于创建String对象的抉择