• 基于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 .  //构建镜像
    
    
  • 相关阅读:
    oracle的安装与plsql的环境配置
    Working with MSDTC
    soapui-java.lang.Exception Failed to load url
    Oracle 一个owner访问另一个owner的table,不加owner
    Call API relation to TLS 1.2
    Call API HTTP header Authorization: Basic
    VS2008 .csproj cannot be opened.The project type is not supported by this installat
    The changes couldn't be completed.Please reboot your computer and try again.
    Create DB Table View Procedure
    DB Change
  • 原文地址:https://www.cnblogs.com/wml3030/p/15508853.html
Copyright © 2020-2023  润新知