gitlab+portainer 實現Ruoyi Vue前端CI/CD

1. 場景

最近整了一個Ruoyi Vue 項目,需要實現CICD,經過一番坎坷,最終達成,現將技術要點和踩坑呈現。
具體操作流程和后端大同小異,后端操作參考連接如下:
https://blog.csdn.net/leinminna/article/details/147968082
前端項目結構及需要的文件:
在這里插入圖片描述

2. 項目

項目中需要配置兩個文件:.gitlab-ci.yml,Dockerfile,都放在項目的根目錄下,
注意: REGISTRY_URL: “harbor.xxxx.com/ics” 指向具體的倉庫中的地址.

2.1 .gitlab-ci.yml

內容如下

stages:- install- build- packagevariables:# 鏡像名稱和標簽IMAGE_NAME: "ics-web"IMAGE_TAG: "$CI_COMMIT_SHORT_SHA" # 使用 Git 提交哈希作為標簽REGISTRY_URL: "harbor.zhcoal.com/ics" # 私有倉庫地址NODE_VERSION: "16.20.2" # 指定Node.js版本# 緩存 node_modules 加速構建
cache:key: ${CI_COMMIT_REF_SLUG}paths:- node_modules/- dist/# 階段1:安裝依賴
install_deps:stage: installimage: node:$NODE_VERSIONscript:- npm install --registry=https://registry.npmmirror.com --legacy-peer-deps # 使用國內鏡像加速only:- dev- master- tagsartifacts:paths:- node_modules/# 階段2:構建生產環境代碼
build_prod:stage: buildimage: node:$NODE_VERSIONscript:- npm run build # 使用更新后的構建命令artifacts:paths:- dist/ # 傳遞dist目錄到后續階段only:- dev- master- tags# 階段3:構建和推送Docker鏡像
docker_build:stage: packageimage: docker:20.10services:- docker:20.10-dindvariables:DOCKER_BUILDKIT: 1before_script:- echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USERNAME" --password-stdin "$REGISTRY_URL"script:- mkdir docker-build-context- cp -r dist docker-build-context/- cp Dockerfile docker-build-context/- cp ics.crt docker-build-context/- cp ics.key docker-build-context/- cp default.conf docker-build-context/- cd docker-build-context- echo "構建上下文內容:"- ls -la- docker build -t "$REGISTRY_URL/$IMAGE_NAME:$IMAGE_TAG" .- docker push "$REGISTRY_URL/$IMAGE_NAME:$IMAGE_TAG"- if [[ "$CI_COMMIT_BRANCH" == "master" ]]; thendocker tag "$REGISTRY_URL/$IMAGE_NAME:$IMAGE_TAG" "$REGISTRY_URL/$IMAGE_NAME:latest";docker push "$REGISTRY_URL/$IMAGE_NAME:latest";firules:- if: $CI_COMMIT_BRANCH == "dev" || $CI_COMMIT_BRANCH == "master" || $CI_COMMIT_TAG
2.2 Dockerfile 內容

內容如下

FROM nginx
EXPOSE 80 443COPY ics.crt /etc/nginx/ssl/ics.crt
COPY ics.key /etc/nginx/ssl/ics.key
COPY dist /usr/share/nginx/html
COPY default.conf /etc/nginx/conf.d/default.conf

3. 其他同后臺配置一樣

參考:
https://blog.csdn.net/leinminna/article/details/147968082

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906545.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906545.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906545.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RNN神經網絡

RNN神經網絡 1-核心知識 1-解釋RNN神經網絡2-RNN和傳統的神經網絡有什么區別?3-RNN和LSTM有什么區別?4-transformer的歸一化有哪幾種實現方式 2-知識問答 1-解釋RNN神經網絡 Why:與我何干? 在我們的生活中,很多事情…

javaweb-html

1.交互流程: 瀏覽器向服務器發送http請求,服務器對瀏覽器進行回應,并發送字符串,瀏覽器能對這些字符串(html代碼)進行解釋; 三大web語言:(1)html&#xff1a…

從混亂到高效:我們是如何重構 iOS 上架流程的(含 Appuploader實踐)

從混亂到高效:我們是如何重構 iOS 上架流程的 在開發團隊中,有一類看不見卻至關重要的問題:環境依賴。 特別是 iOS App 的發布流程,往往牢牢綁死在一臺特定的 Mac 上。每次需要發版本,都要找到“那臺 Mac”&#xff…

FPGA:CLB資源以及Verilog編碼面積優化技巧

本文將先介紹Kintex-7系列器件的CLB(可配置邏輯塊)資源,然后分享在Verilog編碼時節省CLB資源的技巧。以下內容基于Kintex-7系列的架構特點,并結合實際設計經驗進行闡述。 一、Kintex-7系列器件的CLB資源介紹 Kintex-7系列是Xilin…

在linux里上傳本地項目到github中

首先先安裝git,安裝完git后,輸入如下操作指令: 輸入自己的用戶名和郵箱(為注冊GITHUB賬號時的用戶名和郵箱): git config --global user.name "111"git config --global user.email "121…

鴻蒙Flutter實戰:25-混合開發詳解-5-跳轉Flutter頁面

概述 在上一章中,我們介紹了如何初始化 Flutter 引擎,本文重點介紹如何添加并跳轉至 Flutter 頁面。 跳轉原理 跳轉原理如下: 本質上是從一個原生頁面A 跳轉至另一個原生頁面 B,不過區別在于,頁面 B是一個頁面容器…

c語言 寫一個五子棋

c語言 IsWin判贏 display 畫 10 x 10 的棋盤 判斷落子的坐標是否已有棋子 判斷落子坐標范圍是否超出范圍 // 五子棋 #include <stdio.h> #include <stdlib.h>// 畫棋盤 10 x 10的棋盤&#xff0c;len為行數 void display(char map[][10], int len) {system(&q…

格雷希爾快速封堵接頭,解決新能源汽車的氣密性檢測和三電系統的綜合測試

我國的新能源汽車已經遙遙領先&#xff0c;讓其他國家望塵莫及。格雷希爾GripSeal&#xff0c;為新能源汽車制造業提供快速可靠的密封連接器&#xff0c;讓測試速度加倍。以好抓取、易密封為設計理念&#xff0c;實現一秒連接&#xff0c;瞬時密封的高效性能。通過持續的產品設…

人工智能全景解析:從技術原理到未來趨勢的深度探索

人工智能(AI)作為21世紀最具變革性的技術之一&#xff0c;正以前所未有的速度重塑著人類社會。從智能手機中的語音助手到工廠里的智能機器人&#xff0c;從醫療診斷系統到金融風控模型&#xff0c;AI技術已滲透到我們生活和工作的方方面面。本文將全面解析人工智能的發展歷程、…

[密碼學實戰]使用C語言實現TCP服務端(二十九)

[密碼學實戰]使用C語言實現TCP服務端(二十九) 引言 TCP(傳輸控制協議)是互聯網通信中最核心的協議之一,它提供可靠的、面向連接的數據傳輸服務。通過C語言的標準Socket API,開發者可以靈活地實現TCP客戶端和服務端程序。本文將詳細講解TCP通信的原理,并提供完整的代碼…

IPv4 地址嵌入 IPv6 的前綴轉換方式詳解

1. 概述 在 IPv4 和 IPv6 網絡共存的過渡期&#xff0c;NAT64&#xff08;Network Address Translation 64&#xff09;是一種關鍵技術&#xff0c;用于實現 IPv6-only 網絡與 IPv4-only 網絡的互操作。NAT64 前綴轉換通過將 IPv4 地址嵌入到 IPv6 地址中&#xff0c;允許 IPv…

動態神經網絡(Dynamic NN)在邊緣設備的算力分配策略:MoE架構實戰分析

一、邊緣計算場景的算力困境 在NVIDIA Jetson Orin NX&#xff08;64TOPS INT8&#xff09;平臺上部署視頻分析任務時&#xff0c;開發者面臨三重挑戰&#xff1a; 動態負載波動 視頻流分辨率從480p到4K實時變化&#xff0c;幀率波動范圍20-60FPS 能效約束 設備功耗需控制在1…

算法優選系列(9.BFS 解決拓撲排序)

目錄 拓撲排序簡介&#xff1a; ?編輯 課程表&#xff08;medium&#xff09;&#xff1a; 課程表II&#xff08;medium&#xff09;: 火星詞典&#xff08;hard&#xff09;&#xff1a; 拓撲排序簡介&#xff1a; 有向無環圖&#xff08;DAG圖&#xff09; 如上圖每條邊…

SpringBoot3+Vue3(1)-后端 請求頭校驗,jwt退出登錄,mybaits實現數據庫用戶校驗

1.后端&#xff1a;jwt請求頭校驗 解析 工具類jwtUtils 解析token 令牌是否過期&#xff0c;驗證 正常、異常、運行時錯誤 倒入工具類是resource 工具類中添加解析用戶的方法&#xff1a; 在 在工具類添加id解析 此處調用 添加controller做測試 測試&…

【免殺】C2免殺技術(八)APC注入

本文主要寫點自己的理解&#xff0c;如有問題&#xff0c;請諸位指出&#xff01; 概念和流程 “APC注入”&#xff08;APC Injection&#xff09;是免殺與惡意代碼注入技術中的一種典型方法&#xff0c;主要用于在目標進程中遠程執行代碼&#xff0c;常見于后門、遠控、植入型…

git工具使用

安裝Git 在開始使用Git之前&#xff0c;需要在本地計算機上安裝Git工具。Git支持Windows、macOS和Linux系統。可以從Git官方網站下載適合操作系統的安裝包&#xff0c;并按照安裝向導進行安裝。 bash復制插入 # 在Linux上安裝Git sudo apt-get install git# 在macOS上安裝Git…

SpringBoot微服務編寫Dockerfile流程及問題匯總

背景 跟 Docker 磕了兩天&#xff0c;將一個包含 N 個微服務的應用部署包改造&#xff0c;使其能夠生成 Docker 鏡像&#xff0c;并在 Docker 容器中運行。幾年前玩過 Docker&#xff0c;隱約記得幾個命令「Dockerfile 命令&#xff1a;黑卡飲料、山楂果費、哦SUV&#xff0c;…

pytorch語法學習

啟動 python main.py --config llve.yml --path_y test -i output

基于LiveData和ViewModel的路線管理實現(帶PopupWindow刪除功能)

包含RecyclerView綁定、PopupWindow刪除功能和SharedPreferences持久化存儲。 1. RouteInfo類(實現Parcelable接口) java 復制 下載 import android.os.Parcel; import android.os.Parcelable;public class RouteInfo implements Parcelable {private Integer routeID;p…

jvm安全點(二)openjdk17 c++源碼垃圾回收安全點信號函數處理線程阻塞

1. 信號處理與樁代碼&#xff08;Stub&#xff09;?? 當線程訪問安全點輪詢頁&#xff08;Polling Page&#xff09;時&#xff1a; ??觸發 SIGSEGV 信號??&#xff1a;訪問只讀的輪詢頁會引發 SIGSEGV 異常。??信號處理函數??&#xff1a;pd_hotspot_signal_handl…