2使用Jenkins+Gitlab+Maven 構(gòu)建持續(xù)集成環(huán)境

本文主要講述如何使用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代碼自動部署,我會寫在我下一篇文章里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容