jenkins+docker+git+harbor构建及代码回滚(未完)
一.部署
前提环境说明
| 192.168.111.3 | 该机器为git本地仓库,及git远程仓库(git用户创建),及Harbor镜像仓库 |
|---|---|
| 192.168.111.4 | 该机器为Jenkins |
| 192.168.111.5 | 该机器发布docker |
Jenkins环境以及git仓库,以及docker已经准备好,三台机器都需要docker环境。第一台需要docker环境来运行Harbor,第二台Jenkins需要docker环境来制作镜像并上传到Harbor,第三台是运行docker容器。
仓库里测试页为自定义的测试页
git上传代码到远程仓库时是基于标签上传的,我们可以基于该标签联想到版本号,那么所谓的代码回退,在本案例中,无非就是将现有的容器干掉,从而将我们需要回退到的版本对应的镜像拉取并且运行。
环境工作流程介绍
开发根据git标签提交代码,Jenkins拉取代码构建镜像上传到Harbor中,然后docker主机从Harbor中拉取镜像,并根据指令运行容器。
部署harbor
1、在线安装包
$ wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-online-installer-v1.1.2.tgz
$ tar xvf harbor-online-installer-v1.1.2.tgz
2、离线安装包
$ wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz
$ tar xvf harbor-offline-installer-v1.1.2.tgz
[root@localhost ~]# tar xf harbor-offline-installer-v1.5.0.tgz
[root@localhost ~]# mv harbor /usr/local/
[root@localhost ~]# vim /usr/local/harbor/harbor.cfg
hostname = 192.168.111.3
ui_url_protocol = http
- 两个harbor部署docker-compose
curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m`
# mv docker-compose /usr/local/bin/docker-compose
# chmod +x !$
chmod +x /usr/local/bin/docker-compose
- 启动配置
# sh /usr/local/harbor/install.sh
#此过程比较慢

默认密码:admin:Harbor12345
在docker主机上指定镜像仓库为Harbor所在地址
[root@localhost ~]# vim /etc/docker/daemon.json
{"insecure-registries":["192.168.111.3:80"]}
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
将我准备的centos镜像上传到Harbor,后面构建一个包含代码的镜像,需要基于该镜像进行构建
[root@localhost ~]# cat centos-7-x86_64.tar.gz | docker import - centos:7
sha256:612802f256a6d854b22faa406bda99a49ff1a5ddad2f0b29faf75f7e6d1f2ebd
[root@localhost ~]# docker tag centos:7 192.168.111.3:80/library/centos:7
[root@localhost ~]# docker login 192.168.111.3:80
Username: admin
Password:
Login Succeeded
#需要先登录上,在上传镜像
[root@localhost ~]# docker push 192.168.111.3:80/library/centos:7

接下来在Jenkins机器和docker主机上,部署jdk,Jenkins部署jdk是maven构建时要用到
[root@localhost ~]# tar xf jdk-8u191-linux-x64.tar.gz
[root@localhost ~]# mv jdk1.8.0_191/ /usr/local/java
[root@localhost ~]# tar xf apache-tomcat-8.5.16.tar.gz
[root@localhost ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat
[root@localhost ~]# vim Dockerfile
FROM centos:7
MAINTAINER joinbest
ENV TVER=8.5.16
ENV JAVA_HOME=/usr/local/java
ADD ./apache-tomcat-${TVER}.tar.gz /tmp
RUN cd /tmp && \
mv apache-tomcat-${TVER} /usr/local/tomcat && \
rm -rf /usr/local/tomcat/webapps/* && \
mkdir /usr/local/tomcat/webapps/ROOT
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh","run"
[root@localhost ~]# docker build -t 192.168.111.3:80/library/tomcat-85 -f Dockerfile ./
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.111.3:80/library/tomcat-85 latest a9090e8402d9 6 seconds ago 611MB
centos 7 612802f256a6 2 hours ago 589MB
192.168.111.3:80/library/centos 7 612802f256a6 2 hours ago 589MB
[root@localhost ~]# docker push 192.168.111.3:80/library/tomcat-85
需要修改一下Jenkins的运行用户为root,因为有些指令其他用户没有权限,并且在本环境中maven以及JDK也已经部署好,以及在全局工具配置里面添加Git
需要在Jenkins安装ssh插件以及git parameter插件
添加一个全局凭据用于连接docker主机使用的
添加系统配置,添加一个远程主机,将docker主机的ip,以及应用刚才的全局凭据。
- 添加maven构建任务
execute shell 输入框填写,这个内容是在Jenkins主机上执行的
REPOSITORY=192.168.111.3:80/library/probe:${Tag}
cat << EOF > Dockerfile
FROM 192.168.111.3:80/library/tomcat-85:latest
RUN rm -rf /usr/local/tomcat/webapps/ROOT
COPY web/target/*.war /usr/local/tomcat/webapps/ROOT.war
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
EOF
docker build -t $REPOSITORY ./
docker login 192.168.111.3:80 -u admin -p Harbor12345 #这个用于登录harbor,只有登陆上才能上传镜像
docker push $REPOSITORY
post steps添加一个execute shell script on remote host using ssh,这是在docker主机上执行的
REPOSITORY=192.168.111.3:80/library/probe:${Tag}
docker rm -f probe | true
docker images rm $REPOSITORY | true
docker container run -d --name probe -v /usr/local/java:/usr/local/java -p 8090:8080 $REPOSITORY
jenkins+docker+git+harbor构建及代码回滚(未完)的更多相关文章
- Jenkins+Docker+Git+Harbor流水线打包
Jenkins+Docker+Git+Harbor流水线打包 环境: CentOS Linux release 7.6.1810 (Core) 192.168.247.214 Jenkins+dock ...
- Git配合Tag的代码回滚
现有的远程仓库版本的tag为v1.0 前置准备 具体操作: 我们在本地修改一下readme文件,然后进行add,commit操作. 再给我们的commit打上tag git tag -a v1.1 - ...
- 基于 Jenkins+Docker+Git 的CI流程初探
在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要.目前已经形成一套标准的流程,最重要的组成部分就是持续集成(Continuous Integration,CI)及持续部 ...
- 从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布
一.前言 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java ...
- Jenkins+Docker+Git+Registry
从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布 笔者:@拿着保温瓶的年轻人 目录: 一.前言 二.发布流程 三.环境准备 四.部署思路梳理 五.三台机器上操作 ...
- Jenkins+Docker+Git 自动化部署
Jenkins+Docker+Git 自动化部署图文教程 https://blog.csdn.net/qq_38252039/article/details/89791247 前言: 通过几天的学习和 ...
- git代码回滚:Reset、Checkout、Revert的选择
代码回滚:Reset.Checkout.Revert的选择 Zhongyi Tong edited this page on Dec 8, 2015 · 5 revisions Pages 19 Ho ...
- 6.Git代码回滚
1.代码修改并提交 我们已经成功地添加并提交了一个helloWorld.txt文件,现在,是时候继续工作了. 于是,我们继续修改helloWorld.txt文件,改成如下内容: $ vi helloW ...
- Jenkins 搭建企业实战案例 (发布与回滚)
让我们的代码部署变得easy,不再难,Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins非常易于安装和配置,简单易用 ...
随机推荐
- 在excel图表上添加数据标签
在excel图表上添加数据标签 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://zhidao.baidu.com/question/47838665 方法与步骤 在E ...
- delphi self.Update 什么作用
更新指定窗口的客户区.如果窗口更新的区域不为空,UpdateWindow函数就发送一个WM_PAINT消息来更新指定窗口的客户区.函数绕过应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗 ...
- LODOP判断没成功发送任务-重打一下
一般情况下打印执行了PRINT()或PRINTA(),就会加入打印机队列,如果打印机脱机,就会在队列里排队,当打印机连上并取消脱机的时候,正在排队的任务就会打出,所以一般建议用是否加入队列来判断打印成 ...
- JSON和JSONP具体是干神马的呢? (含jQuery实例)
说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服 ...
- 原生JavaScript贪吃蛇
在实例开发过程中还是能认识到很多不足的,并且加强了一些基础. 简单写一下制作过程: 1.创建画布 2.创建蛇和老鼠 坐标不能重叠 3.让蛇移动起来 4.添加死亡方法 5.添加转点坐标和方向 6.添加吃 ...
- swift 导入第三方库
现在的项目也是做了几个,每个都会导入几个优秀的第三方…… 这里写下导入的步骤,方便查询:::: 1.手动导入 首先要知道,是需要文件,还是框架 比如 Alamofire.SnapKit,都需要导入框架 ...
- Linux终极shell-zsh的完美配置方案!——oh-my-zsh
Zsh 介绍 Zsh 兼容 Bash,据传说 99% 的 Bash 操作 和 Zsh 是相同的 Zsh 官网:http://www.zsh.org/ 先看下你的 Linux支持哪些 shell:cat ...
- C/C++文件操作经验总结
最近在做一个从groundtruth_rect.txt中读取按行存储的矩形元素(x, y, w, h),文本存储的格式如下: 310,102,39,50 308,100,39,50 306,99,39 ...
- Dotmemory 内存分析工具的操作手册
教程一.开始学习dotmemory 在本教程中,我们将学习如何运行dotMemory内存快照.此外,我们将简要地看看dotMemory的用户界面和基本分析的概念.考虑dotMemory本教程作为起点 ...
- juc-locks包
1. 简介 java.util.concurrent.locks 包含常用的锁实现,重点研究AbstractQueuedSynchronizer.ReentrantLock.ReentrantRead ...