zoukankan      html  css  js  c++  java
  • 基于Jenkins实现可腹部回滚的cicd平台

    • 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 .  //构建镜像
    
    
  • 相关阅读:
    模块移植-加宏选择性编译
    模块-各个模块的路径所在
    ubuntu-系统卡慢解决(转载)
    meld文件的脚本
    artTemplate模板引擎
    前端完全分离和前端不完全分离
    px em rem的区别
    原型和原型链
    阻止默认事件
    document.ready和onload的区别
  • 原文地址:https://www.cnblogs.com/wml3030/p/15508853.html
Copyright © 2011-2022 走看看