• Jenkins :是一个开源的实现持续集成的工具,可以实施监控持续集成过程中所存在的问题,提供详细的日志文件和提醒功能,还能用图表的形式直观的展示出项目构建的趋势和稳定性
  • maven:只有在Java项目时才会使用,帮助实现Java项目的打包
  • ansible:自动化运维工具,实现批量系统配置,批量程序部署,批量运行命令等

基于Jenkins+git+docker 发布Java项目

192.168.200.10 git Git/Docker registry

192.168.200.20 jenkins jenkins

192.168.200.14 docker docker

[root@docker ~]# setenforce 0
setenforce: SELinux is disabled
[root@docker ~]# iptables -F
[root@docker ~]# systemctl stop firewalld
[root@docker ~]# systemctl stop NetworkManager

配置Git模拟开发提交

[root@Git ~]# rpm -q git
git-1.8.3.1-19.el7.x86_64
[root@Git ~]# useradd git
[root@Git ~]# passwd git #设置密码123456 #配置jenkins主机上免交互拉取Git仓库
[root@jenkins ~]# ssh-keygen
[root@jenkins ~]# ssh-copy-id git@192.168.200.14
[root@jenkins ~]# ssh git@192.168.200.20 #测试git
[git@Git ~]$ exit #在git服务器上创建probe仓库
[root@Git ~]# su - git
Last login: Thu Nov 4 00:13:20 PDT 2021 from server01 on pts/1
[git@Git ~]$ mkdir probe.git
[git@Git ~]$ cd probe.git/
[git@Git probe.git]$ git --bare init
Initialized empty Git repository in /home/git/probe.git/ #从GitHub拉取开源Java博客系统psi-probe代码
[root@jenkins ~]# git clone https://github.com/psi-probe/psi-probe.git #
psi-probe
[root@jenkins psi-probe]# ls
CODE_OF_CONDUCT.md LICENSE psi-probe-core psi-probe-tomcat9
CONTRIBUTING.md LICENSE_HEADER psi-probe-rest psi-probe-web
docs mvnw psi-probe-tomcat10 README.md
eclipse-java-google-style.xml mvnw.cmd psi-probe-tomcat7 src
intellij-java-google-style.xml pom.xml psi-probe-tomcat85 #移除旧地址,添加新的地址
[root@jenkins psi-probe]# git remote remove origin
[root@jenkins psi-probe]# git remote add origin git@192.168.200.20:/home/git/probe.git #提交git仓库并创建tag
[root@jenkins psi-probe]# git add .
[root@jenkins psi-probe]# git config --global user.email "crushlinux@163.com"
[root@jenkins psi-probe]# git config --global user.name "crushlinux" #创建标签
[root@jenkins psi-probe]# git tag 1.0.0 #推送git服务器
[root@jenkins psi-probe]# git push origin 1.0.0
Counting objects: 33856, done.
Compressing objects: 100% (9923/9923), done.
Writing objects: 100% (33856/33856), 22.14 MiB | 30.88 MiB/s, done.
Total 33856 (delta 20073), reused 33849 (delta 20067)
To git@192.168.200.20:/home/git/probe.git
* [new tag] 1.0.0 -> 1.0.0

配置docker仓库

#在git上部署docker私有仓库
[root@Git ~]# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry
[root@Git ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ed58b50e06bf registry "/entrypoint.sh /etc…" 5 minutes ago Up 7 seconds 0.0.0.0:5000->5000/tcp registry #在所有主机上配置连接git
[root@jenkins ~]# vim /etc/docker/daemon.json
{
"insecure-registries":["192.168.200.20:5000"]
}
[root@jenkins ~]# systemctl daemon-reload
[root@jenkins ~]# systemctl restart docker #测试能否上传镜像到私有仓库git上
[root@docker ~]# cat centos-7-x86_64.tar.gz | docker import - centos:7
sha256:4240ca40f3e88720b2b64bbff21b2f5ec24a9d7dace62f17ea8bb9dd468709ec
[root@docker ~]# docker tag centos:7 192.168.200.20:5000/centos:7
[root@docker ~]# docker push 192.168.200.20:5000/centos:7
The push refers to repository [192.168.200.20:5000/centos]
c664eb1dcbf0: Pushed
7: digest: sha256:7a34258489e0bc4049641cd821aa18f2740a8d62c5a72b70ac7d6e645f5c195a size: 529 #查看registry上传的镜像
[root@docker ~]# curl http://192.168.200.20:5000/v2/_catalog
{"repositories":["centos"]}
[root@docker ~]# curl http://192.168.200.20:5000/v2/centos/tags/list
{"name":"centos","tags":["7"]} #测试能否下载,因为有缓存所有速度特别快
[root@docker ~]# docker rmi 192.168.200.20:5000/centos:7
Untagged: 192.168.200.20:5000/centos:7
Untagged: 192.168.200.20:5000/centos@sha256:7a34258489e0bc4049641cd821aa18f2740a8d62c5a72b70ac7d6e645f5c195a
[root@docker ~]# docker pull 192.168.200.20:5000/centos:7
7: Pulling from centos
Digest: sha256:7a34258489e0bc4049641cd821aa18f2740a8d62c5a72b70ac7d6e645f5c195a
Status: Downloaded newer image for 192.168.200.20:5000/centos:7
192.168.200.20:5000/centos:7
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.200.20:5000/centos 7 4240ca40f3e8 5 minutes ago 589MB
centos 7 4240ca40f3e8 5 minutes ago 589MB #构建Tomcat镜像
在Jenkins和docker上安装jdk;
[root@docker ~]# tar xf jdk-8u191-linux-x64.tar.gz
[root@docker ~]# mv jdk1.8.0_191 /usr/local/java
[root@docker ~]# vim Dockerfile
FROM centos:7
MAINTAINER crushlinux ENV VERSIOL=8.5.16
ENV JAVA_HOME /usr/local/java ADD ./apache-tomcat-${VERSION}.tar.gz /tmp
RUN cd /tmp && \
mv apache-tomcat-${VERSION} /usr/local/tomcat && \
rm -rf apache-tomcat-$(VERSION).tar.gz /usr/local/tomcat/webapps/* && \
mkdir /usr/local/tomcat/webapp/ROOT EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"] [root@docker ~]# docker build -t 192.168.200.20:5000/tomcat-85 . //构建镜像

最新文章

  1. DBCP数据库连接池
  2. Exceeded maximum number of retries. Exceeded max scheduling attempts 3 for instance 7d90eb80-29e2-4238-b658-ade407ff9456. Last exception: [u'Traceback (most recent call last):\n', u' File "/usr/lib/py
  3. COALESCE函数
  4. Repeater中添加按钮,点击按钮获取某一行的数据
  5. 转:C# 中的委托和事件
  6. tomcat 部署web项目异常
  7. 使用LINQ的几个小技巧
  8. CodeForces 698B Fix a Tree
  9. void 0 === undefined
  10. NYOJ 2357: 插塔憋憋乐 贪心
  11. 数据库学习番外篇 神奇的Redis
  12. python主流测试框架的简介
  13. 除了/etc/init.d/加启动脚本 或者在/etc/rc.local中加启动命令,还可以通过crontab来完成服务器重启后自动启动服务的操作
  14. IDEA 调整 VM 配置文件(64位)
  15. BZOJ4813或洛谷3698 [CQOI2017]小Q的棋盘
  16. Ubuntu 14.04 + gnome session back (metacity) 任务栏右上角图标消失问题解决
  17. English Words Type
  18. JVM知识(一):基础原理
  19. Hive中Join的类型和用法
  20. js的class属性获取、增加、移除

热门文章

  1. nginx的优化及防盗链
  2. React.CreateContext
  3. c语言中定义局部变量不赋初值默认
  4. Kongmaster
  5. unittest框架-测试报告模板【BeautifulReport】安装、配置使用、生成带截图的测试报告
  6. pr导出mp4格式提示无法播放解决方案
  7. MySQL无法同时执行多条语句解决办法 Dbeaver
  8. python_lib_0001_decorator_print_log
  9. Self-Attention学习
  10. 关于github的自动化检测