Jenkins CI贯吓、CD入門操作

基于Jenkins拉取GitLab指定發(fā)行版本的SpringBoot代碼進行構(gòu)建發(fā)布到生產(chǎn)環(huán)境實現(xiàn)CD實現(xiàn)持續(xù)部署

image.png

準(zhǔn)備測試項目

準(zhǔn)備一個簡單的Spring boot 項目


image.png

Jenkins新建任務(wù)

image.png
image.png

Jenkins關(guān)聯(lián)Gitlab自動拉取最新代碼

image.png

ssh key 配置

進入容器生成新的ssh key

[root@localhost mytest]# docker exec -it jenkins bash
jenkins@790140a70e6f:/$ cd /var/jenkins_home/
jenkins@790140a70e6f:~$ ssh-keygen -t rsa -C "wangyuhao01@163.com" 
Generating public/private rsa key pair.
Enter file in which to save the key (/var/jenkins_home/.ssh/id_rsa): 
Created directory '/var/jenkins_home/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/jenkins_home/.ssh/id_rsa
Your public key has been saved in /var/jenkins_home/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:LJt2FmYqJFN6fUrn64TtXPgOTigPKLVwLwFJjNK+5Wo wangyuhao01@longfor.com
The key's randomart image is:
+---[RSA 3072]----+
|oo               |
|+o.              |
|+.  .            |
| ..o.. .         |
|. B+o + S        |
| +.X.. / o       |
|. +.= O X .      |
| .E. * O =       |
| .    ..*.o      |
+----[SHA256]-----+ 
[root@localhost data]# cd .ssh/
[root@localhost .ssh]# ls
id_rsa  id_rsa.pub

進入容器現(xiàn)在執(zhí)行下如下命令,否則直接使用ssh key 會報錯:

[root@localhost mytest]# docker exec -it jenkins bash
jenkins@790140a70e6f:/$ git ls-remote -h -- git@gitee.com:xiaolyuh/test.git HEAD
The authenticity of host 'gitee.com (212.64.63.190)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitee.com,212.64.63.190' (ECDSA) to the list of known hosts.

將公鑰配id_rsa.pub置到gitlab,私鑰id_rsa配置到j(luò)enkins全局憑據(jù).

image.png

image.png
image.png
image.png

執(zhí)行構(gòu)建&查看日志

image.png
image.png

通過日志我們可以發(fā)現(xiàn)jenkins將代碼拉取到了/var/jenkins_home/workspace/mytest1目錄,/var/jenkins_home/目錄我們已經(jīng)映射到了宿主機的/usr/local/docker/jenkins/data目錄,到這個目錄我們可以看到已經(jīng)拉取下來后的文件篷就。

image.png

配置Maven構(gòu)建代碼

將安裝好的maven和jdk映射到j(luò)enkins容器的數(shù)據(jù)卷中

mv /usr/local/maven/ /usr/local/docker/jenkins/data/
mv jdk1.8.0_361/ /usr/local/docker/jenkins/data/jdk

映射好后,我們可以到j(luò)enkins容器中的home目錄查看到maven和jdk近忙。


image.png

Jenkins配置Maven&JDK

image.png
image.png

/var/jenkins_home/maven/apache-maven-3.8.8就是剛剛映射到容器的maven地址竭业。

在任務(wù)上使用Maven構(gòu)建項目

image.png
image.png

重新構(gòu)建任務(wù)&日志

image.png
image.png

查看jar包

[root@localhost data]# docker exec -it jenkins bash
jenkins@790140a70e6f:/$ cd /var/jenkins_home/workspace/mytest1/spring-boot-student-devops/target
jenkins@790140a70e6f:~/workspace/mytest1/spring-boot-student-devops/target$ ls
classes            generated-test-sources  maven-status                                   spring-boot-student-devops-0.0.1-SNAPSHOT.jar.original
generated-sources  maven-archiver          spring-boot-student-devops-0.0.1-SNAPSHOT.jar  test-classes
jenkins@790140a70e6f:~/workspace/mytest1/spring-boot-student-devops/target$ 

將jar包推送到遠(yuǎn)程服務(wù)器&通過Docker打包部署

配置全局server服務(wù)

image.png
image.png

新增Docker打包和啟動所需的配置

image.png

在項目下新增docker文件夾,然后新增Dockerfile和docker-compose.yml文件
增加Dockerfile文件

# 設(shè)置依賴鏡像
FROM daocloud.io/library/java:8u40-jdk
# 拷貝jar到容器工作目錄
WORKDIR /usr/local/docker
COPY ./app.jar /usr/local/docker
# 啟動jar文件
CMD java -jar app.jar

增加docker-compose.yml文件

version: "3.1"
services:
  mytest:
    # 通過當(dāng)前目錄下的Dockerfile來構(gòu)建鏡像
    build:
      context: ./
      dockerfile: Dockerfile
    image: mytest:v1.0.0
    container_name: mytest
    ports:
      # 將容器80端口映射到宿主機80端口映上
      - 8081:80

配置單個任務(wù)的Publish

image.png
image.png

命令解釋

# 切換到上傳后的docker
cd /root/docker
# 刪除原有jar包
rm -rf app.jar
# 將新的jar包拷貝到docker目錄
mv ../spring-boot-student-devops/target/*.jar app.jar
# 刪除無效目錄
rm -rf ../spring-boot-student-devops
# 通過docker-compose進行打包和啟動容器
docker-compose down
docker-compose up -d --build
# 刪除所有未打標(biāo)簽的鏡像
docker rmi $(docker images -q -f dangling=true)

執(zhí)行任務(wù)構(gòu)建&日志

image.png

這里傳輸了3個文件

目前服務(wù)器查看部署情況

[root@localhost docker]# docker ps
CONTAINER ID   IMAGE           COMMAND                   CREATED             STATUS             PORTS                                   NAMES
24d77685afcd   mytest:v1.0.0   "/bin/sh -c 'java -j…"   About an hour ago   Up About an hour   0.0.0.0:8081->80/tcp, :::8081->80/tcp   mytest
[root@localhost docker]# 
image.png

參數(shù)化構(gòu)建項目

配置參數(shù)類型

image.png
image.png

設(shè)置構(gòu)建前的操作

image.png
image.png
# 配置參數(shù)
REMOTE_NAME="origin"    # 遠(yuǎn)程倉庫名
BRANCH_NAME=$branch     # 拉取的分支名

BRANCH_NAME=${BRANCH_NAME#*/}

# 檢查輸入?yún)?shù)
if [ -z "$BRANCH_NAME" ]; then
  echo "Please provide the branch name as the first argument."
  exit 1
fi

# 判斷本地分支是否存在
if git show-ref --verify --quiet "refs/heads/$BRANCH_NAME"; then
  echo "Local branch $BRANCH_NAME exists."
  git checkout $BRANCH_NAME
  git config pull.rebase false
  git pull $REMOTE_NAME $BRANCH_NAME
else
  echo "Local branch $BRANCH_NAME does not exist."
  git fetch $REMOTE_NAME $BRANCH_NAME
  git checkout -b $BRANCH_NAME $REMOTE_NAME/$BRANCH_NAME
fi

# 執(zhí)行完畢
echo "The latest code has been successfully pulled from the remote branch."
exit 0

準(zhǔn)備多分支

image.png

重新構(gòu)建任務(wù)

image.png

查看結(jié)果

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末及舍,一起剝皮案震驚了整個濱河市未辆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锯玛,老刑警劉巖咐柜,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異攘残,居然都是意外死亡炕桨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門肯腕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钥平,你說我怎么就攤上這事实撒。” “怎么了涉瘾?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵知态,是天一觀的道長。 經(jīng)常有香客問我立叛,道長负敏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任秘蛇,我火速辦了婚禮其做,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赁还。我一直安慰自己妖泄,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布艘策。 她就那樣靜靜地躺著蹈胡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上罚渐,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天却汉,我揣著相機與錄音,去河邊找鬼荷并。 笑死合砂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的璧坟。 我是一名探鬼主播既穆,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雀鹃!你這毒婦竟也來了幻工?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤黎茎,失蹤者是張志新(化名)和其女友劉穎囊颅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體傅瞻,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡踢代,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嗅骄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胳挎。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖溺森,靈堂內(nèi)的尸體忽然破棺而出慕爬,到底是詐尸還是另有隱情,我是刑警寧澤屏积,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布医窿,位于F島的核電站,受9級特大地震影響炊林,放射性物質(zhì)發(fā)生泄漏姥卢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一渣聚、第九天 我趴在偏房一處隱蔽的房頂上張望独榴。 院中可真熱鬧,春花似錦饵逐、人聲如沸括眠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掷豺。三九已至捞烟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間当船,已是汗流浹背题画。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留德频,地道東北人苍息。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像壹置,于是被迫代替她去往敵國和親竞思。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355