1. 程式人生 > 其它 >基於Jenkins實現可腹部回滾的cicd平臺

基於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 [email protected]
[root@jenkins ~]# ssh [email protected]  #測試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 [email protected]:/home/git/probe.git

#提交git倉庫並建立tag
[root@jenkins psi-probe]# git add . 
[root@jenkins psi-probe]# git config --global user.email "[email protected]"
[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 [email protected]:/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 .  //構建映象