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

CI/CD---使用新版云效流水線自動部署Java項目

這篇具有很好參考價值的文章主要介紹了CI/CD---使用新版云效流水線自動部署Java項目。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


CI/CD—使用新版云效流水線自動部署Java項目

兩大基本前提:

1、有一個自己的云服務(wù)器
2、項目代碼已經(jīng)提交到代碼倉庫,如gitee,github等

為什么需要流水線

1、除了第一次需要新建流水線,配置腳本外,后續(xù)所有的部署只需要提交代碼后,點擊運行流水線就行 。
2、流水線還可以回滾,此功能太過友好了。
3、當(dāng)然,你也可以選擇jenkins,這就仁者見仁,智者見智了。


由于我的服務(wù)器已經(jīng)部署過Java項目,所以相應(yīng)的部署環(huán)境都有了,包括JDK,MySQL,redis等等,所以此博客不再贅述如何安裝各種環(huán)境,如果沒有服務(wù)器,也沒有部署過項目,可參考我的另一篇博客,詳細講述了如何申請免費服務(wù)器,準(zhǔn)備項目運行所需環(huán)境,以及具體如何部署的細節(jié)

從零開始,Java個人項目部署上線,并能在公網(wǎng)訪問


一、流水線配置


1、百度搜索“云效流水線”,進入云效

CI/CD---使用新版云效流水線自動部署Java項目

2、選擇免費使用,并登陸阿里云賬號

CI/CD---使用新版云效流水線自動部署Java項目

3、選擇我的流水線—>新建流水線

CI/CD---使用新版云效流水線自動部署Java項目

4、選擇流水線模板(可以根據(jù)需求選擇不同模板)

CI/CD---使用新版云效流水線自動部署Java項目

5、流水線配置

CI/CD---使用新版云效流水線自動部署Java項目

選擇代碼源:比如碼云就是gitee,這里以碼云示例
添加服務(wù)器連接:碼云的授權(quán),非常簡單,按提示操作
代碼倉庫:配置服務(wù)器連接后,自動掃描獲取到了你的所有項目
選擇默認分支:一般是開發(fā)分支,而不是master分支,具體看平時提交到哪個分支
開啟分支模式(企業(yè)中肯定是要開啟的,這里只是個人項目,不需要開啟)
工作目錄:可以自定義,也可以不需要管,我這里不管

6、流水線:Java構(gòu)建上傳編輯

CI/CD---使用新版云效流水線自動部署Java項目

注意一下:
這里分為Java構(gòu)建構(gòu)建物上傳,Java構(gòu)建一目了然,一般情況下不需要改就行,構(gòu)建物上傳的話,就需要特別注意打包路徑了,我這里需要配置兩行,一行是jar包配置,一行是部署腳本配置。部署腳本后面會提供并解釋(我一直擔(dān)心各位看不清圖片,試試右鍵在新標(biāo)簽頁打開圖片吧)。

推薦本地打包一下,查看打包后的jar包名稱是什么,別配置錯了。各位此處唯一需要更改的就是jar包名稱。


7、流水線:主機部署編輯

CI/CD---使用新版云效流水線自動部署Java項目

可以看到,需要注意三點,其他不需要變,直接選擇即可:
主機組:新建主機組,可以根據(jù)實際情況,如果是購買的阿里云的服務(wù)器,選第一個,如果是騰訊云,華為云之類的非阿里云服務(wù)器,選第二個?;蛘邲]有服務(wù)器,選第三個。我這里是選擇的第一個作為示例。這方面我沒遇到任何阻礙,很簡單,自行摸索。
CI/CD---使用新版云效流水線自動部署Java項目

下載路徑:這個下載路徑可以不需要更改,只需要注意記住就是,后面的部署腳本需要填寫這個配置。

部署腳本:由于前面阿里云已經(jīng)構(gòu)建完成,在下載路徑會有對應(yīng)的package.tar的壓縮包,所以部署腳本存在的目的,就是解壓這個壓縮包到指定路徑,并執(zhí)行我們項目中的腳本文件,我的部署腳本如下:

mkdir -p /home/admin/spring-boot-template-1.0-SNAPSHOT
tar zxvf /home/admin/app/package.tgz -C /home/admin/spring-boot-template-1.0-SNAPSHOT/
sh /home/admin/spring-boot-template-1.0-SNAPSHOT/deploy.sh restart

非常好理解:各位唯一需要對應(yīng)更改的地方就是將腳本中所有的spring-boot-template-1.0-SNAPSHOT更改為你的jar包名稱即可,其他無需更改。

部署策略:隨便都行,看你自己選,不影響部署結(jié)果。

至此,流水線配置完成了。雖然我寫的多,那是我習(xí)慣性的保姆意識導(dǎo)致的,其實流程非常短,且簡單。

二、項目配置

項目配置需要注意兩點:

其一腳本文件deploy.sh,其二pom文件打包命令
注意一下,別混淆了項目中的腳本文件,和流水線中的部署腳本。流水線中的部署腳本用于解壓項目構(gòu)建后的壓縮包,以及執(zhí)行deploy.sh文件。而deploy.sh文件則是具體的部署腳本,包含了最基本的nohup java -jar xxx.jar &這個基本的部署命令。

1、腳本文件deploy

文件位置:項目最外層,與pom文件同一層級
文件內(nèi)容

#!/bin/bash

#修改APP_NAME為云效上的應(yīng)用名
APP_NAME=spring-boot-template-1.0-SNAPSHOT


PROG_NAME=$0
ACTION=$1
APP_START_TIMEOUT=20    # 等待應(yīng)用啟動的時間
APP_PORT=8088          # 應(yīng)用端口
HEALTH_CHECK_URL=http://127.0.0.1:${APP_PORT}/first # 應(yīng)用健康檢查URL
HEALTH_CHECK_FILE_DIR=/home/admin/status   # 腳本會在這個目錄下生成nginx-status文件
APP_HOME=/home/admin/${APP_NAME} # 從package.tgz中解壓出來的jar包放到這個目錄下
JAR_NAME=${APP_HOME}/target/${APP_NAME}.jar # jar包的名字
JAVA_OUT=${APP_HOME}/logs/start.log  #應(yīng)用的啟動日志

#創(chuàng)建出相關(guān)目錄
mkdir -p ${HEALTH_CHECK_FILE_DIR}
mkdir -p ${APP_HOME}/logs
usage() {
    echo "Usage: $PROG_NAME {start|stop|restart}"
    exit 2
}

health_check() {
    exptime=0
    echo "checking ${HEALTH_CHECK_URL}"
    while true
        do
            status_code=`/usr/bin/curl -L -o /dev/null --connect-timeout 5 -s -w %{http_code}  ${HEALTH_CHECK_URL}`
            if [ "$?" != "0" ]; then
               echo -n -e "\rapplication not started"
            else
                echo "code is $status_code"
                if [ "$status_code" == "200" ];then
                    break
                fi
            fi
            sleep 1
            ((exptime++))

            echo -e "\rWait app to pass health check: $exptime..."

            if [ $exptime -gt ${APP_START_TIMEOUT} ]; then
                echo 'app start failed'
               exit 1
            fi
        done
    echo "check ${HEALTH_CHECK_URL} success"
}
start_application() {
    echo "starting java process"
    nohup java -jar ${JAR_NAME} > ${JAVA_OUT} 2>&1 &
    echo "started java process"
}

stop_application() {
   checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'`

   if [[ ! $checkjavapid ]];then
      echo -e "\rno java process"
      return
   fi

   echo "stop java process"
   times=60
   for e in $(seq 60)
   do
        sleep 1
        COSTTIME=$(($times - $e ))
        checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'`
        if [[ $checkjavapid ]];then
            kill -9 $checkjavapid
            echo -e  "\r        -- stopping java lasts `expr $COSTTIME` seconds."
        else
            echo -e "\rjava process has exited"
            break;
        fi
   done
   echo ""
}
start() {
    start_application
    health_check
}
stop() {
    stop_application
}
case "$ACTION" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        stop
        start
    ;;
    *)
        usage
    ;;
esac

內(nèi)容很長,不管,直接負責(zé)粘貼即可,需要更改的地方就三個。
其一是APP_NAME改為你的jar包名稱;
其二是APP_PORT改為你的項目端口號;
其三是健康檢查接口,改為你自己項目的隨便一個接口,最好是個無需登錄授權(quán)的接口;

2、pom文件


pom打包插件如下配置:
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>

    <configuration>
        <includeSystemScope>true</includeSystemScope>
        <mainClass>cn.ycl.DemoApplication</mainClass>
    </configuration>
</plugin>

唯一需要改的是mainClass,改為你自己的啟動類(寫到這里突然發(fā)現(xiàn),我腦子里已經(jīng)沒有ssm了,只有spring boot。話說現(xiàn)在才搞持續(xù)部署,應(yīng)該是新項目吧,新項目不可能是ssm吧)

我這里貼出我的健康檢查接口,僅供參考
CI/CD---使用新版云效流水線自動部署Java項目

將以上所有更改提交并push到線上git,然后就可以回到流水線,直接點運行了。

3、特別注意一下:

其一,如果你的前文提到的流水線打包路徑配的不正確,有可能會出現(xiàn)構(gòu)建成功,部署成功,但是其實壓根啥都沒運行的情況,所以構(gòu)建日志一點要看,尤其是構(gòu)建的最后一步,構(gòu)建物上傳,請仔細查看,是否出現(xiàn)No file or directory find 之類的語句,出現(xiàn)了,代表你工作目錄配錯了。
CI/CD---使用新版云效流水線自動部署Java項目


其二,部署日志也要看,只有出現(xiàn)如下健康檢查接口通過了,才是部署成功

CI/CD---使用新版云效流水線自動部署Java項目

如果部署失敗了,別急,去看項目日志,根據(jù)deploy.sh文件中的配置,應(yīng)用的啟動日志在這里:
JAVA_OUT=${APP_HOME}/logs/start.log

如果start.log中確實有錯誤提示,那么就是你jar包的問題,流水線是沒問題的。要么百度,要么直接修改,解決了重新運行流水線就行。

4、我的項目地址

https://gitee.com/judgebymom/spring-boot-template.git

如果各位使用自己的項目無法進行流水線部署,或者說總是失敗,可以使用我這個項目試一下,可以fork到自己倉庫,方便gitee授權(quán)。如此,任何更改都不需要,直接創(chuàng)建流水線,運行即可。用于參照。祝各位一次成功,無需我的項目。

博主也是自己摸索成功的,走了非常多的彎路,上面所有的“注意一下”,以及"特別提醒",都是我走過的彎路,一些更離譜的錯誤,如果根據(jù)文章按部就班操作,是不會出現(xiàn)的,就不提了。


CI/CD---使用新版云效流水線自動部署Java項目

–我是“道祖且長”,一個在互聯(lián)網(wǎng)"茍且偷生"的Java程序員
“有任何問題,可評論,我看到就會回復(fù)”文章來源地址http://www.zghlxwxcb.cn/news/detail-455347.html

到了這里,關(guān)于CI/CD---使用新版云效流水線自動部署Java項目的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 你以為搞個流水線每天跑,團隊就在使用CI/CD實踐了?

    你以為搞個流水線每天跑,團隊就在使用CI/CD實踐了?

    在實踐中,很多團隊對于DevOps 流水線沒有很透徹的理解,要不就創(chuàng)建一大堆流水線,要不就一個流水線通吃。實際上,流水線的設(shè)計和寫代碼一樣,需要基于“業(yè)務(wù)場景”進行一定的設(shè)計編排,特別是很多通過“開源工具”搭建的流水線,更需要如此(商業(yè)的一體化平臺大部

    2024年02月08日
    瀏覽(41)
  • CI/CD流水線插件在服務(wù)質(zhì)量看護中的實踐

    CI/CD 是一種通過在應(yīng)用開發(fā)階段引入自動化來頻繁向客戶交付應(yīng)用的方法。CI/CD 的核心概念是持續(xù)集成、持續(xù)交付和持續(xù)部署。 作為一種面向開發(fā)和運維團隊的解決方案,CI/CD 主要針對在集成新代碼時所引發(fā)的問題(亦稱:“集成地獄”)。 具體而言,CI/CD 可讓持續(xù)自動化

    2024年01月23日
    瀏覽(39)
  • devops-5:從0開始構(gòu)建一條完成的CI CD流水線

    devops-5:從0開始構(gòu)建一條完成的CI CD流水線

    前文中已經(jīng)講述了靜態(tài)、動態(tài)增加agent節(jié)點,以動態(tài)的k8s cloud為例,下面就以Maven構(gòu)建Java程序為例,開始構(gòu)建出一條完整的CI CD流水線。 實現(xiàn)功能目標(biāo): 1.分別可以根據(jù)分支和tag從源碼倉庫clone代碼 2.拿到源碼后開始編譯 3.構(gòu)建image,并push到鏡像倉庫 4.部署到對應(yīng)k8s集群 5.部署

    2023年04月20日
    瀏覽(42)
  • [Gitlab CI] 自動取消舊流水線

    [Gitlab CI] 自動取消舊流水線

    當(dāng)某一分支開啟 Merge Request 后只要提交一次 commit 就會自動創(chuàng)建一個新的流水線,此時之前的 Pipeline 不會被取消,經(jīng)過下面的設(shè)置后可以實現(xiàn)自動取消舊流水線的功能。 ??通過提交(commit)觸發(fā)的同一分支流水線可以自動冗余取消,但是通過手動觸發(fā)的同一分支流水線不會

    2024年03月12日
    瀏覽(36)
  • 云效-流水線(基本教程)

    云效-流水線(基本教程)

    阿里云效地址: https://accountid-devops.aliyun.com/ 代碼在碼云, 服務(wù)器在騰訊云, 代碼是個聚合代碼 1. 選擇適合自己的模板 2. 創(chuàng)建碼云鏈接 3. 選擇代碼倉庫, 分支即可下一步 4. 部署,主機部署 5. 保存運行(獲取打包路徑) 6. 完善部署命令 按自己的需求進行填寫, 包括打包成docker鏡像

    2024年02月09日
    瀏覽(25)
  • 【測試】自動化測試平臺MeterSphere與CI流水線集成配置步驟

    【測試】自動化測試平臺MeterSphere與CI流水線集成配置步驟

    登錄 MeterSphere 控制臺。訪問個人信息下的 API Keys,點擊新建來創(chuàng)建 API Keys API Keys 創(chuàng)建好之后,可以進行查看、復(fù)制Access Key。 點擊 Secret Key 下的顯示并復(fù)制 Secret Key 在 Jenkins 上安裝 MeterSphere 提供的 Jenkins 插件。Jenkins 插件下載地址:https://github.com/metersphere/jenkins-plugin/release

    2023年04月20日
    瀏覽(39)
  • 【業(yè)務(wù)功能115】微服務(wù)-springcloud-springboot-Kubernetes-k8s集群-Kubesphere實現(xiàn)DevOps流水線-CI/CD-SonarQube- Jenkins

    【業(yè)務(wù)功能115】微服務(wù)-springcloud-springboot-Kubernetes-k8s集群-Kubesphere實現(xiàn)DevOps流水線-CI/CD-SonarQube- Jenkins

    dev 怎么開發(fā) ops 怎么運維 參考項目鏈接:https://github.com/kubesphere/devops-maven-sample 持續(xù)集成是指軟件個人的部分向軟件整體部分交付,頻繁進行集成以便更快地發(fā)現(xiàn)其中錯誤。 CI需要具備這些: 全面的自動化測試 這是實踐持續(xù)集成持續(xù)部署的基礎(chǔ),同時,選擇合適的自動化測

    2024年02月04日
    瀏覽(43)
  • CI-持續(xù)集成 — 軟件工業(yè)“流水線”技術(shù)實現(xiàn)

    CI-持續(xù)集成 — 軟件工業(yè)“流水線”技術(shù)實現(xiàn)

    持續(xù)集成(Continuous Integration)是一種軟件開發(fā)實踐。在本系列文章的前一章節(jié)已經(jīng)對其背景及理論體系進行了介紹。本小節(jié)則承接前面提出的理論構(gòu)想進行具體的技術(shù)實現(xiàn)。 《Google軟件測試之道》: \\\"每天,Google都要測試和發(fā)布數(shù)百萬個源文件,億萬行代碼。數(shù)以億計的構(gòu)建

    2024年02月12日
    瀏覽(41)
  • [小白]Java自動部署之-流水線[超詳細]

    [小白]Java自動部署之-流水線[超詳細]

    個人博客: www.wdcdbd.com ? devops文檔鏈接: https://pan.baidu.com/s/12kOXbduI6daJBXQ0FWJaig?pwd=1234? ? ? 提取碼:1234 在我們開發(fā)寫代碼的時候,可以在本地啟動,這樣似乎挺方便的,但是如果我們想要部署到服務(wù)器上就很費勁了,不但要maven構(gòu)建和將.jar包發(fā)布上去,還要重啟等一系列麻

    2024年01月23日
    瀏覽(22)
  • 37 | Kafka & ZMQ:自動化交易流水線

    37 | Kafka & ZMQ:自動化交易流水線

    在進行這節(jié)的學(xué)習(xí)前,我們先來回顧一下,前面三節(jié),我們學(xué)了些什么。 第 34 講,我們介紹了如何通過 RESTful API 在交易所下單;第 35 講,我們講解了如何通過 Websocket ,來獲取交易所的 orderbook 數(shù)據(jù);第 36 講,我們介紹了如何實現(xiàn)一個策略,以及如何對策略進行歷史回測。

    2024年01月16日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包