主頁 >  其他 > Jenkins多分支流水線Blue Ocean的安裝和使用

Jenkins多分支流水線Blue Ocean的安裝和使用

2021-11-09 10:21:14 其他

在這里插入圖片描述

一、前置環境準備:

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如下:

  1. 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
  1. 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

標籤:其他

上一篇:CentOS安裝 docker-compose及其常用命令

下一篇:Firefox在比較操作中未檢測到rgb顏色

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more