安装GitLab,Jenkins,及自动化上线
目錄
一.DevOps簡介
1.什么是持續(xù)集成(CI-Continuous integration)
2.什么是持續(xù)部署(CD-continuous deployment)
3.什么是持續(xù)交付(Continuous Delivery)
二.GitLLab安裝與應(yīng)用【yum安裝】
1.安裝前準備
2.先安裝依賴包
3.裝包(注意版本自定義)
4.gitlab相關(guān)的目錄
5.修改配置并初始化及驗證
6.常用命令及例子
三.GitLab容器安裝
1.防火墻、SELinux
2.修改sshd默認端口
3.準備容器環(huán)境
4.創(chuàng)建數(shù)據(jù)目錄
5.啟動容器
四.GitLab網(wǎng)頁操作
1.用瀏覽器訪問GitLab頁面,
2.配置GitLab
五.客戶端測試
1.查看倉庫地址
2.客戶端使用密碼管理GitLab項目
3.SSH免密上傳
1)客戶端生成SSH密鑰
2)使用用戶登錄GitLab
3)上傳密鑰
4)使用密鑰管理GitLab項目
5)上傳靜態(tài)頁面代碼測試
六.yum部署Jenkins
1.設(shè)置防火墻和SELinux
2.安裝依賴軟件
3.部署、初始化Jenkins
4.管理Jenkins插件、系統(tǒng)配置
七docker安裝jenkins
1.安裝Jenkins
2.起容器準備
3.安裝
4.配置Jenkins
5.安裝插件
八.Jenkins項目管理
1.瀏覽器訪問
2.構(gòu)建(build)Jenkins項目
3.查看Jenkins拉取的代碼數(shù)據(jù)
4.修改項目配置
九.構(gòu)建分發(fā)服務(wù)器
1.安裝、配置FTP共享服務(wù)器
2.修改GitLab項目配置
十.自動化上線
1.安裝配置httpd;編寫上線腳本;完成整個工作流程
2.編寫自動化上線腳本
完成整理工作流程:
開發(fā)人員編寫代碼,將代碼上傳到GitLab服務(wù)器,Jenkins從GitLab服務(wù)器上面拉取最新代碼數(shù)據(jù)到本地,根據(jù)Jenkins項目配置,將代碼拉取到本地后,可以進行編譯、測試、打包等工作,最后將數(shù)據(jù)包寫入到共享服務(wù)器,應(yīng)用服務(wù)器最后從共享服務(wù)器拉取數(shù)據(jù)實現(xiàn)上線功能。
一.DevOps簡介
1.什么是持續(xù)集成(CI-Continuous integration)
持續(xù)集成是指多名開發(fā)者在開發(fā)不同功能代碼的過程當中,可以頻繁的將代碼行合并到一起并切相互不影響工作
2.什么是持續(xù)部署(CD-continuous deployment)
是基于某種工具或平臺實現(xiàn)代碼自動化的構(gòu)建、測試和部署到線上環(huán)境以實現(xiàn)交付高質(zhì)量的產(chǎn)品,持續(xù)部署在某種程度上代表了一個開發(fā)團隊的更新迭代速率
3.什么是持續(xù)交付(Continuous Delivery)
持續(xù)交付是在持續(xù)部署的基礎(chǔ)之上,將產(chǎn)品交付到線上環(huán)境,因此持續(xù)交付是產(chǎn)品價值的一種交付,是產(chǎn)品價值的一種盈利的實現(xiàn)。
開發(fā)自己上傳–最原始的方案 開發(fā)給運維手動上傳–運維自己手動部署 運維使用腳本復制–半自動化 結(jié)合web界面一鍵部署–自動化
二.GitLLab安裝與應(yīng)用【yum安裝】
1.安裝前準備
# 防火墻與selinux設(shè)置 ~]# firewall-cmd --set-default-zone=trusted ~]# setenforce 0 ~]# sed -i '/SELINUX/s/enforcing/permissive' /etc/selinux/config ? ## 修改sshd端口 # 因為git是通過SSH協(xié)議的形式訪問的,需要占22端口,而sshd服務(wù)也需要占22端口,所以需修改sshd服務(wù)端口 ~]# vim /etc/ssh/sshd_config Port 36000 ~]# service sshd restart # 注還需要準備443,80端口2.先安裝依賴包
~]# yum install -y vim gcc gcc-c++ wget net-tools lrzsz iotop lsof iotop bash-completion ~]# yum install -y curl policycoreutils openssh-server openssh-clients postfix3.裝包(注意版本自定義)
~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm ~]# yum -y install gitlab-ce* 安裝包官方下載地址:https://packages.gitlab.com/gitlab/gitlab-ce yum源清華大學下載地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ ? https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/4.gitlab相關(guān)的目錄
/etc/gitlab #配置文件目錄 /run/gitlab #運行pid目錄 /opt/gitlab #安裝目錄 /var/opt/gitlab #數(shù)據(jù)目錄 /var/log/gitlab #日志目錄5.修改配置并初始化及驗證
~]# vim /etc/gitlab/gitlab.rb external_url 'http://10.0.0.100' ?#修 改此行 # 增加下面行,可選郵件通知設(shè)置 gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "29308620@qq.com" gitlab_rails['smtp_password'] = "授權(quán)碼" gitlab_rails['smtp_domain'] = "qq.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = "29308620@qq.com"初始化服務(wù) 執(zhí)行配置并啟動服務(wù):
#修改完配置文件要執(zhí)行此操作 gitlab-ctl reconfigure驗證gitlab啟動完成
gitlab-ctl statusrun: gitaly: (pid 24753) 245s; run: log: (pid 24378) 310srun: gitlab-monitor: (pid 24824) 244s; run: log: (pid 24595) 283srun: gitlab-workhorse: (pid 24776) 245s; run: log: (pid 24448) 304srun: logrotate: (pid 24531) 296s; run: log: (pid 24530) 296srun: nginx: (pid 24472) 302s; run: log: (pid 24471) 302srun: node-exporter: (pid 24574) 290s; run: log: (pid 24573) 290srun: postgres-exporter: (pid 24847) 243s; run: log: (pid 24662) 275srun: postgresql: (pid 24204) 365s; run: log: (pid 24203) 365srun: prometheus: (pid 24832) 244s; run: log: (pid 24625) 281srun: redis: (pid 24144) 371s; run: log: (pid 24143) 371srun: redis-exporter: (pid 24610) 282s; run: log: (pid 24609) 282srun: sidekiq: (pid 24362) 312s; run: log: (pid 24361) 312srun: unicorn: (pid 24722) 250s; run: log: (pid 24322) 314s6.常用命令及例子
gitlab-rails #用于啟動控制臺進行特殊操作,如修改管理員密碼、打開數(shù)據(jù)庫控制臺( gitlab-rails dbconsole)等 gitlab-psql #數(shù)據(jù)庫命令行 gitlab-rake #數(shù)據(jù)備份恢復等數(shù)據(jù)操作gitlab-ctl #客戶端命令行操作行 gitlab-ctl stop #停止gitlab gitlab-ctl start #啟動gitlab gitlab-ctl restar #重啟gitlab gitlab-ctl status #查看組件運行狀態(tài) gitlab-ctl tail nginx #查看某個組件的日志首次登錄web頁面,必須先設(shè)置密碼,密碼要求最少8位
三.GitLab容器安裝
1.防火墻、SELinux
~]# firewall-cmd --set-default-zone=trusted ~]# setenforce 0 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/ssh/sshd_config2.修改sshd默認端口
因為Git是通過SSH協(xié)議形式訪問,后面需要啟動GitLab容器,該容器需要占用22端口,而電腦的sshd服務(wù)也需要占用22端口(端口沖突),所以需要提前修改sshd默認端口,將端口修改為2022
~]# vim /etc/ssh/sshd_config Port 2022 ~]# systemctl restart sshd~]# ssh -p 2022 192.168.4.20 (-p 可以放后面) #遠程測試注意:修改后需要重新登錄一次虛擬機(重新登錄需要指定端口)。
3.準備容器環(huán)境
# 準備yum源安裝docker ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ~]# yum clean all && yum repolist && yum makecache ## 安裝依賴 ~]# yum install -y vim gcc gcc-c++ wget net-tools lrzsz iotop lsof iotop bash-completion ~]# yum install -y curl policycoreutils openssh-server openssh-clients postfix # 安裝docker ~]# yum install -y docker-ce ~]# systemctl enable docker.service --now 此操作聯(lián)網(wǎng):~]# docker search gitlab-ce #查找 ~]# docker pull gitlab/gitlab-ce # 下載鏡像4.創(chuàng)建數(shù)據(jù)目錄
容器無法持久保存數(shù)據(jù),需要將真機目錄和容器目錄綁定,實現(xiàn)數(shù)據(jù)永久保存
~]# mkdir -p /srv/gitlab/{config,logs,data} ~]# ls /etc/resolv.conf # 必須要有該文件,默認linux有5.啟動容器
~]# docker run -d -h gitlab --name gitlab -p 443:443 -p 80:80 -p 22:22 --restart=always -v /data/gitlab/config:/etc/gitlab -v /data/gitlab/logs:/var/log/gitlab -v /data/gitlab/data:/var/opt/gitlab twang2218/gitlab-ce-zh# run 起容器 # -d 放入后臺 # -h是在容器內(nèi)的主機名 # --name 起一個容器名 # -p 映射端口 # --restart=always #(表示此容器自動開啟【關(guān)不了gitlab】) # -v 映射文件# 密碼查看(可忽略) ~]# docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password四.GitLab網(wǎng)頁操作
1.用瀏覽器訪問GitLab頁面,
http://172.17.64.9
初始化登錄密碼(用戶root/密碼如上,或自己修改)
首次登錄web頁面,必須先設(shè)置密碼,密碼要求最少8位
2.配置GitLab
1)創(chuàng)建用戶
?
?
?
添加密碼
?
測試登錄
2)創(chuàng)建組
將用戶加入到組
3)創(chuàng)建項目(類似于創(chuàng)建一個倉庫)
五.客戶端測試
1.查看倉庫地址
?
?
2.客戶端使用密碼管理GitLab項目
~]# yum -y install git # 配置hosts ~]# vim /etc/hosts 172.17.0.51 gitlab## 使用剛剛創(chuàng)建的用戶 ~]# git config --global user.name "kali" ~]# git config --global user.email "20236305@qq.com" # 或者使用管理員 ~]# git config --global user.name "Administrator" ~]# git config --global user.email "admin@example.com" ~]# git clone http://gitlab/devops/myproject.git# 示例 ~]# cd myproject ~]# touch README.md ~]# git add README.md ~]# git commit -m "add README" ~]# git push -u origin master Username for 'http://192.168.4.20': keke #這里輸入用戶名 Password for 'http://jerry@192.168.4.20': 123456789 #這里輸入密碼?
3.SSH免密上傳
1)客戶端生成SSH密鑰
在客戶端操作
~]# rm -rf /root/.ssh/known_hosts #刪除之前的ssh遠程記錄 ~]# ssh-keygen #生成ssh密鑰文件 ~]# cat ~/.ssh/id_rsa.pub # 查看密鑰文件 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPVwP8E7TtKha9H8Ec+CU2n19aIPo9sUa/pdM7gRaf0yG+BcdyQ7Hgi6pI51IhX6tat46L5tLkAY7urVeEmnPtUk/TVIUc0smJPXYKIggOCr2dDd9s1S02)使用用戶登錄GitLab
頁面用戶第一次登錄頁面需要重置一次密碼,密碼可以與舊密碼相同
3)上傳密鑰
4)使用密鑰管理GitLab項目
前面已經(jīng)用http的方式訪問過服務(wù)器的代碼倉庫了,這里把之前的http服務(wù)器信息刪除,使用ssh協(xié)議訪問(在客戶端操作)
?
~]# cd /root/myproject ~]# git remote -v origin http://gitlab/devops/myproject.git (fetch) origin http://gitlab/devops/myproject.git (push)# 刪除 ~]# git remote remove origin# 添加 ~]# git remote add origin git@gitlab:devops/myproject.git# 查看測試 ~]# git remote -v origin git@gitlab:devops/myproject.git (fetch) origin git@gitlab:devops/myproject.git (push)5)上傳靜態(tài)頁面代碼測試
~]# echo "hello world" > README.md ~]# git add . ~]# git commit -m "update" ~]# git push -u origin master## 導入一個項目測試(可以到github) ~]# dnf -y install unzip tar ~]# unzip www_template.zip ~]# cp -r www_template/* myproject/ ~]# cd myproject/ ~]# git add . ~]# git commit -m "web site" ~]# git push -u origin master ~]# git tag v1 # 打個標簽 ~]# git push -u origin v1查看定義的標簽
?
六.yum部署Jenkins
1.設(shè)置防火墻和SELinux
~]# firewall-cmd --set-default-zone=trusted ~]# setenforce 0 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config2.安裝依賴軟件
網(wǎng)頁下載Index of /jenkins/redhat-stable/ | 清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror
~]# rz -be [包] ~]# dnf -y install git postfix mailx java-11-openjdk ~]# systemctl enable postfix --now備注:Git(版本控制軟件)、postfix(郵件服務(wù)器軟件(發(fā)))、mailx(郵件客戶端軟件(收))、openjdk(Java JDK工具)
3.部署、初始化Jenkins
http://172.17.64.16:8080/login?
~]# dnf -y install ./jenkins-2.164.3-1.1.noarch.rpm ~]# systemctl enable jenkins ~]# systemctl start jenkins第一次訪問會提示初始密碼的位置(密碼在/var/lib/Jenkins/secrets/initialAdminPassword文件中)
~]# cat /var/lib/jenkins/secrets/initialAdminPassword 9424973edc06471aa268bb35c68f95cd這里選擇跳過不安裝插件
可以選擇不創(chuàng)建用戶
4.管理Jenkins插件、系統(tǒng)配置
1)重置管理員密碼。
使用新密碼重新登錄
2)插件管理。 查看插件列表
3)拷貝插件文件到Jenkins目錄,Jenkins插件目錄為插件目錄:/var/lib/jenkins/plugins/。
Jenkins插件文件在目錄:jenkins_plugins.tar.gz。
插件包含:中文插件、Git插件等。
官網(wǎng)Jenkins Plugins
可以到官網(wǎng)上下載插件包在拷貝到/var/lib/jenkins/plugins/
Apache HttpComponents Client 4.x API Plugin Command Agent Launcher Plugin Credentials Plugin Display URL API Git client plugin Git Parameter (Plug-In) Git plugin Trilead API Plugin Structs Plugin SSH Credentials Plugin Script Security Plugin SCM API Plugin Mailer Plugin Localization: Chinese (Simplified) Localization Support Plugin JSch dependency plugin JUnit Plugin(Junit SQL Storage Plugin) jQuery plugin JAXB plugin Oracle Java SE Development Kit Installer Plugin Pipeline: Step API Pipeline: SCM Step Pipeline: API # 注意下載插件得時候要注意是否有依賴得插件一起安裝了(害得我還一直找包) ~]# cp -rp jenkins_plugins/* /var/lib/jenkins/plugins/ ~]# chown jenkins.jenkins /var/lib/jenkins/plugins/ ~]# systemctl restart jenkins # 注意文件權(quán)限有網(wǎng)的情況下也可以直接安裝
?
如果在搜索區(qū)找不到時,記得查看安裝了的,有個時候會當依賴安裝掉
重新登錄Jenkins網(wǎng)頁控制臺
4)再次查看插件列表
5)調(diào)整系統(tǒng)設(shè)置,配置郵箱(測試的話可以不配置)
七docker安裝jenkins
1.安裝Jenkins
下載Jenkins,lts代表最新版
# 準備yum源安裝docker ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ~]# yum clean all && yum repolist && yum makecache ## 安裝依賴 ~]# yum install -y vim gcc gcc-c++ wget net-tools lrzsz iotop lsof iotop bash-completion ~]# yum install -y curl policycoreutils openssh-server openssh-clients postfix # 安裝docker ~]# yum install -y docker-ce ~]# systemctl enable docker.service --now # 下載鏡像 ~]# docker pull jenkins/jenkins:lts # 查看Jenkins鏡像 ~]# docker images ~]# docker inspect jenkins鏡像ID2.起容器準備
# 創(chuàng)建一個Jenkins目錄,用于容器內(nèi)目錄掛載宿主機 ~]# mkdir /data/jenkins_home ~]# chown -R 1000:1000 /data/jenkins_home3.安裝
# 安裝啟動Jenkins容器 ~]# docker run -d --name jenkins -p 8080:8080 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:lts; 備注: -d # 啟動在后臺 --name # 容器名字 -p # 端口映射(8081:宿主機端口,8080:容器內(nèi)部端口) -v # 數(shù)據(jù)卷掛載映射(/data/jenkins_home:宿主機目錄,/var/jenkins_home:容器目錄) jenkins/jenkins:lts # 鏡像 # 查看Jenkins啟動情況 ~]# docker ps | grep jenkins云服務(wù)器8080端口要開啟 因為本操作是在騰訊云ELB上進行安裝的,需要在安全組里開放8080此端口,咱自己用,最好還是指定下IP訪問Jenkins http://騰訊IP:8081
4.配置Jenkins
解鎖
在安裝完成后,默認生成了一個登錄密碼,首次登錄需要這個密碼。 密碼容器內(nèi)路徑:var/jenkins_home/secrets/initialAdminPassword 但是我們不是之前在宿主機掛載過目錄嗎,直接在宿主機就可以查看密碼了 查看密碼:然后復制粘貼即可
~]# cat /data/jenkins_home/secrets/initialAdminPassword5.安裝插件
推薦直接點左邊的推薦插件,看網(wǎng)速吧,慢的話半小時,但是至少是全的,省事
管理用戶創(chuàng)建 創(chuàng)建一個管理員賬戶,相當于admin
配置完成
八.Jenkins項目管理
1.瀏覽器訪問
Jenkins服務(wù)器8080端口。
默認Jenkins會拉取最新版本的代碼,這里的設(shè)置可以讓Jenkins拉取特定的分支或標簽(tag)的代碼
繼續(xù)設(shè)置Git參數(shù),定義Git倉庫的URL路徑,以及需要下載克隆的版本或分支
注:指定分支必須與上圖git參數(shù)一樣
如果是git init創(chuàng)建的git則需要在添加那輸入用戶與密鑰
?
?
2.構(gòu)建(build)Jenkins項目
首先需要找到剛剛常見的項目
???????
?
查看是否正確
查看操作
?
3.查看Jenkins拉取的代碼數(shù)據(jù)
默認Jenkins會加拉取的代碼數(shù)據(jù)保存到/var/lib/Jenkins/workspace/目錄
# 注意需一層一層看 ~]# ls /var/lib/jenkins/ ~]# ls /var/lib/jenkins/workspace/ ~]# ls /var/lib/jenkins/workspace/myweb/ # 如果此時拉取代碼可以發(fā)現(xiàn)位置還是這,并且會覆蓋 ~]# rm -rf /var/lib/jenkins/workspace/myweb/*## 容器查看 ~]# ls /data/jenkins_home/workspace/myweb4.修改項目配置
如果代碼有多個版本或分支,每次都將代碼拉取到相同位置,會產(chǎn)生數(shù)據(jù)覆蓋,我們可以修改項目配置,將不同的版本和分支數(shù)據(jù)保存到不同子目錄下。 點擊《配置》,重新修改Jenkins項目配置
1)為Jenkins項目添加附加動作行為,將代碼拉取輸出到子目錄(Check out to a sub-directory)
?
2)設(shè)置郵件通知,在構(gòu)建失敗時可以給特定人員發(fā)送郵件(測試的話可以不配置)
英文配置
?3)再次構(gòu)建項目,并查看數(shù)據(jù)。 重新構(gòu)建項目
# 這里就以容器為示例 # 先刪除 ~]# rm -rf /data/jenkins_home/workspace/myweb/*然后拉取
# 最后查看 ~]# ls myweb-v1九.構(gòu)建分發(fā)服務(wù)器
1.安裝、配置FTP共享服務(wù)器
1)設(shè)置防火墻、SELinux
~]# firewall-cmd --set-default-zone=trusted ~]# setenforce 0 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config安裝配置vsftpd、啟動服務(wù)
2.修改GitLab項目配置
1)修改項目配置,添加構(gòu)建步驟
2)編寫構(gòu)建腳本,腳本內(nèi)容如下
########### # 要求是搭建一個ftp然后把代碼拷貝到這個ftp文件中 ########### ## 如果是服務(wù)器的搭建的就可以這么寫 pkg_dir=/var/ftp/deploy/packages #定義變量pkg_dir,變量值為ftp共享目錄。 cp -r myweb-$web $pkg_dir #將jenkins拉取到/var/lib/Jenkins/workspace/myweb-$web目錄的數(shù)據(jù)拷貝的ftp共享目錄 rm -rf $pkg_dir/myweb-$web/.git #上一步拷貝過來的數(shù)據(jù)目錄下包含一個隱藏.git目錄,刪除該git倉庫目錄 cd $pkg_dir/ #cd到ftp共享目錄下 tar czf myweb-$web.tar.gz myweb-$web #將ftp共享目錄下的代碼數(shù)據(jù)打包 rm -rf myweb-$web #將ftp共享目錄下的代碼數(shù)據(jù)目錄刪除 md5sum myweb-$web.tar.gz | awk '{print $1}' > myweb-$web.tar.gz.md5 #校驗打包文件的HASH值(哈希值),并將結(jié)果寫入到一個文件中。 cd .. #返回上一級目錄 echo -n $web > ver.txt #將當前Git版本信息寫入ver.txt文件 ## 容器的寫法 # 1.在本地書寫腳本 ~]# vim ceshi.sh #!/bin/bash rm -rf myweb-$web/.git tar czf $web.tar.gz myweb-$web rm -rf myweb-$web md5sum $web.tar.gz | awk '{print $1}' > $web.tar.gz.md5 echo -n $web > ver.txt # 2.上傳容器并查看 ~]# docker cp ceshi.sh 29:./ ~]# docker exec -it 29 cat /ceshi.sh # 3.執(zhí)行如下操作3) # 4.書寫腳本執(zhí)行項目拉取 ~]# vim ceshi2.sh #!/bin/bash pkg_dir=/var/ftp/deploy/packages web_dir=/data/jenkins_home/workspace/myweb mv $web_dir/* $pkg_dir/3)重新構(gòu)建項目,查看數(shù)據(jù)
使用瀏覽器訪問FTP服務(wù),查看數(shù)據(jù)
十.自動化上線
1.安裝配置httpd;編寫上線腳本;完成整個工作流程
1)設(shè)置防火墻和SELinux
~]# firewall-cmd --set-default-zone=trusted ~]# setenforce 0 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config2)安裝、配置httpd。
~]# dnf -y install httpd wget tar #安裝httpd、tar和wget ~]# systemctl enable httpd --now #設(shè)置開啟自啟,并立刻啟動2.編寫自動化上線腳本
~]# vim web.sh #!/bin/bash #定義變量,指定FTP共享路徑 ftp_url=ftp://192.168.4.30/deploy #定義變量,指定網(wǎng)頁根路徑 web_dir=/var/www/html #定義函數(shù),行數(shù)名為down_file,該函數(shù)的作用是從FTP服務(wù)器下載代碼數(shù)據(jù)到網(wǎng)站根目錄 down_file(){ #獲取FTP服務(wù)器上面最新構(gòu)建的代碼版本號 #curl是基于命令行的瀏覽器,-s選項為靜默訪問,不顯示下載過程(可以自己對比不是用-s的差異)version=$(curl -s $ftp_url/ver.txt) # -s靜默模式不顯示 #將服務(wù)器上面的版本文件下載到web服務(wù)器的/var/www/html/目錄下 #wget為下載工具(如果沒有則需要安裝),-q選項為靜默模式下載,不顯示下載過程 #-O選項可以指定將文件下載到哪里,這里是下載到/var/www/html/ver.txtwget -q $ftp_url/ver.txt -O $web_dir/ver.txt #下載代碼數(shù)據(jù)的打包文件,根據(jù)前面獲取的版本號,下載對應(yīng)的版本數(shù)據(jù)打包文件wget -q $ftp_url/packages/myweb-$version.tar.gz -O $web_dir/myweb-$version.tar.gz #對下載下來的數(shù)據(jù)打包文件計算HASH值(哈希值),awk過濾僅顯示第一列數(shù)據(jù)結(jié)果hash=$(md5sum $web_dir/myweb-$version.tar.gz| awk '{print $1}') #使用curl訪問ftp服務(wù)器上面的HASH值ftp_hash=$(curl -s $ftp_url/packages/myweb-$version.tar.gz.md5) #對比本地和FTP服務(wù)的HASH值是否一致,如果不一致代表數(shù)據(jù)損壞了 #如果一致就可以解壓該數(shù)據(jù)包,將數(shù)據(jù)解壓到網(wǎng)站根目錄下/var/www/html/if [ "$hash" == "$ftp_hash" ];thentar -xf $web_dir/myweb-$version.tar.gz -C $web_dirfi }#判斷如果本地沒有/var/www/html/ver.txt文件,則直接調(diào)用前面的函數(shù)下載代碼數(shù)據(jù) if [ ! -f $web_dir/ver.txt ];thendown_file fi #盤如果本地有/var/www/html/ver.txt文件,則判斷本地版本文件和FTP版本文件是否一致 #一致就不再下載FTP的數(shù)據(jù),如果不一致則調(diào)用前面的函數(shù)下載新的代碼數(shù)據(jù)包 if [ -f $web_dir/ver.txt ];thenftp_ver=$(curl -s $ftp_url/ver.txt)local_ver=$(cat $web_dir/ver.txt)if [ "$ftp_ver" != "$local_ver" ];thendown_filefi fi ~]# chmod +x web.sh #添加可執(zhí)行權(quán)限 ~]# ./web.sh #執(zhí)行腳本總結(jié)
以上是生活随笔為你收集整理的安装GitLab,Jenkins,及自动化上线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GIT版本控制系统
- 下一篇: 使用Dockerfile创建一个tomc