
一、前置環境準備:
1、jdk
下載 jdk-8u171-linux-x64.tar.gz(也可以是其他版本,一樣)
解壓 /usr/local/jdk1.8.0_171
配置環境變數,在/etc/profile最后面添加如下2行
export JAVA_HOME=/usr/local/jdk1.8.0_171
export PATH=$JAVA_HOME/bin:$PATH
生效命令:source /etc/profile
2、maven
下載 apache-maven-3.8.2-bin.tar.gz(也可以是其他版本,一樣)
解壓 /usr/local/maven3.8.2 (我這邊解壓后重命名了下,一樣)
配置環境變數,在/etc/profile最后面添加如下2行
export MAVEN_HOME=/usr/local/maven3.8.2
export CLASSPATH=$CLASSPATH:$MAVEN_HOME/lib
export PATH=$PATH:$MAVEN_HOME/bin
生效命令:source /etc/profile
3、git
查看是否安裝git: rpm -qa | grep git
[root@nb1 harbor]# yum install git
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
正在解決依賴關系
--> 正在檢查事務
---> 軟體包 git.x86_64.0.1.8.3.1-23.el7_8 將被 安裝
--> 正在處理依賴關系 perl-Git = 1.8.3.1-23.el7_8,它被軟體包 git-1.8.3.1-23.el7_8.x86_64 需要
--> 正在處理依賴關系 perl(Term::ReadKey),它被軟體包 git-1.8.3.1-23.el7_8.x86_64 需要
--> 正在處理依賴關系 perl(Git),它被軟體包 git-1.8.3.1-23.el7_8.x86_64 需要
--> 正在處理依賴關系 perl(Error),它被軟體包 git-1.8.3.1-23.el7_8.x86_64 需要
--> 正在檢查事務
---> 軟體包 perl-Error.noarch.1.0.17020-2.el7 將被 安裝
---> 軟體包 perl-Git.noarch.0.1.8.3.1-23.el7_8 將被 安裝
---> 軟體包 perl-TermReadKey.x86_64.0.2.30-20.el7 將被 安裝
--> 解決依賴關系完成
依賴關系解決
==============================================================================================================
Package 架構 版本 源 大小
==============================================================================================================
正在安裝:
git x86_64 1.8.3.1-23.el7_8 base 4.4 M
為依賴而安裝:
perl-Error noarch 1:0.17020-2.el7 base 32 k
perl-Git noarch 1.8.3.1-23.el7_8 base 56 k
perl-TermReadKey x86_64 2.30-20.el7 base 31 k
事務概要
==============================================================================================================
安裝 1 軟體包 (+3 依賴軟體包)
總下載量:4.5 M
安裝大小:22 M
Is this ok [y/d/N]: y
Downloading packages:
(1/4): perl-Error-0.17020-2.el7.noarch.rpm | 32 kB 00:00:00
(2/4): perl-TermReadKey-2.30-20.el7.x86_64.rpm | 31 kB 00:00:00
(3/4): perl-Git-1.8.3.1-23.el7_8.noarch.rpm | 56 kB 00:00:01
(4/4): git-1.8.3.1-23.el7_8.x86_64.rpm | 4.4 MB 00:00:01
--------------------------------------------------------------------------------------------------------------
總計 2.5 MB/s | 4.5 MB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安裝 : 1:perl-Error-0.17020-2.el7.noarch 1/4
正在安裝 : perl-TermReadKey-2.30-20.el7.x86_64 2/4
正在安裝 : perl-Git-1.8.3.1-23.el7_8.noarch 3/4
正在安裝 : git-1.8.3.1-23.el7_8.x86_64 4/4
驗證中 : git-1.8.3.1-23.el7_8.x86_64 1/4
驗證中 : 1:perl-Error-0.17020-2.el7.noarch 2/4
驗證中 : perl-Git-1.8.3.1-23.el7_8.noarch 3/4
驗證中 : perl-TermReadKey-2.30-20.el7.x86_64 4/4
已安裝:
git.x86_64 0:1.8.3.1-23.el7_8
作為依賴被安裝:
perl-Error.noarch 1:0.17020-2.el7 perl-Git.noarch 0:1.8.3.1-23.el7_8 perl-TermReadKey.x86_64 0:2.30-20.el7
完畢!
[root@nb1 harbor]# git --version
git version 1.8.3.1
4、docker
直通車:https://blog.csdn.net/wdy_2099/article/details/77367107
5、Jenkins安裝
我這邊有個war包,直接放到tomcat下,很簡單,基本一直下一步就ok了,網上也很多文章,搜索新點的文章基本都ok,
jenkins.war下載鏈接:https://www.aliyundrive.com/s/yiTpLXP7Syg
二、安裝流水線插件BlueOcean
如果安裝Jenkins后在左側串列里沒有看到“Open Blue Ocean”的選單,則需要安裝BlueOcean插件,
安裝方法就是,如下圖:點擊Manager Jenkins–> Manager Plugins

搜索"blue ocean", 說明,正常是可以看到名稱為:“Blue Ocean”的插件的,我是已經安裝了,故跑到已安裝Tab里了哈,選中—> 點擊左下角的Install without restart(立即安裝)即可,

安裝完成后,回到jenkins首頁,就可以看到下面第1張圖的左側選單里有了“打開Blue Ocean”的按鈕, 點擊該按鈕,則切換到了BlueOcean展示方式,如下第2張圖:就表示安裝成功了,


接下來,創建一個專案的流水線:這里我用gitee作為示例,也可以是gitlab、github等,
第一次創建,是需要選擇 Create new credential 的,將你gitee的用戶名、密碼,然后點擊創建證書就可以了,
最后,點擊下面的“創建流水線”按鈕完成創建,

由此分支流水線Blue Ocean的安裝就完成了,
創建好流水線后,需要回到 任務詳情中, 點擊“ 立刻Scan 多分支流水線 ” 才可以自動掃描根目錄中帶有Jenkinsfile檔案的分支了,我這里在dev分支里加了Jenkinsfile檔案,

附專案目錄結構:可以看到有Jenkinsfile檔案,

Jenkinsfile 檔案內容如下:這里加了一些說明,用的時候,需要去掉哈,或者改成//的注釋方式,注意縮進,
# 由于這邊是單機版Jenkins,所以直接使用master節點:
node('master') {
#加入一些環境變數,供下面呼叫,也通用,只需改變本變數即可自動部署,
# APP: 專案打包后的名稱,你mvn clean package一下,生成的jar包全名就是它的值,
# APP_NAME: 部署到K8s中的作業負載名稱,以及在鏡像倉庫中的倉庫名稱
# START_COMMOND: 是Dockerfile添加的CMD命令,當容器被啟動時會被執行(這里是java應用,故為此例,springboot的一些命令都可以加到此,比如-DNACOS_SERVER -DNACOS_NAMESPACE --server.port 等等),
withEnv(['APP=k8stest-1.0.jar','APP_NAME=k8snb', 'START_COMMOND="CMD java -Xms512M -Xmx2048M -jar app.jar --server.port=8080 -Dclient.logRoot=/app/logs"']) {
# 這是一個流水線的stage, 幫助在blueOcean中部署專案時,選擇諸如部署的環境,部署專案的組態檔的active等
stage('EnvSelect') {
echo "0.EnvSelect Stage"
script {
env.NAME_SPACE = input message: 'Which Env To Deploy', ok: 'YES', parameters: [choice(name: 'NAME_SPACE', choices: ['k8snb', 'k8stest-blueocean'], description: 'Which Env To Deploy')]
env.PROFILE = input message: 'Which Profile To Active', ok: 'YES', parameters: [string(defaultValue: env.NAME_SPACE, description: 'Which Profile To Active', name: 'PROFILE', trim: false)]
}
}
# 顧名思義,克隆專案
stage('Clone') {
echo "1.Clone Stage"
sh "date"
checkout scm
script {
build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
if (env.BRANCH_NAME != 'master') {
build_tag = "${env.BRANCH_NAME}-${build_tag}"
}
}
}
# 顧名思義,用maven專案,這邊加了jenkins部署主機的maven全路徑執行clean package 并跳過測驗
stage('Compile') {
echo "2.Compile Stage"
sh "/usr/local/apache-maven-3.8.2/bin/mvn clean package -DskipTests"
sh "mv target/$APP ."
}
# 配置Dockerfile,將通用的Dockerfile 復制到作業目錄,然后sed替換里面的<APP>變數,
stage('Config') {
echo "3.Config Stage"
# 這里pwd其實就是jenkins的作業空間目錄
sh "pwd"
sh "cp -r /usr/local/script/Dockerfile ./Dockerfile"
sh "sed -i 's/<APP>/$APP/' Dockerfile"
}
# 構建鏡像,打tag,上傳鏡像倉庫,我這邊用的hub.docker.com測驗,故弄的公開鏡像,生產中得搭建私有鏡像倉庫,或者使用阿里云、華為云等的組件(花錢買說白了就是)
#以下4個sh分別表示1、登錄鏡像倉庫;2、構建本地鏡像;3、推送鏡像到遠程鏡像倉庫;4、推送完洗掉本地鏡像(可以去掉本命令不自動刪,自己手動刪也是也一樣的,但一般本地不留存,因為遠程鏡像倉庫都有了);
stage('Build') {
echo "4.Build Stage"
withCredentials([usernamePassword(credentialsId: 'dockerhub', passwordVariable: 'dockerhubPassword', usernameVariable: 'dockerhubUser')]) {
sh "sudo docker login -u ${dockerhubUser} -p ${dockerhubPassword} docker.io"
sh "sudo docker build -t docker.io/mydockerhubname/$APP_NAME:${build_tag} ."
sh "sudo docker push docker.io/mydockerhubname/$APP_NAME:${build_tag}"
sh "sudo docker rmi mydockerhubname/$APP_NAME:${build_tag}"
}
}
# 部署鏡像到k8s容器中:這里也是復制通用的k8s.yaml檔案,替換其中的3個變數,并執行,最后輸出查看svc的命令
# 這里我補充一下:這里是我部署k8s的命令,并不適合所有人,如果大家是自己玩,比如啟動jar的方式啟動程式的話,可以將下面6個sh命令換一下即可,比如寫個.sh腳本(里面寫jar的啟動方式,啟動之前替換下埠號),然后再在這邊執行一下,再比如docker鏡像的方式啟動,那就直接docker run命令啟動就可以了,
# 這邊的思路就是sed命令替換腳本里的內容,使得腳本變得通用了,都是linux上的一些命令,沒什么出奇的地方,
stage('Deploy') {
echo "5. Deploy Stage"
if (env.BRANCH_NAME == 'master') {
input "確認要部署線上環境嗎?"
}
sh "cp -r /usr/local/script/k8s.yaml ."
sh "sed -i 's/<APP_NAME>/$APP_NAME/' k8s.yaml"
sh "sed -i 's/<NAMESPACE>/$NAME_SPACE/' k8s.yaml"
sh "sed -i 's/<APP_TAG>/${build_tag}/' k8s.yaml"
sh "sudo kubectl apply -f k8s.yaml --record"
sh "sudo kubectl get svc -A | grep $APP_NAME"
}
}
}
上述Jenkinfile里用到的通用的Dockerfile、 k8s.yaml如下:
- Dockerfile
FROM openjdk:8
ARG app
ADD <APP> app.jar
RUN ["/bin/bash", "-c", "chmod 777 app.jar "]
CMD java -Xms512M -Xmx2048M -jar /app.jar --server.port=8080
- k8s.yaml
apiVersion: v1
kind: Service
metadata:
name: <APP_NAME>
namespace: <NAMESPACE>
spec:
type: NodePort
ports:
- name: <APP_NAME>
port: 8080
# nodePort: 30004
targetPort: 8080
protocol: TCP
selector:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: <APP_NAME>
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: <APP_NAME>
namespace: <NAMESPACE>
spec:
selector:
matchLabels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: <APP_NAME>
replicas: 1
template:
metadata:
labels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: <APP_NAME>
spec:
containers:
- name: <APP_NAME>
image: mydockerhubname/<APP_NAME>:<APP_TAG>
# 解決Back-off restarting failed container例外,加上后,會將替代鏡像中的默認 ENTRYPOINT 或 CMD,需要特別注意!
# command: [ "/bin/bash", "-ce", "tail -f /dev/null" ]
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
# 這里指定創建的密鑰
imagePullSecrets:
- name: dockerhub
三、Jenkins里另外一個配置:全域憑證
上述Jenkins檔案中,有推送鏡像倉庫的命令,如下:
withCredentials([usernamePassword(credentialsId: 'dockerhub', passwordVariable: 'dockerhubPassword', usernameVariable: 'dockerhubUser')]) {
sh "sudo docker login -u ${dockerhubUser} -p ${dockerhubPassword} docker.io"
sh "sudo docker build -t docker.io/mydockerhubname/$APP_NAME:${build_tag} ."
sh "sudo docker push docker.io/mydockerhubname/$APP_NAME:${build_tag}"
sh "sudo docker rmi mydockerhubname/$APP_NAME:${build_tag}"
}
這里的withCredentials塊,是讀取Jenkins的全域憑據資料的,故需要建立全域憑據,我這里選擇的是dockehub作為鏡像倉庫,故需要把dockehub的用戶名密碼填寫進去,

然后,在全域憑據串列里就可以看到剛建的dockerhub憑據了,

最后,回到剛剛安裝Blue Ocean完成后的時刻, 再次點擊“ 立刻Scan 多分支流水線 ” 就可以自動掃描根目錄中帶有Jenkinsfile檔案的分支了,我這里在dev分支里加了Jenkinsfile檔案(重要,又說了一次,承接),然后點擊“Open Blue Ocean”,即可查看到可以部署的分支串列了:

點擊串列右邊的運行按鈕,即可一鍵部署專案,等各個步驟執行完成后,如下效果:綠色,表示Jenkins流程執行程序無問題,

如上圖,點擊右上角的“制品”按鈕,整個流水線的日志如下:

完整一次的日志內容如下:
Started by user wangdy
> /usr/bin/git rev-parse --resolve-git-dir /root/.jenkins/caches/git-50b55b75288b192967baef28206c0de9/.git # timeout=10
Setting origin to https://gitee.com/wangdy0909/k8stest.git
> /usr/bin/git config remote.origin.url https://gitee.com/wangdy0909/k8stest.git # timeout=10
Fetching origin...
Fetching upstream changes from origin
> /usr/bin/git --version # timeout=10
> git --version # 'git version 1.8.3.1'
> /usr/bin/git config --get remote.origin.url # timeout=10
using GIT_ASKPASS to set credentials Git username/password for https://gitee.com/wangdy0909/k8stest.git
> /usr/bin/git fetch --tags --progress origin +refs/heads/*:refs/remotes/origin/* # timeout=10
Seen branch in repository origin/dev
Seen branch in repository origin/master
Seen 2 remote branches
Obtained Jenkinsfile from d60bf74bde11408b401b521e25c064517f4ca062
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /root/.jenkins/workspace/k8stest-blueocean_dev
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (EnvSelect)
[Pipeline] echo
0.EnvSelect Stage
[Pipeline] script
[Pipeline] {
[Pipeline] input
Input requested
Approved by wangdy
[Pipeline] input
Input requested
Approved by wangdy
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Clone)
[Pipeline] echo
1.Clone Stage
[Pipeline] sh
+ date
2021年 09月 08日 星期三 15:11:27 CST
[Pipeline] checkout
Selected Git installation does not exist. Using Default
The recommended git tool is: NONE
using credential git:8943d25551d635f0bbdb6d92118c5cc53e8425f031ba989d7b051c2c53d30b26
> /usr/bin/git rev-parse --resolve-git-dir /root/.jenkins/workspace/k8stest-blueocean_dev/.git # timeout=10
Fetching changes from the remote Git repository
> /usr/bin/git config remote.origin.url https://gitee.com/wangdy0909/k8stest.git # timeout=10
Cleaning workspace
> /usr/bin/git rev-parse --verify HEAD # timeout=10
Resetting working tree
> /usr/bin/git reset --hard # timeout=10
> /usr/bin/git clean -fdx # timeout=10
Fetching without tags
Fetching upstream changes from https://gitee.com/wangdy0909/k8stest.git
> /usr/bin/git --version # timeout=10
> git --version # 'git version 1.8.3.1'
using GIT_ASKPASS to set credentials Git username/password for https://gitee.com/wangdy0909/k8stest.git
> /usr/bin/git fetch --no-tags --progress https://gitee.com/wangdy0909/k8stest.git +refs/heads/*:refs/remotes/origin/* # timeout=10
Checking out Revision d60bf74bde11408b401b521e25c064517f4ca062 (dev)
> /usr/bin/git config core.sparsecheckout # timeout=10
> /usr/bin/git checkout -f d60bf74bde11408b401b521e25c064517f4ca062 # timeout=10
> /usr/bin/git branch -a -v --no-abbrev # timeout=10
> /usr/bin/git branch -D dev # timeout=10
> /usr/bin/git checkout -b dev d60bf74bde11408b401b521e25c064517f4ca062 # timeout=10
Commit message: " sh "cp -r /usr/local/script/Dockerfile ./Dockerfile""
> /usr/bin/git rev-list --no-walk d60bf74bde11408b401b521e25c064517f4ca062 # timeout=10
Cleaning workspace
> /usr/bin/git rev-parse --verify HEAD # timeout=10
Resetting working tree
> /usr/bin/git reset --hard # timeout=10
> /usr/bin/git clean -fdx # timeout=10
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ git rev-parse --short HEAD
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Compile)
[Pipeline] echo
2.Compile Stage
[Pipeline] sh
+ /usr/local/apache-maven-3.8.2/bin/mvn clean package -DskipTests
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------------< com.wdy:k8stest >---------------------------
[INFO] Building k8stest 1.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ k8stest ---
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ k8stest ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /root/.jenkins/workspace/k8stest-blueocean_dev/src/main/resources
[INFO] skip non existing resourceDirectory /root/.jenkins/workspace/k8stest-blueocean_dev/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ k8stest ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /root/.jenkins/workspace/k8stest-blueocean_dev/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ k8stest ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /root/.jenkins/workspace/k8stest-blueocean_dev/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ k8stest ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ k8stest ---
[INFO] Tests are skipped.
[INFO]
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ k8stest ---
[INFO] Building jar: /root/.jenkins/workspace/k8stest-blueocean_dev/target/k8stest-1.0.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.5.4.RELEASE:repackage (default) @ k8stest ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.500 s
[INFO] Finished at: 2021-09-08T15:11:43+08:00
[INFO] ------------------------------------------------------------------------
[Pipeline] sh
+ mv target/k8stest-1.0.jar .
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Config)
[Pipeline] echo
3.Config Stage
[Pipeline] sh
+ pwd
/root/.jenkins/workspace/k8stest-blueocean_dev
[Pipeline] sh
+ cp -r /usr/local/script/Dockerfile ./Dockerfile
[Pipeline] sh
+ sed -i 's/<APP>/k8stest-1.0.jar/' Dockerfile
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] echo
4.Build Stage
[Pipeline] withCredentials
Masking supported pattern matches of $dockerhubPassword
[Pipeline] {
[Pipeline] sh
Warning: A secret was passed to "sh" using Groovy String interpolation, which is insecure.
Affected argument(s) used the following variable(s): [dockerhubPassword]
See https://jenkins.io/redirect/groovy-string-interpolation for details.
+ sudo docker login -u mydockerhubname -p **** docker.io
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[Pipeline] sh
+ sudo docker build -t docker.io/mydockerhubname/k8snb:dev-d60bf74 .
Sending build context to Docker daemon 15.45MB
Step 1/5 : FROM openjdk:8
---> a8035e0cce92
Step 2/5 : ARG app
---> Running in 080cdf06aa49
Removing intermediate container 080cdf06aa49
---> 79b5c1a15b51
Step 3/5 : ADD k8stest-1.0.jar app.jar
---> c9b90d9cf71a
Step 4/5 : RUN ["/bin/bash", "-c", "chmod 777 app.jar "]
---> Running in 13557b0d124b
Removing intermediate container 13557b0d124b
---> abe4f649c21c
Step 5/5 : CMD java -Xms512M -Xmx2048M -jar /app.jar --server.port=8080
---> Running in 0f8134203f99
Removing intermediate container 0f8134203f99
---> f1c26302866d
Successfully built f1c26302866d
Successfully tagged mydockerhubname/k8snb:dev-d60bf74
[Pipeline] sh
+ sudo docker push docker.io/mydockerhubname/k8snb:dev-d60bf74
The push refers to repository [docker.io/mydockerhubname/k8snb]
b080750fc6f9: Preparing
f07d5aa4a606: Preparing
cf8ce6105788: Preparing
8ff94addd2f4: Preparing
062f9311b72d: Preparing
9889ce9dc2b0: Preparing
21b17a30443e: Preparing
05103deb4558: Preparing
a881cfa23a78: Preparing
9889ce9dc2b0: Waiting
21b17a30443e: Waiting
a881cfa23a78: Waiting
8ff94addd2f4: Layer already exists
cf8ce6105788: Layer already exists
062f9311b72d: Layer already exists
21b17a30443e: Layer already exists
9889ce9dc2b0: Layer already exists
05103deb4558: Layer already exists
a881cfa23a78: Layer already exists
f07d5aa4a606: Pushed
b080750fc6f9: Pushed
dev-d60bf74: digest: sha256:3c23afb6cf37d64107582fae7d22bc3adf09044c661db65a1cec19653f852398 size: 2219
[Pipeline] sh
+ sudo docker rmi mydockerhubname/k8snb:dev-d60bf74
Untagged: mydockerhubname/k8snb:dev-d60bf74
Untagged: mydockerhubname/k8snb@sha256:3c23afb6cf37d64107582fae7d22bc3adf09044c661db65a1cec19653f852398
Deleted: sha256:f1c26302866d20eb81333e825b3d96a524b182d0ac9995c1b0dfc3360f79d532
Deleted: sha256:abe4f649c21cc5eac07e9f2c702c67639f2ae139488d179c7230ff6c895638b4
Deleted: sha256:d6e7e7cd02b89ac284ff738ed0c37abd0d157fe27810766c8a5bcc77ea8b05fc
Deleted: sha256:c9b90d9cf71a8bb95bb92c59574e0bad34c2a374fd40a84763358c4e81c13d93
Deleted: sha256:be85729ee696a9919b9f72e2ad50c72bb2023b01b182ba09ed273650e70be684
Deleted: sha256:79b5c1a15b51a8489c6ad6f180ae3c765db8a5b3807eb3db220ee995e9d673e6
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Deploy)
[Pipeline] echo
5. Deploy Stage
[Pipeline] sh
+ cp -r /usr/local/script/k8s.yaml .
[Pipeline] sh
+ sed -i 's/<APP_NAME>/k8snb/' k8s.yaml
[Pipeline] sh
+ sed -i 's/<NAMESPACE>/k8snb/' k8s.yaml
[Pipeline] sh
+ sed -i 's/<APP_TAG>/dev-d60bf74/' k8s.yaml
[Pipeline] sh
+ sudo kubectl apply -f k8s.yaml --record
Flag --record has been deprecated, --record will be removed in the future
service/k8snb unchanged
deployment.apps/k8snb configured
[Pipeline] sh
+ sudo kubectl get svc -A
+ grep k8snb
k8snb jenkins-tomcat NodePort 10.96.24.16 <none> 8080:30001/TCP 6d21h
k8snb k8snb NodePort 10.96.16.88 <none> 8080:30100/TCP 24h
k8snb sbd NodePort 10.96.116.75 <none> 8080:30002/TCP 4d23h
k8snb test-service NodePort 10.96.205.141 <none> 80:31428/TCP 15d
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
總結:所謂流水線,其實就是一個流程,先執行什么后執行什么的一個標準化程序,替代了直接配置每個專案的Jenkins流程,具有標準化的意思,節省了部署和配置時間,提高生產效率,
END
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/353619.html
標籤:其他
