基于Docker安装Jenkin并部署项目
基于Docker安裝Jenkin并部署項目
一、安裝
1.1 安裝Docker
點擊查看筆記:Docker安裝
1.2 安裝Docker Compose
# 1、下載文件,使用的是國內鏡像 curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose# 2、進行授權 chmod +x /usr/local/bin/docker-compose# 3、查看版本 docker-compose version[root@localhost /]# docker-compose version docker-compose version 1.25.5, build 8a1c60f6 docker-py version: 4.1.0 CPython version: 3.7.5 OpenSSL version: OpenSSL 1.1.0l 10 Sep 20191.3 安裝jenkins
# 拉取最新鏡像 docker pull jenkins/jenkins# 創建一個工作目錄 cd home mkdir jenkins cd jenkins# 創建 docker-compose.yml 文件 vi docker-compose.yml# 輸入以下內容 version: "3.1" services:jenkins:image: jenkins/jenkinscontainer_name: jenkinsports:- 8080:8080- 50000:50000volumes:- ./data/:/var/jenkins_home/# 先在當前文件夾下 data 目錄 mkdir data # 授予權限,否則啟動 yml 后會報錯 chmod -R a+w data/# 啟動: docker-compose up -d由于jenkins需要下載大量內容,但是由于默認下載地址下載速度較慢,需要重新設置下載地址為國內鏡像站
# 修改數據卷中的hudson.model.UpdateCenter.xml文件 <?xml version='1.1' encoding='UTF-8'?> <sites><site><id>default</id><url>https://updates.jenkins.io/update-center.json</url></site> </sites> # 將下載地址替換為http://mirror.esuni.jp/jenkins/updates/update-center.json <?xml version='1.1' encoding='UTF-8'?> <sites><site><id>default</id><url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url></site> </sites>設置完后重啟
docker-compose restart1.4 配置jenkins
然后訪問jenkins首頁:ip:8080
初始密碼通過查看jenkins運行日志可查看
docker-compose logs -f
- 輸入初始化密碼
- 點擊選擇插件來安裝
- 選擇要安裝的插件
- 下載完畢設置信息進入首頁(可能會出現下載失敗的插件)
進入到首頁
二、項目準備
- 準備一個SpringBoot項目,編寫一個測試接口接口
- 將項目代碼上傳到Gitlab
三、jenkins配置
3.1 創建任務
- 在jenkins上創建任務
- 選擇自由風格創建任務
3.2 配置代碼拉取
如果倉庫是公共的,則不需要配置密碼,如果是私有的,點擊右側的添加即可添加當前在Gitlab倉庫使用的賬號
- 點擊立即構建
- 點擊上圖②后,進入下圖頁面,點擊控制臺輸出,可以根據第三行日志信息,查看jenkins本地拉取到的源碼
查看jenkins本地文件中項目文件
3.3 配置maven環境
maven項目打包需要有maven和jdk1.8環境:下載maven壓縮包和jdk1.8的壓縮包,解壓到掛載文件夾下,/home/jenkins/data是我當前服務器中掛載的jenkins的文件夾
修改maven的配置文件settings.xml
<!-- 阿里云鏡像地址 --> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf> </mirror><!-- JDK1.8編譯插件 --> <profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties> </profile>- jenkins配置JDK和maven
回到jenkins首頁,系統管理-全局工具配置,配置完下圖內容,點擊應用、保存
3.4 打包項目
返回到jenkins首頁,點擊新增的test-job,點擊配置
配置當前項目構建操作:點擊增加構建操作,選擇調用頂層Maven目標,選擇配置的maven,目標輸入package,點擊應用、保存
構建項目:到底test-job首頁后,點擊立即構建,然后進入到控制臺輸出查看,首次會進行依賴下載,需要稍微等待一會兒
出現BUILD SUCCESS后,查看本地項目內target文件夾下,jar包已經被正常打包出來
3.5 jenkins容器使用宿主機Docker【后續需要使用】
構建鏡像和發布鏡像到鏡像倉庫都需要使用到docker命令,而在jenkins容器內部安裝Docker官方推薦直接采用宿主機帶的Docker即可。
設置jenkins容器使用宿主機Docker
-
設置宿主機docker.sock權限:
sudo chown root:root /var/run/docker.sock sudo chmod o+rw /var/run/docker.sock -
添加數據卷
在jenkins的docker-compose.yml文件中修改,修改后如下
version: "3.1" services:jenkins:image: jenkins/jenkinscontainer_name: jenkinsports:- 8080:8080- 50000:50000volumes:- ./data/:/var/jenkins_home/- /usr/bin/docker:/usr/bin/docker- /var/run/docker.sock:/var/run/docker.sock- /etc/docker/daemon.json:/etc/docker/daemon.jsonrestart: always四、配置發布&遠程操作
將打包好的jar包發布到測試或正式服務器,此時使用jenkins的Publish Over SSH插件
4.1 配置服務器
- 從首頁點擊系統管理-系統配置-然后滑到最底部
- 如下圖所示,點擊新增按鈕
- 開始填寫參數
- 配置任務的構建后操作,進入創建的任務-配置-構建后操作
- 應用并保存后構建項目,查看日志
- 查看目標服務器指定文件夾,可見文件以及傳輸完成
4.2 通過打包成Jar包部署項目
4.2.1 目標服務器運行環境準備
test-job ├── bak # 備份jar包文件夾 ├── catalina.out # 運行指定日志文件 ├── jenkins-deploy-demo.jar # 需要運行的jar文件 └── new # 發布新的jar包時需要上傳到此目錄└── start.sh # 運行項目腳本:會先殺掉舊進程start.sh 內容如下
# !/bin/bash cd ../ now=$(date "+%Y%m%d-%H%M%S") echo "$(date)------- 開始關閉接口服務 --------" server_pid=$(netstat -anp|grep 8099|awk '{printf $7}'|cut -d/ -f1) echo "$(date)-pid: $server_pid" if [ "$server_pid" == "" ]thenecho "$(date)------- 成功關閉接口服務 --------"elseecho "$(date)-TOMCAT PID: $server_pid"kill -9 "$server_pid"echo "$(date)------- 成功關閉接口服務 --------" fi # 備份 echo "$(date)------- 備份 jar 包 --------" mv `pwd`/jenkins-deploy-demo.jar `pwd`/bak/jenkins-deploy-demo.jar.$(date "+%Y%m%d")# 更新 echo "$(date)------- 更新 jar 包 --------" mv `pwd`/new/jenkins-deploy-demo.jar `pwd`/jenkins-deploy-demo.jar# 啟動服務 echo "$(date)------- 啟動接口服務 --------"# 此處必須設置目標服務器java的絕對路徑,否則會提示 nohup: 無法運行命令'java': 沒有那個文件或目錄 nohup /usr/lib/jdk1.8.0_321/bin/java -jar jenkins-deploy-demo.jar >>catalina.out 2>&1 &echo "$(date)------- 接口服務成功 --------"4.2.2 修改jenkins上傳文件配置
4.3.3 修改代碼、提交、構建
增加新的接口后提交到gitlab
在jenkins對應項目中,點擊立即構建,等部署完成訪問新的接口即可
4.3 通過打包成Docker鏡像部署項目
4.3.1 創建Dockerfile、Docker-compose文件
在項目根目錄創建docker文件夾
- 添加Dockerfile文件
- 添加docker-compose.yml文件
4.3.2 修改jenkins任務配置
4.3.3 立即構建
構建日志
前往目標服務器查看,docker容器已經在運行,請求接口正常
4.4 基于Git tag構建
4.4.1 確保安裝插件Git Parameter
4.4.2 設置任務參數化構建
4.4.3 給項目添加tag版本
4.4.4 設置任務構建時采用Shell方式構建,拉取指定tag版本代碼
將原來選擇maven環境構建的刪除掉,然后重新添加一個執行shell的構建操作
shell命令內容以及描述
# 進入項目根目錄 cd /var/jenkins_home/workspace/jenkins-deploy-demo # 拉取指定分支代碼,$release 中 release 是自定義的名稱標識 git checkout $release # 執行mvn clean install,因為是自己安裝的maven,需要指定絕對路徑 /var/jenkins_home/apache-maven-3.6.3/bin/mvn clean package保存配置后發現立即構建變成了下圖所示,點擊后右側出現版本選擇,版本數據來源是Gitlab設置的tag
在Gitlab上再新增一個tab v2.0.0,然后到jenkins刷新上圖的頁面,可見增加的tag v2.0.0 都已經顯示
4.4.5 立即構建
選擇版本后點擊立即構建即可,然后訪問接口測試項目啟動是否正常
4.4.6 新tag測試
修改代碼接口,提交到Gitlab,并新增一個v3.0.0tag,在jenkins中選擇v3.0.0立即構建,構建完成后訪問接口測試
五、jenkins流水線
5.1 流水線介紹
之前采用jenkins的自由風格構建的項目,每個步驟流程都要通過不同的方式設置,并且構建過程中整體流程是不可見的,無法確認每個流程花費的時間,并且問題不方便定位問題。
jenkins的Pipeline可以讓項目的發布整體流程可視化,明確執行的階段,可以快速的定位問題。并且整個項目的生命周期可以通過一個Jenkinsfile文件管理,而且Jenkinsfile文件是可以放在項目中維護。
所以Pipeline相對自由風格或者其他的項目風格更容易操作。
5.2 構建jenkins流水線任務
5.2.1 創建任務
保存后點擊立即構建
5.2.2 Groovy腳本
- Groovy腳本基礎語法
- 測試實例
- 配置到jenkins中
- 立即構建,查看效果
5.2.3 Jenkinsfile實現
Jenkinsfile方式需要將腳本內容編寫到項目中的Jenkinsfile文件中,每次構建會自動拉取項目并且獲取項目中Jenkinsfile文件對項目進行構建
- 配置pipeline如下并保存
- 配置Jenkinsfile并提交到Gitlab
- 立即構建
5.3 jenkins流水線任務實現
備注:流水線語法生成
5.3.1 參數化構建-指定tag構建
- 設置Git參數,名稱后續會用到
5.3.2 拉取Git代碼
通過流水線語法生成Checkout代碼的腳本
復制生成的流水線腳本到項目中的Jenkinsfile中,并將*/master更改為標簽**${tag}**,release是設置參數化構建過程的名稱
替換后的內容
pipeline {agent any// 存放所有任務的合集stages {// 拉取git代碼stage('拉取Git代碼') {steps {checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitlab_wx', url: 'https://gitlab.xxx.xxx/wangx/jenkins-deploy-demo.git']]])}}// 構建代碼stage('構建代碼') {steps {echo '構建代碼'}}// 制作自定義鏡像并發布stage('制作自定義鏡像并發布') {steps {echo '制作自定義鏡像并發布'}}// 部署工程stage('部署工程') {steps {echo '部署工程'}}} }5.3.3 構建代碼
將Jenkinsfile中構建代碼代碼塊替換為如下內容
sh '/var/jenkins_home/apache-maven-3.6.3/bin/mvn clean package -DskipTests'替換后的內容為
pipeline {agent any// 存放所有任務的合集stages {// 拉取git代碼stage('拉取Git代碼') {steps {checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitlab_wx', url: 'https://gitlab.hanshang.site/wangx/jenkins-deploy-demo.git']]])}}// 構建代碼stage('構建代碼') {steps {sh '/var/jenkins_home/apache-maven-3.6.3/bin/mvn clean package -DskipTests'}}// 制作自定義鏡像并發布stage('制作自定義鏡像并發布') {steps {echo '制作自定義鏡像并發布'}}// 部署工程stage('部署工程') {steps {echo '部署工程'}}} }5.3.4 制作自定義鏡像并發布到阿里云
在往下進行之前,需要先讓jenkins容器內部能使用jenkins容器使用宿主機Docker,詳見3.5
將Jenkinsfile中制作自定義鏡像并發布代碼塊替換為如下內容,同時增加環境變量
sh '''cp ./target/*.jar ./docker/ cd ./docker docker build -t ${JOB_NAME}:${tag} ./'''sh '''docker login -u ${aliyunUser} -p ${aliyunPasswd} ${aliyunHost} docker tag ${JOB_NAME}:${tag} ${aliyunHost}/${aliyunRepo}/${JOB_NAME}:${tag} docker push ${aliyunHost}/${aliyunRepo}/${JOB_NAME}:${tag}'''替換后的內容為
pipeline {agent anyenvironment{// 需要設置為自己的參數aliyunHost = 'xxxx'aliyunRepo = 'xxxx'aliyunUser = 'xxxx'aliyunPasswd = 'xxxx'}// 存放所有任務的合集stages {// 拉取git代碼stage('拉取Git代碼') {steps {checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitlab_wx', url: 'https://gitlab.hanshang.site/wangx/jenkins-deploy-demo.git']]])}}// 構建代碼stage('構建代碼') {steps {sh '/var/jenkins_home/apache-maven-3.6.3/bin/mvn clean package -DskipTests'}}// 制作自定義鏡像并發布stage('制作自定義鏡像并發布') {steps {sh '''cp ./target/*.jar ./docker/cd ./dockerdocker build -t ${JOB_NAME}:${release} ./'''sh '''docker login -u ${aliyunUser} -p ${aliyunPasswd} ${aliyunHost}docker tag ${JOB_NAME}:${tag} ${aliyunHost}/${aliyunRepo}/${JOB_NAME}:${tag}docker push ${aliyunHost}/${aliyunRepo}/${JOB_NAME}:${tag}'''}}// 部署工程stage('部署工程') {steps {echo '部署工程'}}} }- 提交代碼后,新增tag,在jenkins上選擇對應tag進行構建
構建成功后可在本地docker查看鏡像和到阿里云查看鏡像是否上傳成功
5.3.5 遠程發布
- 在目標服務器創建 deploy.sh 腳本文件,當前存儲在 /home/admin/Downloads/jenkins-deploy-demo 文件夾下
設置文件為可執行文件
chmod a+x deploy.sh- 通過流水線語法獲取字符串
補充了發布腳本后的內容
部署工程中execCommand值中即引用了Jenkinsfile的變量,也引用的jenkins的自定義參數,需用使用英文雙引號包裹
deloly.sh 需要使用絕對路徑
pipeline {agent anyenvironment{aliyunHost = 'registry.cn-hangzhou.aliyuncs.com'aliyunRepo = 'dtimages'aliyunUser = '浙江道霆信息技術有限公司'aliyunPasswd = 'MoveFast!'}// 存放所有任務的合集stages {// 拉取git代碼stage('拉取Git代碼') {steps {checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitlab_wx', url: 'https://gitlab.hanshang.site/wangx/jenkins-deploy-demo.git']]])}}// 構建代碼stage('構建代碼') {steps {sh '/var/jenkins_home/apache-maven-3.6.3/bin/mvn clean package -DskipTests'}}// 制作自定義鏡像并發布stage('制作自定義鏡像并發布') {steps {sh '''cp ./target/*.jar ./docker/cd ./dockerdocker build -t ${JOB_NAME}:${tag} ./'''sh '''docker login -u ${aliyunUser} -p ${aliyunPasswd} ${aliyunHost}docker tag ${JOB_NAME}:${tag} ${aliyunHost}/${aliyunRepo}/${JOB_NAME}:${tag}docker push ${aliyunHost}/${aliyunRepo}/${JOB_NAME}:${tag}'''}}// 部署工程stage('部署工程') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.1.200', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "/home/admin/Downloads/jenkins-deploy-demo/deploy.sh $aliyunHost $aliyunRepo $JOB_NAME $tag $port", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}} }execCommand 需要使用雙引號,否則執行命令無效,具體原因未知
- 配置port參數
- 立即構建
在目標服務器上查看在運行的容器,可見已經發布成功
六、發布到k8s
6.1 環境準備
k8s的安裝:點擊查看
6.2 文件準備
6.2.1 在k8s master服務器上創建secret
# aliregistry:可替換為自己的secret名稱;registry.cn-hangzhou.aliyuncs.com:阿里云的倉庫地址,可替換為自己的私有的; kubectl create secret docker-registry --dry-run=client aliregistry --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=你的賬號 --docker-password=你的密碼 --namespace=test-ns -o yaml > docker-secret.yaml# 執行完上述命令后,會在當前文件夾下創建 docker-secret.yaml 文件,查看內容,其中 dockerconfigjson 是地址、用戶名、密碼加密后的 cat docker-secret.yaml apiVersion: v1 data:.dockerconfigjson: eyJhdXRocyI6eyJyZWdpc3RyeS5jbi1oYW5nemhvdS5hbGl5dW5jcy5jb20iOnsidXNlcm5hbWUiOiLmtZnmsZ/pgZPpnIbkv6Hmga/mioDmnK/mnInpmZDlhazlj7giLCJwYXNzd29yZCI6Ik1vdmVGYXN0ISIsImF1dGgiOiI1cldaNXJHZjZZR1Q2WnlHNUwraDVvR3Y1b3FBNXB5djVweUo2Wm1RNVlXczVZKzRPazF2ZG1WR1lYTjBJUT09In19fQ== kind: Secret metadata:creationTimestamp: nullname: aliregistrynamespace: test-ns type: kubernetes.io/dockerconfigjson# 執行文件創建secret kubectl apply -f docker-secret.yaml# 查看secret [root@k8smaster k8s]# kubectl get secret -n test-ns NAME TYPE DATA AGE aliregistry kubernetes.io/dockerconfigjson 1 24m default-token-f9r6q kubernetes.io/service-account-token 3 17d6.2.2 創建pipeline.yml
apiVersion: apps/v1 kind: Deployment metadata:# 指定命名空間namespace: test-ns# 指定工作負載名稱name: jenkins-deploy-demo-pipelinelabels:app: jenkins-deploy-demo-pipeline spec:replicas: 1selector:matchLabels:app: jenkins-deploy-demo-pipelinetemplate:metadata:labels:app: jenkins-deploy-demo-pipeline spec:containers:- name: jenkins-deploy-demo-pipelineimage: registry.cn-hangzhou.aliyuncs.com/dtimages/jenkins-deploy-demo-pipeline:v5.0.0# 總是重新拉取鏡像imagePullPolicy: Alwaysports:- containerPort: 8099# 指定只用自己創建的secret,如果是共有鏡像,則不需要配置imagePullSecrets:- name: aliregistry --- apiVersion: v1 kind: Service metadata:# 指定命名空間namespace: test-nslabels:# 指定服務名稱app: jenkins-deploy-demo-pipelinename: jenkins-deploy-demo-pipeline spec:selector:# 指定應用app: jenkins-deploy-demo-pipelineports:# 對外端口- port: 8099# 容器內端口targetPort: 8099type: NodePort --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata:# 指定命名空間namespace: test-ns# 指定 Ingress 名稱name: jenkins-deploy-demo-pipeline spec:ingressClassName: ingressrules:- host: pipeline.iamwx.cnhttp:paths:- path: /pathType: Prefixbackend:service:name: jenkins-deploy-demo-pipelineport:number: 8099pipeline.yml 文件創建好后,在k8s中執行測試效果
kubectl apply -f pipeline.yml # 查看服務端口 kubectl get service -n test-ns NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE jenkins-deploy-demo-pipeline NodePort 10.96.204.60 <none> 8099:30387/TCP 52m使用 ip:30387/test 即可訪問接口
測試完成后,將pipeline.yml放入項目中(此時我講tag改為5.0.0,方便測試發布效果)
6.2.3 配置k8s master服務器參數
6.2.3 修改Jenkinsfile
- 在jenkins流水線語法生成腳本
將項目中的pipeline.yml文件上傳到目標服務器,在目標服務器準備了空文件夾 /home/k8s/deploy
復制腳本到Jenkinsfile中
當前Jenkinsfile內容
pipeline {agent anyenvironment{aliyunHost = 'registry.cn-hangzhou.aliyuncs.com'aliyunRepo = 'xxx'aliyunUser = 'xxx'aliyunPasswd = 'xxx'}// 存放所有任務的合集stages {// 拉取git代碼stage('拉取Git代碼') {steps {checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitlab_wx', url: 'https://gitlab.hanshang.site/wangx/jenkins-deploy-demo.git']]])}}// 構建代碼stage('構建代碼') {steps {sh '/var/jenkins_home/apache-maven-3.6.3/bin/mvn clean package -DskipTests'}}// 制作自定義鏡像并發布stage('制作自定義鏡像并發布') {steps {sh '''cp ./target/*.jar ./docker/cd ./dockerdocker build -t ${JOB_NAME}:${tag} ./'''sh '''docker login -u ${aliyunUser} -p ${aliyunPasswd} ${aliyunHost}docker tag ${JOB_NAME}:${tag} ${aliyunHost}/${aliyunRepo}/${JOB_NAME}:${tag}docker image prune -fdocker push ${aliyunHost}/${aliyunRepo}/${JOB_NAME}:${tag}'''}}// 上傳pipeline.yml文件stage('上傳pipeline.yml文件') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: 'k8s-master', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: ' /home/k8s/deploy', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'pipeline.yml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}} }提交代碼到Gitlab,可創建新的tag v4.0.1進行測試
在Jenkins中選擇最新的tag進行構建
構建完成后,前往k8s master服務器的 /home/k8s/deploy 文件夾查看
- 設置Jenkins無密碼登錄k8s-master
- 配置pipeline最后一步,遠程執行kubectl命令
在Jenkinsfile中增加遠程執行kubectl命令過程,修改后的內容
pipeline {agent anyenvironment{aliyunHost = 'registry.cn-hangzhou.aliyuncs.com'aliyunRepo = 'xxx'aliyunUser = 'xxx'aliyunPasswd = 'xxx'}// 存放所有任務的合集stages {// 拉取git代碼stage('拉取Git代碼') {steps {checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitlab_wx', url: 'https://gitlab.hanshang.site/wangx/jenkins-deploy-demo.git']]])}}// 構建代碼stage('構建代碼') {steps {sh '/var/jenkins_home/apache-maven-3.6.3/bin/mvn clean package -DskipTests'}}// 制作自定義鏡像并發布stage('制作自定義鏡像并發布') {steps {sh '''cp ./target/*.jar ./docker/cd ./dockerdocker build -t ${JOB_NAME}:${tag} ./'''sh '''docker login -u ${aliyunUser} -p ${aliyunPasswd} ${aliyunHost}docker tag ${JOB_NAME}:${tag} ${aliyunHost}/${aliyunRepo}/${JOB_NAME}:${tag}docker image prune -fdocker push ${aliyunHost}/${aliyunRepo}/${JOB_NAME}:${tag}'''}}// 上傳pipeline.yml文件stage('上傳pipeline.yml文件') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: 'k8s-master', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: ' /home/k8s/deploy', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'pipeline.yml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}// 遠程執行kubectl命令stage('遠程執行kubectl命令') {steps {sh 'ssh root@192.168.1.100 kubectl apply -f /home/k8s/deploy/pipeline.yml'}}} }提交代碼到Gitlab,新增一個tag v5.0.0,在jenkins選擇v5.0.0版本進行構建
構建完成后,通過Kuboard控制臺查看或通過指令查看 ,如果應用運行成功,訪問接口
期間自行測試過程中通過 kubectl delete -f xxx.yml ,再運行后服務對外的端口會改變,需查看最新端口用于訪問接口
總結
以上是生活随笔為你收集整理的基于Docker安装Jenkin并部署项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 64位处理器_计算机微处理器介绍
- 下一篇: 视频水印怎么去掉?有什么好的去水印工具吗