国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Jenkins-CICD-python/Java包升級(jí)與回退

這篇具有很好參考價(jià)值的文章主要介紹了Jenkins-CICD-python/Java包升級(jí)與回退。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Jenkins- CICD流水線 python/Java代碼升級(jí)與回退

1、執(zhí)行思路

1.1、代碼升級(jí)

jenkins上點(diǎn)擊 upgrade代碼版本號(hào) --${tag}
jenkins 推送 代碼 執(zhí)行腳本 到目標(biāo)服務(wù)器/opt目錄下
執(zhí)行命令 sh run.sh 代碼名稱 版本號(hào) upgrade
版本號(hào) 來(lái)自jenkins的 構(gòu)建參數(shù)中的 標(biāo)簽參數(shù),標(biāo)簽值從gitee處獲取

run.sh 升級(jí)代碼執(zhí)行邏輯
1、在目標(biāo)服務(wù)器上 新代碼名稱+標(biāo)簽 cp 到 bak目錄下
2、停服,新代碼 mv 到執(zhí)行目錄下,啟動(dòng)

1.2、代碼回退

jenkins上點(diǎn) rollbak 代碼版本號(hào)

run.sh 回退代碼執(zhí)行邏輯
停服,cp bak/代碼-版本號(hào) 到執(zhí)行目錄,啟動(dòng)

2、gitee代碼如下

run.sh 執(zhí)行腳本
test_flask.py python代碼

Jenkins-CICD-python/Java包升級(jí)與回退,Jenkins,ci/cd,jenkins,運(yùn)維,gitlab

2.1、執(zhí)行腳本run.sh代碼如下

#!/bin/bash

# cd `dirname $0`
APP_NAME=$1
APP_file=/opt/test/${APP_NAME}
tag=$2

#使用說(shuō)明,用來(lái)提示輸入?yún)?shù)
usage() {
    echo "Usage: ./run.sh [start|stop|status|restart|upgrade]"
    exit 1
}

#檢查程序是否在運(yùn)行
is_exist(){
	# pid=`jps -l|grep $APP_NAME|grep -v grep|awk '{print $1}'` >> 此次獲取java進(jìn)程pid <<
  pid=`curl localhost:10080/pid 2>/dev/null`
  #如果不存在返回1,存在返回0     
	if [ -z "${pid}" ]; then
    echo "pid不存在"
		return 1
	else
		return 0
	fi
}

#啟動(dòng)方法
start(){
  echo "${APP_file} is starting ..."
	is_exist
	if [ $? -eq 0 ]; then
		echo "${APP_file} is already running. pid=${pid}"
	else
		# nohup java -Xmx100m -Xms100m -jar ${APP_file} --server.port=8181 >/dev/null 2>&1 & >> 此處啟動(dòng)java jar包 <<
    nohup python3 test/test_flask.py &
		echo "START..."
		sleep 5
		is_exist
		if [ $? -eq 0 ]; then
			echo "${APP_file} is running success. pid=${pid}"
		fi
	fi
}

#停止方法
stop(){
  echo "${APP_file} is stopping ..."
  is_exist
  if [ $? -eq "0" ]; then
    kill -15 $pid
    echo "..."
    sleep 2
    is_exist
    if [ $? -eq 0 ]; then
      echo "${APP_file} still in the running. pid=${pid}"
    else
      echo "${APP_file} has stopped running."
    fi
  else
    echo "${APP_file} is not running"
  fi  
}

#輸出運(yùn)行狀態(tài)
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_file} is running. Pid is ${pid}"
  else
    echo "${APP_file} is NOT running."
  fi
}

#重啟
restart(){
  echo "${APP_file} is restarting ..."
  stop
  #sleep 5
  start
}

#程序升級(jí)
#upgrade(){
#  ./run.sh stop
#  cd ..
#  mv $APP_NAME $backup
#  cp $rjxf ./
#  ./bin/run.sh start
#}

upgrade(){
  cd /opt/
  cp ./${APP_NAME} ./bak/${APP_NAME}-${tag}
  ./run.sh ${APP_NAME} ${tag} stop
  mv ${APP_NAME}  test/${APP_NAME}
  ./run.sh ${APP_NAME} ${tag} start;exit
}

rollback(){
  cd /opt/
  ./run.sh ${APP_NAME} ${tag} stop
  cp ./bak/${APP_NAME}-${tag} test/${APP_NAME}
  ./run.sh ${APP_NAME} ${tag} start
  echo "slepp 5s ..."
  sleep 5
}

#根據(jù)輸入?yún)?shù),選擇執(zhí)行對(duì)應(yīng)方法,不輸入則執(zhí)行使用說(shuō)明
case "$3" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  "upgrade")
    upgrade
    ;;
  "rollback")
    rollback
    ;;
  *)
    usage
    ;;
esac

2.1、python代碼如下

from flask import Flask
import time,os

app = Flask(__name__)

@app.route("/")
def status():
    msg = time.strftime("%Y-%m-%d %H:%M:%S")+"\tMyPid: "+str(os.getpid())+"\tv2.1.0"+"\n"
    return msg

@app.route("/pid")
def pid():
    msg = str(os.getpid()) + "\n"
    return msg

if __name__ == '__main__':
    app.run(port=10080,host="0.0.0.0")

2.3、pipeline流水線,Jenkinsfile配置如下

pipeline {
    agent any

    stages {
        stage('代碼部署') {
            when {
                expression { params.ACTION == 'upgrade'}
            }
            steps {
                script {
                    echo "從git上拉取代碼"
                    checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'c2b40745-be98-4627-93af-5cc975b0e355', url: 'https://gitee.com/****/test.git']])
                    
                    echo '新代碼+tag標(biāo)簽 推送到目標(biāo)服務(wù)器備份目錄下'
                    sshPublisher(publishers: [sshPublisherDesc(configName: 'aly-arm', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'test_flask.py,run.sh')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

                    sshPublisher(publishers: [sshPublisherDesc(configName: 'aly-arm', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: """cd /opt;chmod +x run.sh;sh run.sh test_flask.py ${tag} ${ACTION};exit""", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '',usePty: true)], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                }
            }
        }

        stage('代碼回退') {
            when {
                expression { params.ACTION == 'rollback'}
            }
            steps {
                script {
                    sshPublisher(publishers: [sshPublisherDesc(configName: 'aly-arm', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "cd /opt;sh run.sh test_flask.py ${tag} ${ACTION};exit", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '',usePty: true)], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                }
            }
        }
    }
}

3、Jenkins配置

3.1、添加2個(gè)構(gòu)建化參數(shù)

1、選項(xiàng)參數(shù),用于選擇upgrade升級(jí)或者rollback回退
2、git參數(shù),用于從gitee上拉取對(duì)于標(biāo)簽的值

Jenkins-CICD-python/Java包升級(jí)與回退,Jenkins,ci/cd,jenkins,運(yùn)維,gitlab
Jenkins-CICD-python/Java包升級(jí)與回退,Jenkins,ci/cd,jenkins,運(yùn)維,gitlab

3.2、添加流水線配置

Jenkins-CICD-python/Java包升級(jí)與回退,Jenkins,ci/cd,jenkins,運(yùn)維,gitlab

3.3、執(zhí)行

Jenkins-CICD-python/Java包升級(jí)與回退,Jenkins,ci/cd,jenkins,運(yùn)維,gitlab文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-648116.html

到了這里,關(guān)于Jenkins-CICD-python/Java包升級(jí)與回退的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于Jenkins的CICD

    基于Jenkins的CICD

    已安裝docker并設(shè)置為開機(jī)自啟 已安裝Docker-Compose 基于docker安裝Jenkins jenkins官網(wǎng) 編寫docker-compose.yml文件 首次啟動(dòng)會(huì)因?yàn)閿?shù)據(jù)卷data目錄沒有權(quán)限導(dǎo)致啟動(dòng)失敗,設(shè)置data目錄寫權(quán)限(/usr/local/docker/jenkins_docker/data) 啟動(dòng)jenkins 在/usr/local/docker/jenkins_docker目錄下執(zhí)行 訪問地址 賬號(hào)密碼

    2024年04月22日
    瀏覽(22)
  • jenkins的cicd操作

    jenkins的cicd操作

    持續(xù)集成(?Continuous Integration) 持續(xù)頻繁的(每天多次)將本地代碼“集成”到主干分支,并保證主干分支可用 持續(xù)交付(Continuous Delivery) 是持續(xù)集成的下一步,持續(xù)頻繁地將軟件的新版本交付到類生產(chǎn)環(huán)境(類似于預(yù)發(fā)),交付給測(cè)試、產(chǎn)品驗(yàn)收。 持續(xù)交付強(qiáng)調(diào)的是“

    2024年02月14日
    瀏覽(18)
  • Jenkins CICD過程常見異常

    Jenkins CICD過程常見異常

    Exception when publishing, exception message [Exec exit status not zero. Status [126] 1.1 報(bào)錯(cuò)日志 1.2 原因 Jenkins調(diào)用的腳本文件權(quán)限不夠 1.3 解決方案 chmod增加權(quán)限 Exception when publishing, exception message [Exec exit status not zero. Status [127]] 2.1 報(bào)錯(cuò)日志 2.2 原因 腳本文件目錄錯(cuò)誤 2.3 解決方案 將Jenkins配置

    2024年02月03日
    瀏覽(16)
  • 【CICD】Jenkins 常用操作手冊(cè)

    【CICD】Jenkins 常用操作手冊(cè)

    詞匯 說(shuō)明 Node 作為 Jenkins 環(huán)境的一部分并能夠執(zhí)行Pipeline或項(xiàng)目的機(jī)器,無(wú)論是 Master 還是Agent 都被認(rèn)為是 Node。 Master 存儲(chǔ)配置,加載插件以及為 Jenkins 呈現(xiàn)各種用戶界面的主控節(jié)點(diǎn) Agent 通常是一臺(tái)主機(jī)或容器,連接到 Jenkins 主控節(jié)點(diǎn),并執(zhí)行主控節(jié)點(diǎn)下發(fā)的任務(wù) Executor 節(jié)

    2024年03月19日
    瀏覽(27)
  • Jenkins和gitlab實(shí)現(xiàn)CICD

    Jenkins和gitlab實(shí)現(xiàn)CICD

    在開發(fā)TracerBackend服務(wù)的時(shí)候,每次更改代碼之后需要推送到gitlab,然后ssh登錄到Ubuntu的服務(wù)器上部署新的代碼。服務(wù)成功啟動(dòng)之后,在本地執(zhí)行測(cè)試用例,覺得這一套操作流程還是挺復(fù)雜的。想起公司的代碼發(fā)布流程,只要個(gè)人分支的代碼測(cè)試通過之后,合并到master分支的時(shí)

    2024年04月22日
    瀏覽(25)
  • 《項(xiàng)目實(shí)戰(zhàn)》 Jenkins 與 CICD、發(fā)布腳本
  • CICD 流程學(xué)習(xí)(五)Jenkins后端工程構(gòu)建

    CICD 流程學(xué)習(xí)(五)Jenkins后端工程構(gòu)建

    案例1:數(shù)據(jù)庫(kù)服務(wù)部署 MySQL部署 Redis部署 案例2:Jenkins全局工具配置 配置JDK環(huán)境 ? ?配置Git工具 ?配置Maven工具 配置郵件工具 ? 案例3:Jenkins后端工程構(gòu)建 Jenkins中創(chuàng)建HIS-BACKEND工程 ? ?測(cè)試HIS-BACKEND工程構(gòu)建 ? 案例4:Jenkins后端自動(dòng)發(fā)布 添加SSH服務(wù)器 ? ? HIS-BACKEND工程配置

    2024年02月08日
    瀏覽(23)
  • CICD中的Jenkins和Ansible解決方案

    每一次重裝系統(tǒng)或者是需要在服務(wù)器上正確運(yùn)行軟件,我們都需要重新安裝所有的package、dependency并進(jìn)行相應(yīng)配置的微調(diào)。而這一過程可能就會(huì)因?yàn)槭韬鰧?dǎo)致錯(cuò)誤,因此需要自動(dòng)化部署 持續(xù)整合,持續(xù)交付(CI/CD)的實(shí)踐,我們能夠周期性的對(duì)產(chǎn)品進(jìn)行各種專業(yè)測(cè)試,如果出

    2024年02月01日
    瀏覽(19)
  • 實(shí)戰(zhàn):Docker+Jenkins+Gitee構(gòu)建CICD流水線

    實(shí)戰(zhàn):Docker+Jenkins+Gitee構(gòu)建CICD流水線

    持續(xù)集成和持續(xù)交付一直是當(dāng)下流行的開發(fā)運(yùn)維方式,CICD省去了大量的運(yùn)維時(shí)間,也能夠提高開發(fā)者代碼集成規(guī)范。開發(fā)者在開發(fā)完需求功能后可以直接提交到gitee,然后jenkins直接進(jìn)行代碼編譯和一體化流水線部署。通過流水線部署可以極大的提高devops效率,也是企業(yè)信息自

    2024年02月14日
    瀏覽(34)
  • linux系統(tǒng)從零開始搭建CICD jenkins環(huán)境

    linux系統(tǒng)從零開始搭建CICD jenkins環(huán)境

    本文教你從零開始搭建jenkins環(huán)境,開始你的CICD之旅。 1.1 系統(tǒng)與安裝環(huán)境 本文的環(huán)境為云服務(wù)器環(huán)境,系統(tǒng)為linux Red-hat系統(tǒng)。版本信息如下: Linux version 3.10.0-1160.88.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP 如果是linux其它系統(tǒng),也

    2024年02月04日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包