最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

gitlab-runner結(jié)合docker部署項目全過程

 更新時間:2026年05月13日 09:49:46   作者:Jurzis  
本文介紹了使用GitLab和GitLab Runner自動化構(gòu)建Spring Boot項目的方法,搭建好GitLab和GitLab Runner后,在Spring Boot項目中創(chuàng)建.gitlab-ci.yml文件,配置腳本準(zhǔn)備Maven編譯項目、打包JAR包及運行JAR包,并在設(shè)置中配置CI/CD,這樣,點擊項目CI/CD即可自動化運行

前提

1.搭建好gitlab(直接拉下來安裝就好)

2.搭建好gitlab-runner(直接拉下來安裝就好)

3.安裝docker

使用gitlab創(chuàng)建一個springboot的工程

項目中會有一個.gitlab-ci.yml的文件

我根據(jù)我的要求更改文件如下:

variables:
  PROJECT_NAME: "ruoyi_test" #項目名稱,所有項目必須唯一  必填
  PORT: "8453" #運行在服務(wù)器的端口
  JAVA_OPTS: "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005" #jvm的參數(shù),可不設(shè)置
  SPRING_OPTS: "" #spring的參數(shù),可不設(shè)置
  JAR_PATH: "/ruoyi-admin"#打包jar的路徑 
  JAR_NAME: "ruoyi-admin.jar" #編譯出的jar文件名稱 必填
  PROJECT_PATH: "/project/ruoyi_admin" #項目運行的目錄 必填
stages:
- auto_deploy
- restart
build_and_start:
  stage: auto_deploy
  tags: 
  - local
  script:
  - echo "============上傳代碼============"
  - bash /home/gitlab-runner/script/prepare.sh "$PROJECT_NAME" "$JAR_NAME" "$PROJECT_PATH"
  - echo "============上傳代碼完畢,開始打包============"
  - bash /home/gitlab-runner/script/package.sh "$PROJECT_NAME" "$JAR_NAME" "$PROJECT_PATH" "$JAR_PATH"
  - echo "============打包完畢,開始運行============"
  - bash /home/gitlab-runner/script/run.sh "$JAR_NAME" "$PROJECT_PATH" "$PORT" "$JAVA_OPTS" "$SPRING_OPTS"
  when: manual
just_restart:
 stage: restart
 tags: 
 - local
 script:
 - bash /home/gitlab-runner/script/run.sh "$JAR_NAME" "$PROJECT_PATH" "$PORT" "$JAVA_OPTS" "$SPRING_OPTS"
 # 手動執(zhí)行
 when: manual

步驟

1.主要的邏輯都在腳本中,主要流程是,docker中使用maven鏡像,先從自己本地copy一份setting文件到/home/gitlab-runner/script目錄下(需要配置加速),方便maven打包更快。

2.prepare.sh腳本內(nèi)容,用于準(zhǔn)備maven編譯項目

#!/bin/bash
if [ -z "$1" ]; then 
  echo "未傳入項目名"
  exit 1
fi

if [ -z "$2" ]; then 
  echo "未傳入jar包名"
  exit 1
fi

if [ -z "$3" ]; then 
  echo "未傳入運行路徑"
  exit 1
fi

docker_name="$1"_maven
echo 即將創(chuàng)建docker-"$docker_name"
existflag=$(docker ps -a | grep "$docker_name")
echo $existflag
if [ -z "$existflag" ]; then
  docker run -itd --name $docker_name maven:3.6.0-jdk-8-alpine /bin/bash
else
  docker stop $docker_name
  docker rm $docker_name
  docker run -itd --name $docker_name maven:3.6.0-jdk-8-alpine /bin/bash
fi
docker cp /home/gitlab-runner/script/settings.xml "$docker_name":/usr/share/maven/conf/settings.xml;
docker cp ./ "$docker_name":/home/"$1";

2.package.sh腳本內(nèi)容,用戶編譯出jar包

#!/bin/bash

if [ -z "$1" ]; then 
  echo "未傳入項目名"
  exit 1
fi

if [ -z "$2" ]; then 
  echo "未傳入jar包名"
  exit 1
fi

if [ -z "$3" ]; then 
  echo "未傳入運行路徑"
  exit 1
fi
docker exec "$1"_maven bash -c "cd /home/$1; mvn clean; mvn package";
run_path=/ziyi"$3"
if [ ! -e $run_path ]; then
  mkdir -p $run_path
fi
docker cp "$1"_maven:/home/"$1""$4"/target/"$2" "$run_path"/"$2"
docker stop "$1"_maven
docker rm "$1"_maven

3.run.sh腳本內(nèi)容,用于執(zhí)行jar包。

#!/bin/bash

if [ -z "$1" ]; then 
  echo "未傳入jar包名"
  exit 1
fi

if [ -z "$2" ]; then 
  echo "未傳入運行路徑"
  exit 1
fi
if [ -e "/ziyi$2/pidfile.txt" ]; then
  process=$(ps aux | grep `cat "/ziyi$2/pidfile.txt"`)
  if [ ! -z process ]; then
    echo "關(guān)閉之前的"`cat "/ziyi$2/pidfile.txt"`
    kill -9 `cat "/ziyi$2/pidfile.txt"`
  fi
fi
echo "啟動-$2/$1-$4"
nohup java $4 -jar /ziyi$2/$1 --server.port=$3 $5 > /ziyi$2/logs.txt 2>&1 & echo $! > /ziyi$2/pidfile.txt

到這里點擊項目的CI/DI,項目就可以自動化運行了。(前提,需要在setting中設(shè)置一個ci/di,這個網(wǎng)上大部分教程都有)

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java獲取年月日(格式:xxxx年xx月xx日)的方法詳解

    Java獲取年月日(格式:xxxx年xx月xx日)的方法詳解

    在開發(fā)應(yīng)用程序時,經(jīng)常需要獲取當(dāng)前的年、月、日,并以特定格式進行展示或處理,本文將介紹如何獲取年月日,并將其格式化為“xxxx年xx月xx日”的形式,幫助你在應(yīng)用程序中處理日期信息,需要的朋友可以參考下
    2023-10-10
  • java讀取excel文件并復(fù)制(copy)文件到指定目錄示例

    java讀取excel文件并復(fù)制(copy)文件到指定目錄示例

    這篇文章主要介紹了java讀取excel文件并復(fù)制文件到指定目錄示例,需要的朋友可以參考下
    2014-02-02
  • java基礎(chǔ)之?dāng)?shù)組常用操作總結(jié)(必看篇)

    java基礎(chǔ)之?dāng)?shù)組常用操作總結(jié)(必看篇)

    下面小編就為大家?guī)硪黄猨ava基礎(chǔ)之?dāng)?shù)組常用操作總結(jié)(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • SpringBoot開啟虛擬線程的實現(xiàn)流程

    SpringBoot開啟虛擬線程的實現(xiàn)流程

    虛擬線程(Virtual?Thread)也稱協(xié)程或纖程,是一種輕量級的線程實現(xiàn),與傳統(tǒng)的線程以及操作系統(tǒng)級別的線程(也稱為平臺線程)相比,它的創(chuàng)建開銷更小、資源利用率更高,本文給大家介紹了SpringBoot如何開啟虛擬線程,需要的朋友可以參考下
    2024-06-06
  • java boolean占用內(nèi)存大小說明

    java boolean占用內(nèi)存大小說明

    這篇文章主要介紹了java boolean占用內(nèi)存大小,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中OGNL表達式語言的使用詳解

    Java中OGNL表達式語言的使用詳解

    本文介紹了OGNL(ObjectGraphNavigationLanguage)表達式語言,這是一種用于Java語言的對象圖導(dǎo)航和操作的表達式語言,它支持訪問對象屬性、調(diào)用對象方法、執(zhí)行算術(shù)和邏輯運算,以及處理集合和數(shù)組等操作,OGNL的語法簡潔明了
    2024-12-12
  • ExecutorService實現(xiàn)獲取線程返回值

    ExecutorService實現(xiàn)獲取線程返回值

    這篇文章主要介紹了ExecutorService實現(xiàn)獲取線程返回值,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 使用apache 的FileUtils處理文件的復(fù)制等操作方式

    使用apache 的FileUtils處理文件的復(fù)制等操作方式

    這篇文章主要介紹了使用apache 的FileUtils處理文件的復(fù)制等操作方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • jvm排查工具箱jvm-tools下載使用詳解

    jvm排查工具箱jvm-tools下載使用詳解

    這篇文章主要為大家介紹了jvm排查工具箱jvm-tools下載使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • mybatis-plus自定義業(yè)務(wù)實現(xiàn)方式

    mybatis-plus自定義業(yè)務(wù)實現(xiàn)方式

    本文介紹了使用MyBatis-Plus(簡稱MP)進行數(shù)據(jù)庫操作的實現(xiàn)步驟,包括創(chuàng)建實體類、Mapper接口和XML文件、Service接口和實現(xiàn)類,以及測試類,重點強調(diào)了業(yè)務(wù)層參數(shù)校驗、事務(wù)管理以及復(fù)雜SQL的處理方式
    2026-03-03

最新評論

嘉鱼县| 望都县| 浪卡子县| 湖口县| 措美县| 阿图什市| 嘉鱼县| 潼南县| 年辖:市辖区| 莱西市| 沾化县| 新邵县| 赣州市| 焦作市| 分宜县| 灌南县| 新竹县| 临沧市| 胶南市| 苏尼特左旗| 闻喜县| 酉阳| 衡南县| 牡丹江市| 邢台县| 阳西县| 汪清县| 同心县| 东乡县| 呼和浩特市| 湟源县| 宝坻区| 上蔡县| 油尖旺区| 封开县| 虹口区| 洛隆县| 鞍山市| 古蔺县| 平顺县| 柘荣县|