Git+Jenkins+docker的持續集成環境構建
工作步驟思路(下圖所示)
1.server1搭建好git倉庫和用docker搭建好docker鏡像倉庫
2.server3用git命令去別的共用倉庫拉取tale的源碼,再上傳到git倉庫
3.server3製作好nginx配置好的docker鏡像(這裏我是用java命令去運行jar包的方式,所以不需要安裝tomcat去支持)
4.server2部署Jenkins,用插件從server1的git倉庫拉取tale的源碼文件,再通過ssh發送到server3
5.server2上的Jenkins使用插件等功能用一個腳本在server3上部署tale博客系統到docker容器裏然後運行容器
注意事項:
1.注意你自己的部署環境,jdk路徑什麼的,按照你的環境修改有的操作裏面的參數,
2.還有是就是Jenkins下載插件版本兼容的問題,我這裏Jenkins的版本是2.238,還有就是jdk跟maven之間的版本兼容問題,可以去網上搜一下它們兼容性
3.Jenkins下載插件的時候有沒有下載成功,這個需要注意一下
環境部署
192.168.11.25:gitlab服務器、docker搭建registry鏡像倉庫
需要安裝的軟件:git、docker
192.168.11.26:Jenkins服務器
需要安裝的軟件:git、jdk、maven、tomcat、jenkins.war
192.168.11.27:git客戶端、web服務器
需要安裝的軟件:git、jdk、docker
一、安裝部署GitLab服務器或者用git構建代碼倉庫服務器還有docker的鏡像倉庫(這裏建議服務器4G內存或者以上):192.168.11.25
注意:我這裏用的是下載git去部署本地代碼倉庫服務器
方法一:GitLab服務器
配置YUM倉庫
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
yum安裝gitlab-ce:yum -y install gitlab-ce
加載配置文件並啓動:gitlab-ctl reconfigure
啓動服務:gitlab-ctl start
啓動服務確定下面的狀態正確(如下圖所示)
其他的服務操作命令
啓動:gitlab-ctl start
關閉:gitlab-ctl stop
重啓:gitlab-ctl restart
重載配置:gitlab-ctl reconfigure
查看狀態:gitlab-ctl status
然後進入該ip地址進行訪問網頁
方法二:git構建本地倉庫
安裝git構建本地倉庫
yum -y install git
mkdir mygit.git
cd mygit.git
git --bare init
下載docker並運行registry鏡像搭建docker鏡像倉庫
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce-18.09.6
systemctl start docker && systemctl enable docker
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name rregistry registry
二、客戶端安裝git下載tale項目包,再上傳到gitlab服務器上:192.168.11.27
yum -y install git
生成私鑰傳給gitlab服務器
ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa [email protected]
下載項目包上傳
mkdir git
cd git
git config --global user.name "admin"
git config --global user.email "[email protected]"
git clone https://github.com/otale/tale.git
git clone [email protected]:/root/mygit.git
用戶和密碼爲登錄時的用戶和密碼
#到克隆的空庫下
cd mygit/
#把下載的項目包裏面的文件拷貝進來
mv ../tale/* ./
#添加當前目錄全部文件提交上傳
git add .
git commit -m "add project tale"
git push origin master
三、安裝配置Jenkins服務器:192.168.11.26
1.安裝配置好jdk
tar zxf jdk-8u91-linux-x64.tar.gz
mv jdk1.8.0_91 /usr/local/jdk1.8
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
source /etc/profile
查看java版本查看是否安裝成功:java -version
2.安裝配置maven
tar zxf apache-maven-3.6.3-bin.tar.gz
mv apache-maven-3.6.3 /usr/local/maven3.6.3
vim /etc/profile
export MAVEN_HOME=/usr/local/maven3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
source /etc/profile
查看是否安裝成功:mvn -v
3.安裝配置好tomcat
tar zxf apache-tomcat-8.5.55.tar.gz
mv apache-tomcat-8.5.55 /usr/local/tomcat8
/usr/local/tomcat8/bin/startup.sh
訪問網頁8080端口查看是否安裝成功(如下圖)
4.部署Jenkins到tomcat
下載jenkins.war文件把它移動到安裝tomcat的webapps目錄下(我這裏的目錄路徑是/usr/local/tomcat8/webapps/)
mv jenkins.war /usr/local/tomcat8/webapps/
到安裝tomcat的webapps目錄下用工具安裝
cd /usr/local/tomcat8/webapps/
java -jar jenkins.war --httpPort=8080
然後訪問網頁8080端口的jenkins目錄(如下圖)
系統管理—》插件管理—》高級
配置站點源(如下圖)
http://updates.jenkins.io/update-center.json
http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
這兩個網址都可以,點擊提交再立即獲取
然後點擊可選插件搜索插件進行下載安裝
系統管理—》插件管理—》可下載鏡像
需要下載的插件
Localization: Chinese (Simplified)
Maven Integration plugin
Publish Over SSH
Git client
Git Parameter
5.下載git工具(因爲需要去服務器下拉代碼)
yum -y install git
6.最好做下其他兩臺計算機的免密登錄(這裏在Jenkins網頁配置上也會做)
ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa [email protected]
ssh-copy-id -i /root/.ssh/id_rsa [email protected]
四、部署web服務器(這裏用docker實現):192.168.11.27
1.下載安裝docker
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce-18.09.6
systemctl start docker && systemctl enable docker
2.安裝jdk
tar zxf jdk-8u91-linux-x64.tar.gz
mv jdk1.8.0_91 /usr/local/jdk1.8
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
source /etc/profile
3.安裝unzip(因爲後面打包需要解壓tale.zip把裏面的.jar文件丟到工作目錄中)
yum -y install unzip
4.構建tale鏡像
mkdir docker_tale && cd docker_tale/
vim Dockerfile
FROM centos:7
RUN yum install epel-release -y
RUN yum install nginx supervisor -y && yum clean all
RUN sed -i '47a proxy_pass http://127.0.0.1:9000;' /etc/nginx/nginx.conf
COPY supervisord.conf /etc/supervisord.conf
ENV PATH /usr/local/jdk1.8/bin:$PATH
WORKDIR /tale
CMD ["/usr/bin/supervisord"]
vim supervisord.conf
[supervisord]
nodaemon=true
[program:tale]
command=/usr/local/jdk/bin/java -jar /tale/tale-latest.jar
autostart=true
autorestart=true
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
autostart=true
autorestart=true
docker build -t tale:base .
查看鏡像是否創建成功如下圖
docker tag tale:base 192.168.11.25:5000/tale:base
docker push 192.168.11.25:5000/tale:base
mkdir -p /data/tale
要創建一個/data目錄下面一個tale目錄,因爲後面配置Jenkins的時候會把項目傳到/data目錄下,然後把/data/tale這個目錄映射到docker容器裏面的工作目錄下
五、配置Jenkins:192.168.11.26網頁上配置
系統管理—》系統設置
注意:這裏最好把其他兩臺服務器的ssh都做
系統管理—》Global Tool Configuration
創建一個maven項目進行運行,自動部署到服務器上
這裏是寫的是git倉庫的地址,從哪裏去拖取源碼
這裏跟linux裏的crontab一樣,計劃週期讓Jenkins不斷去git倉庫看代碼是否更新
這裏記得添加clean package
這裏是用ssh寫一個腳本在別的服務器上運行
這裏可以寫腳本去啓動docker把本地的/data/tale目錄映射到docker容器裏的/tale目錄下,因爲上面寫Daockerfile的時候編輯的工作目錄就是docker裏的/tale目錄下,再把外面的jdk映射到docker容器中(腳本內容看下面)
docker rm -f tale-test
unzip /data/tale.zip -d /data/tale/
docker run -itd \
--name tale-test \
-p 80:80 \
-v /usr/local/jdk1.8:/usr/local/jdk \
-v /data/tale:/tale \
192.168.11.25:5000/tale:base
測試:訪問網頁查看是否自動部署完成