前言
- 購(gòu)買(mǎi)服務(wù)器
- 重做系統(tǒng) CentOS7.5
- 遠(yuǎn)端SSH登錄服務(wù)器
- 發(fā)車(chē)
打個(gè)廣告 ~ 移動(dòng)端離線(xiàn)鑒黃實(shí)現(xiàn),可移植到多個(gè)平臺(tái),讓鑒黃付費(fèi)不存在~ open_nsfw
更新yum源
yum update
安裝必要軟件
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
設(shè)置yum下載源為阿里倉(cāng)庫(kù)(網(wǎng)速ok的可以省略這一步)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看倉(cāng)庫(kù)中所有的docker版本
yum list docker-ce --showduplicates | sort -r
選擇一個(gè)版本進(jìn)行安裝(下面的xxxx換成要安裝的docker)
sudo yum install xxxx
等待安裝結(jié)束后,啟動(dòng)docker 并設(shè)置docker開(kāi)機(jī)自啟,代碼如下
sudo systemctl start docker && sudo systemctl enable docker
查看docker版本
docker version
安裝項(xiàng)目需要的軟件,我項(xiàng)目需要redis和mysql,以下為示例命令,需要其他軟件的可參考以下命令
- 下載redis鏡像
docker pull redis
- 啟動(dòng)redis(--name 名稱(chēng)設(shè)置為redis,-p 映射主機(jī)端口 6379到redis容器內(nèi)部6379端口,這里注意到服務(wù)器配置頁(yè)面開(kāi)放6379端口,否則訪(fǎng)問(wèn)了容器內(nèi)部的redis,--requirepass 密碼,-d表示容器后臺(tái)運(yùn)行 ,-v掛載目錄 讓容器時(shí)間與服務(wù)器同步 )
docker run -d -v /etc/localtime:/etc/localtime --name redis -p 6379:6379 redis --requirepass 123456
啟動(dòng)成功后用 docker ps 命令可以查看當(dāng)前運(yùn)行的容器
同樣的方式下載安裝Mysql
docker pull mysql
- 啟動(dòng)mysql(服務(wù)器開(kāi)啟3306端口)
docker run -p 3306:3306 -v /etc/localtime:/etc/localtime --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
- 啟動(dòng)成功后用 docker ps 命令可以查看當(dāng)前運(yùn)行的容器
現(xiàn)在遠(yuǎn)端可以使用響應(yīng)工具鏈接MySQL和Redis了
同上方式安裝Jenkins
- 下載jenkins鏡像
docker pull jenkins/jenkins:lts
- 創(chuàng)建文件夾來(lái)掛載jenkins目錄
mkdir /home/jenkins_home
- 啟動(dòng)jenkins并掛載目錄(-u root是以管理員模式運(yùn)行容器,因?yàn)榈葧?huì)要進(jìn)入容器內(nèi)部用到管理員命令,同樣記得開(kāi)放8080和50000端口,這里我多開(kāi)了兩個(gè)端口,因?yàn)槲覝?zhǔn)備把項(xiàng)目直接掛到j(luò)enkins所在的容器,所以項(xiàng)目用到的端口我也要開(kāi)啟一下)
docker run -u root -d -v /etc/localtime:/etc/localtime --name jenkins -p 80:80 -p 443:443 -p 8888:8080 -p 50000:50000 -v /home/jenkins:/home/jenkins jenkins/jenkins:lts
-
啟動(dòng)成功,在瀏覽器訪(fǎng)問(wèn)你的IP地址+端口號(hào)就可以訪(fǎng)問(wèn)到j(luò)enkins頁(yè)面了
home.png 需要一個(gè)管理員密碼,用如下命令進(jìn)入容器后獲取。
docker exec -it jenkins bash
- 獲取管理員密碼
cat /var/jenkins_home/secrets/initialAdminPassword
-
復(fù)制密碼并輸入密碼后進(jìn)入下一步,按照提示選擇推薦的插件基礎(chǔ)包安裝
azcj.png
- 讓它慢慢搞事情,我們先去搞點(diǎn)別的事情
- 打開(kāi)github你的項(xiàng)目主頁(yè) ->>Setting ->>Webhooks ->> Add webhook 填寫(xiě)下面的地址
http://你的服務(wù)器地址:8080/jenkins/github-webhook
- ContentType選擇application/json
- Just the push event 打勾
- Active打勾,保存
- 點(diǎn)擊github右上角個(gè)人設(shè)置按鈕,以此選擇 Settings ->> Developer settings ->>Personal access tokens ->> New personal access token
- 名字隨便起一個(gè),選擇授于的權(quán)限 repo 和 gist打勾,點(diǎn)擊生成,返回后復(fù)制生成的token備用(下次進(jìn)入頁(yè)面就看不到了,復(fù)制到安全的地方)
- 回頭看看jenkins插件下載完了沒(méi).... 還沒(méi)完,不要著急。咱們?cè)俑牲c(diǎn)別的事,在gradle中添加幾個(gè)命令待用
bootJar {
doFirst {
println 'Start BootJar task...'
baseName = 'wb-spring-boot'
version = '1.3'
}
doLast {
println 'BootJar success.'
}
}
}
再看下插件下完沒(méi),還沒(méi)下完... 我去刷一會(huì)皮皮蝦。
刷不動(dòng)了,快十點(diǎn)了?;丶宜X(jué)了,明天再更。
-
時(shí)隔一晚終于下完了,我們繼續(xù)... 設(shè)置一個(gè)管理員賬號(hào)和密碼,以后登錄就直接用設(shè)置的這個(gè)賬號(hào)和密碼了。
szmm.png 點(diǎn)擊保存并完成,一路下一步
-
點(diǎn)擊左邊的系統(tǒng)管理 ->> Manage Jenkins ->> configure system對(duì)github進(jìn)行配置
addgithub.png -
隨便起個(gè)名字,點(diǎn)擊添加,復(fù)制我們?cè)趃ithub生成的token。上面有說(shuō),往上翻翻
addtoken.png -
如下圖操作,選擇剛才添加的token,點(diǎn)擊測(cè)試,出現(xiàn)下圖的字符表示添加成功
addgsucc.png 點(diǎn)擊左下角的保存
接下來(lái)創(chuàng)建項(xiàng)目 ,點(diǎn)擊創(chuàng)建一個(gè)新任務(wù)
輸入一個(gè)項(xiàng)目名稱(chēng),按下圖選擇后點(diǎn)擊確定

- 配置倉(cāng)庫(kù) ->> 源碼管理->>Git 輸入項(xiàng)目地址 ->>添加git賬號(hào)(用戶(hù)名)和密碼

選擇剛才添加的賬號(hào) 選擇后會(huì)有紅色異常,稍等會(huì)鏈接到倉(cāng)庫(kù)后就沒(méi)了,如果一直紅色警告,檢查你的賬號(hào)和密碼,或者檢查你的服務(wù)器是否安裝了git。這里出問(wèn)題留言,我協(xié)助你解決。
再往下走 構(gòu)建觸發(fā)器選擇 GitHub hook trigger for GITScm polling ,因?yàn)槲覀円谔峤淮a后由github通知jenkins構(gòu)建
-
構(gòu)建環(huán)境按照下圖標(biāo)示選擇
gj.png 安裝gradle并配置環(huán)境變量
進(jìn)入jenkins容器
docker exec -it jenkins bash
- 進(jìn)入根目錄
cd /
- 我下載4.8的gradle,你根據(jù)需要來(lái)
wget https://downloads.gradle.org/distributions/gradle-4.8-all.zip
- 下載好了后就在當(dāng)前目錄下,我為了方便就在容器根目錄下下載的,直接解壓
unzip gradle-4.8-all.zip
- 刪除壓縮文件
rm -rf gradle-4.8-all.zip
- 安裝vim命令
apt-get update
apt-get install vim
- 配置環(huán)境變量
vim /etc/profile
- 加入下面的內(nèi)容 別想了,復(fù)制不了,手動(dòng)寫(xiě)一下吧

- 算了還是讓你拷貝一下吧
PATH=$PATH:/gradle-4.8/bin
export PATH
- 按退出鍵 輸入:wq 敲回車(chē)保存
- 讓剛才修改的環(huán)境變量生效
source /etc/profile
- 查看gradle版本
gradle -v
- 看到版本表示成功了
Welcome to Gradle 4.8!
Here are the highlights of this release:
- Dependency locking
- Maven Publish and Ivy Publish plugins improved and marked stable
- Incremental annotation processing enhancements
- APIs to configure tasks at creation time
For more details see https://docs.gradle.org/4.8/release-notes.html
------------------------------------------------------------
Gradle 4.8
------------------------------------------------------------
Build time: 2018-06-04 10:39:58 UTC
Revision: 9e1261240e412cbf61a5e3a5ab734f232b2f887d
Groovy: 2.4.12
Ant: Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM: 1.8.0_232 (Oracle Corporation 25.232-b09)
OS: Linux 3.10.0-1062.1.1.el7.x86_64 amd64
-
添加gradle變量進(jìn)jenkins 系統(tǒng)管理 ->>系統(tǒng)工具配置 ->> 新增gradle
addgradle.png -
構(gòu)建內(nèi)容添加兩個(gè),第一個(gè)選擇invoke Gradle script 第二個(gè)選擇執(zhí)行shell,圖中的copyJavaFile可以去掉,是我自己的邏輯。
add2.png 第二個(gè)執(zhí)行shell 填寫(xiě)下面的腳本
#!/bin/bash
echo 打包成功,開(kāi)始運(yùn)行jar;
#進(jìn)程處理
/bin/fuser -k -n tcp 80
BUILD_ID=DONTKILLME
java -jar /var/jenkins_home/workspace/WB-Service/build/libs/wb-spring-boot-1.3.jar &
echo 構(gòu)建成功
- 這里腳本中可能還需要個(gè)工具 psmisc,進(jìn)入容器后安裝
docker exec -it jenkins bash
- 安裝psmisc
apt-get install psmisc
- 查詢(xún)引用路徑(注意替換腳本中/bin/fuser的路徑,一般情況不用替換)
root@df727b881c6f:/# whereis fuser
fuser: /bin/fuser /usr/share/man/man1/fuser.1.gz
root@df727b881c6f:/#
-
回到j(luò)enkins配置頁(yè)面,點(diǎn)擊保存,立即構(gòu)建 (這里的項(xiàng)目目錄替換腳本中的jar執(zhí)行路徑)
git_last.png 我失敗三次了...兄弟你呢? 不能忍,搞點(diǎn)事情,直接把項(xiàng)目復(fù)制到j(luò)enkins工作目錄中吧..
先將項(xiàng)目打包,copy到服務(wù)器的根目錄下(windows 用winscp工具蠻好的 mac的話(huà)也有類(lèi)似的,我用的SecureFX,直接拖到服務(wù)器根目錄下)
將服務(wù)器根目錄下的文件copy進(jìn)容器內(nèi)部。這里需要注意,會(huì)用到容器的長(zhǎng)ID,不是短ID。首先用如下命令查看運(yùn)行的容器
docker ps
- 根據(jù)容器名稱(chēng)查詢(xún)長(zhǎng)ID(命令:docker inspect -f '{{.ID}}' +容器名稱(chēng))
docker inspect -f '{{.ID}}' jenkins
- copy進(jìn)容器中,(命令:docker cp + 服務(wù)器中的文件 + 剛才查詢(xún)到的容器長(zhǎng)ID + : + 容器中的路徑)容器路徑填寫(xiě)工作空間的路徑
docker cp WB-Service.zip 42b70191d27fcf0164abb36e33e223da52e306d49d6d5348e55663caac96bb82:/var/jenkins_home/workspace/
- 進(jìn)入容器
docker exec -it jenkins bash
- 解壓文件夾并重命名文件夾為工作空間的名稱(chēng)
cd /var/jenkins_home/workspace/
- 解壓
unzip WB-Service.zip
- 停止正在構(gòu)建的項(xiàng)目 刪除原工作目錄
rm -rf WB-Service
- 將解壓出來(lái)的項(xiàng)目名稱(chēng)變更為空間名稱(chēng),就是你在新建jenkins任務(wù)的時(shí)候?qū)懙哪莻€(gè)
mv wb-spring-boot-project WB-Service
-
進(jìn)入jenkins首頁(yè),點(diǎn)擊工作空間你就可以看到你的項(xiàng)目了
pro.png 這時(shí)候再次點(diǎn)擊立即構(gòu)建,jenkins把本地工作空間的內(nèi)容和github的一對(duì)比就好了,因?yàn)榛緵](méi)有改動(dòng)。直接進(jìn)入下一步。
立即構(gòu)建

-
從項(xiàng)目中提交一個(gè)改動(dòng)。這邊就自動(dòng)觸發(fā)編譯并且部署了。
push1.png












