本文主要講述如何使用Jenkins?Gitlab等 ,?如果你不會安裝請訪問我之前寫的文章
打開Gitlab并登錄,沒有賬號自己注冊一個

Create a project?創(chuàng)建一個項目

Project?name?輸入項目名,其他信息按實際情況填寫,這里做演示我就默認了

創(chuàng)建完項目后?在底下會有提示告訴如何上傳文件到這個項目

按照提示創(chuàng)建README.md文件并提交
ludz@DESKTOP-SQN1UE3 MINGW64 /e/gitlab/簡書
$ git config --global user.name "ludzh"
ludz@DESKTOP-SQN1UE3 MINGW64 /e/gitlab/簡書
$ git config --global user.email "ludzh@neusoft.com"
ludz@DESKTOP-SQN1UE3 MINGW64 /e/gitlab/簡書
$ git clone http://10.10.167.106:21000/dezhenglu/jenkins-gitlab-demo.git
Cloning into 'jenkins-gitlab-demo'...
warning: You appear to have cloned an empty repository.
ludz@DESKTOP-SQN1UE3 MINGW64 /e/gitlab/簡書
$ cd jenkins-gitlab-demo
ludz@DESKTOP-SQN1UE3 MINGW64 /e/gitlab/簡書/jenkins-gitlab-demo (master)
$ touch README.md
ludz@DESKTOP-SQN1UE3 MINGW64 /e/gitlab/簡書/jenkins-gitlab-demo (master)
$ git commit -m "add README"
On branch master
Initial commit
Untracked files:
? ? ? ? README.md
nothing added to commit but untracked files present
ludz@DESKTOP-SQN1UE3 MINGW64 /e/gitlab/簡書/jenkins-gitlab-demo (master)
$ git add README.md
ludz@DESKTOP-SQN1UE3 MINGW64 /e/gitlab/簡書/jenkins-gitlab-demo (master)
$ git commit -m "add README"
[master (root-commit) 2b0f013] add README
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
ludz@DESKTOP-SQN1UE3 MINGW64 /e/gitlab/簡書/jenkins-gitlab-demo (master)
$ git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 212 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://10.10.167.106:21000/dezhenglu/jenkins-gitlab-demo.git
* [new branch]? ? ? master -> master
Branch master set up to track remote branch master from origin.
ludz@DESKTOP-SQN1UE3 MINGW64 /e/gitlab/簡書/jenkins-gitlab-demo (master)
$
刷新剛才的頁面,OK提交代碼沒問題了

稍后在上傳代碼,先來配置下Gitlab?生成一個API?Token ,位置在?User Settings?>?Access Tokens

Name?隨意?Expires at?是到期時間,默認應(yīng)該是永不過期,Scopes都選上,然后創(chuàng)建Token

Your New Personal Access Token?中就是創(chuàng)建好的Token串?復(fù)制出來備用

下面一點是Token的信息?Revoke?是撤銷(刪除)

打開Jenkins

認證那里追加一個認證,把剛才的Token復(fù)制進去,Kind選擇Gitlab API Token

輸入其他參數(shù)并測試顯示Success表示成功

現(xiàn)在Jenkins還不能直接拉取Gitlab上的代碼需要在Gitlab上設(shè)置SSH?Key,?在Gitlab項目頁面上會出現(xiàn)提示

如果不小心點了忽略在User Settings > SSH Keys?也可以設(shè)置不用擔(dān)心

創(chuàng)建key
ssh-keygen -t rsa -C "ludzh@neusoft.com" -b 4096
把公鑰文件打開復(fù)制里面的內(nèi)容復(fù)制到key里

SSH key?也是可以刪除的

現(xiàn)在回到Jenkins首頁,創(chuàng)建一個任務(wù)

Repository URL?里寫項目Gitlab地址
在Credentials?里追加一個配置

輸入用戶名并在私有key里選擇文件填寫剛才創(chuàng)建的私鑰文件,ID?和描述應(yīng)該可以隨意

之后輸入倉庫Url?選擇上一步建的認證信息

應(yīng)用&保存,點擊立即構(gòu)建

構(gòu)建結(jié)束后在工作空間里能看到Pull下來的代碼

到此為止Jenkins可以從Gitlab上抓取代碼了,現(xiàn)在我們把演示代碼上傳,這里使用Github?Desktop

刷新Gitlab應(yīng)該能看到剛剛上傳的文件

回到Jenkins剛才創(chuàng)建的任務(wù)里?構(gòu)建選項卡-添加構(gòu)建步驟-調(diào)用頂層的Maven目標(biāo)

Apply&Save&立即構(gòu)建

出錯了,看提示應(yīng)該是Maven構(gòu)建失敗找不到對應(yīng)的jar包,我這個機器處于內(nèi)網(wǎng)要設(shè)置代理

設(shè)置遠程倉庫

再次構(gòu)建

OK?構(gòu)建成功了

剛才構(gòu)建的工程jar文件

到此Jenkins拉取代碼并構(gòu)建已經(jīng)完成了,現(xiàn)在來做自動部署,
創(chuàng)建發(fā)布的位置
mkdir?/home/cmreadwh/cip/jenkins_demo
cd /home/cmreadwh/cip/jenkins_demo
增加構(gòu)建步驟選執(zhí)行Shell
cp $JENKINS_HOME/workspace/jenkins-gitlab-demo/target/dockerdemo-0.0.1-SNAPSHOT.jar /home/cmreadwh/cip/jenkins_demo
$JENKINS_HOME?是Jenkins的內(nèi)部變量對應(yīng)我機器位置是/用戶/.jenkins

在發(fā)布路徑下創(chuàng)建停止和啟動腳本文件
#!將應(yīng)用停止
#!stop.sh
#!/bin/bash
echo "Stopping SpringBoot Application"
pid=`ps -ef | grep dockerdemo-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
#!kill -9 強制終止
? echo "kill -9 的pid:" $pid
? kill -9 $pid
fi
#!startup.sh
java -jar dockerdemo-0.0.1-SNAPSHOT.jar
再創(chuàng)建一個構(gòu)建步驟依舊是執(zhí)行Shell

腳本的內(nèi)容很簡單,我就不做介紹了網(wǎng)上都有介紹
最后?apply &?save &?立即構(gòu)建
構(gòu)建隊列里可以點進去控制臺輸出可以看到詳細日志

構(gòu)建完畢并成功執(zhí)行了剛才寫的啟動停止腳本

訪問程序的地址,看看程序起來沒有

程序啟動正常,?緊接著我要配置Webhook?實現(xiàn)push代碼自動部署,我會寫在我下一篇文章里