Jenkins + CICD流程一鍵自動部署Vue前端項目(保姆級)

git倉庫地址:參考以下代碼完成,或者采用自己的代碼。

南澤/cicd-test

拉取項目代碼到本地

使用云服務器或虛擬機采用docker部署jenkins

安裝docker過程省略

采用docker部署jenkins,注意這里的命令,一定要映射docker路徑,否則無法找到(ps:已踩坑)

docker run -u root --name jenkins-test -d -p 8899:8080 -p 50000:50000 -v jenkins-data1:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:lts

容器啟動成功后,采用以docker logs 查看登錄密碼

docker logs -f 容器名?

然后進入登錄界面,注意放開防火墻端口,服務器放開安全組

然后選擇安裝推薦的插件即可

插件安裝完成,自行創建一個用戶,也可以使用admin賬戶繼續。

實例配置的地址采用默認的即可

進入jenkins找到憑據管理在Manage Jenkins底下

進入倉庫后,看到賬號和密碼配置。然后配置jenkins中的用戶名和密碼即可。

點擊這里配置私人令牌

輸入驗證密碼

將這個token填寫到Jenkins配置中。

然后保存并且應用配置,接下來創建自定義風格的item任務

配置git倉庫地址,然后選擇剛剛創建的憑據。

在這里指定一個node的版本號,其它的不用勾選。會保存后默認選擇。

再選擇Build steps,再執行以下命令。

注意這里項目里要有dockerfile文件,才能執行。

# 使用基于 CentOS 的 Nginx 鏡像
FROM nginx:latest# 設置環境變量,指定項目編碼為 UTF-8
ENV LANG=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8# 將 Vue 項目的構建產物(假設存放在本地的 dist 目錄)拷貝到容器內的 Nginx 靜態文件目錄
COPY ./dist/ /usr/share/nginx/html# 移除默認的nginx配置文件
RUN rm /etc/nginx/conf.d/default.conf# 將本地的 nginx.conf 文件拷貝到容器內的 Nginx 配置目錄
COPY ./nginx.conf /etc/nginx/conf.d# 暴露 Nginx 默認的 8088 端口
EXPOSE 8088# 啟動 Nginx 服務
CMD ["nginx", "-g", "daemon off;"]    

nginx.conf文件在這里給出

	#這里兩個環境使用一個nginx.conf文件,也可以單獨分開來#pro環境server {#監聽的端口listen  8088;server_name  localhost;#設置日志#access_log  logs/dev.access.log  main;#定位到index.htmllocation / {#linux下HTML文件夾,就是你的前端項目文件夾root  /usr/share/nginx/html;# 解決history模式try_files $uri $uri/ /index.html;#輸入網址(server_name:port)后,默認的訪問頁面index  index.html;}}

然后再選擇一個執行shell,并且將這個打包的環境執行成為一個鏡像。

具體命令已在此處位置給出。

CONTAINER_NAME="test-ui"
# 檢查容器是否存在
if docker ps -a --format '{{.Names}}' | grep -q "$CONTAINER_NAME"; thenecho "容器 $CONTAINER_NAME 存在,正在刪除..."docker rm -f "$CONTAINER_NAME"if [ $? -eq 0 ]; thenecho "容器 $CONTAINER_NAME 刪除成功。"elseecho "刪除容器 $CONTAINER_NAME 時出錯。"exit 1fi
elseecho "容器 $CONTAINER_NAME 不存在。"
fi
# 通過鏡像構建程序
docker run -d  --name $CONTAINER_NAME -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 -p 8088:8088 test-ui:latest

再次添加執行shell,判斷容器是否重復。最后通過docker run重新構建程序。

以上配置完成后,應用保存,然后執行構建即可。

此處大家根據具體的錯誤來排查即可,最后會執行成功。

然后是配置webhook,也是在剛剛的任務配置中配置。

在這里生成一個webhook的密碼。

然后進入gitee管理,配置webhook。

添加webhook,

這里填寫的地址就是剛剛jenkins中配置的URL,密碼也是剛剛在Jenkins中生成的隨機密碼。配置完成后點擊添加即可。注意這里需要選擇對應的事件,Push,

選擇推送代碼時出發。

然后保存應用即可,最后查看效果。

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

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

相關文章

使用 libevent 處理 TCP 粘包問題(基于 Content-Length 或雙 \r\n)

在基于 libevent 的 TCP 服務器開發中,處理消息邊界是常見需求。以下是兩種主流分包方案的完整實現: 一、基于 Content-Length 的分包方案 1.1 數據結構設計 typedef struct {struct bufferevent *bev;int content_length; // 當前消息的預期長度int received_bytes; //…

酶動力學預測工具CataPro安裝教程

簡介:預測酶動力學參數是酶發現和酶工程中的一項重要任務。在此,研究人員基于蛋白質語言模型、小分子語言模型和分子指紋,提出了一種名為 CataPro 的新酶動力學參數預測算法。該研究從 BRENDA 和 SABIO-RK 數據庫中收集了最新的轉化率&#x…

項目實戰:基于Spring WebFlux與LangChain4j實現大語言模型流式輸出

一、背景 在大語言模型(LLM)應用場景中,GPT-4等模型的響應生成往往需要數秒至數十秒的等待時間。傳統同步請求會導致用戶面對空白頁面等待,體驗較差。本文通過Spring WebFlux響應式編程與SSE服務器推送技術,實現類似打…

Go語言入門經典:數組與切片詳解

Go語言入門經典:數組與切片詳解 數組和切片是Go語言中兩種重要的數據結構。數組是一種固定長度的集合,而切片則是一種靈活的動態集合。本章將詳細講解數組和切片的定義、初始化、訪問元素、動態操作等內容,幫助讀者全面掌握這兩種數據結構。…

uniapp中如何用iconfont來管理圖標集成到我們開發的項目中

我們在開發不管小程序還是APP的過程中都會用到圖標這個東西,那么iconfont提供了對應的功能,怎么才能方便的集成到我們的小程序或者APP項目中,目標是方便調用并且方便管理。 首先注冊ICONFONT賬號 www.iconfont.cn中去注冊即可選擇我們需要的圖標如下 我們搜索我們需要的圖…

從實用的角度聊聊Linux下文本編輯器VIM

本文從實用的角度聊聊Vim的常用命令。何為實用?我舉個不實用的例子大家就明白了,用vim寫代碼。;) “vim是從 vi 發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用,和Emacs并列成…

優化程序命名:提升專業感與用戶體驗

在軟件開發的廣闊天地中,程序命名這一環節常常被開發者們忽視。不少程序沿用著簡單直白、缺乏雕琢的名字,如同素面朝天的璞玉,雖不影響其核心功能的發揮,但卻在無形之中錯失了許多提升用戶印象與拓展應用場景的機會。今天&#xf…

LeetCode BFS解決最短路問題

廣度優先搜索(BFS, Breadth-First Search)是一種用于圖和樹結構的遍歷算法,特別適合解決無權圖的最短路徑問題。 算法思想: BFS從起始節點開始,按照"廣度優先"的原則,逐層向外擴展搜索: 先訪問起始節點的…

[物聯網iot]對比WIFI、MQTT、TCP、UDP通信協議

第一步:先理解最基礎的關系(類比快遞) 假設你要給朋友寄快遞: Wi-Fi:相當于“公路和卡車”,負責把包裹從你家運到快遞站。 TCP/UDP:相當于“快遞公司的運輸規則”。 TCP:順豐快遞&…

基于python的電影數據分析及可視化系統

一、項目背景 隨著電影行業的快速發展,電影數據日益豐富,如何有效地分析和可視化這些數據成為行業內的一個重要課題。本系統旨在利用Python編程語言,結合數據分析與可視化技術,為電影行業從業者、研究者及愛好者提供一個便捷的電…

Java8 到 Java21 系列之 Lambda 表達式:函數式編程的開端(Java 8)

Java8 到 Java21 系列之 Lambda 表達式:函數式編程的開端(Java 8) 系列目錄 Java8 到 Java21 系列之 Lambda 表達式:函數式編程的開端(Java 8)Java 8 到 Java 21 系列之 Stream API:數據處理的…

②EtherCAT/Ethernet/IP/Profinet/ModbusTCP協議互轉工業串口網關

型號 協議轉換通信網關 EtherCAT 轉 Modbus TCP 配置說明 網線連接電腦到模塊上的 WEB 網頁設置網口,電腦所連網口的網段設置成 192.168.1.X(X 是除 8 外的任一數值)后,打開瀏覽器,地址欄輸入 192.168.1.8 &#xff…

機器視覺--python基礎語法

Python基礎語法 1. Python標識符 在 Python 里,標識符由字母、數字、下劃線組成。 在 Python 中,所有標識符可以包括英文、數字以及下劃線(_),但不能以數字開頭。 Python 中的標識符是區分大小寫的。 以下劃線開頭的標識符是有特殊意義的…

算法日常記錄

1. 鏈表 1.1 刪除鏈表的倒數第 N 個結點 問題描述:給你一個鏈表,刪除鏈表的倒數第 n 個結點,并且返回鏈表的頭結點。 輸入:head [1,2,3,4,5], n 2 輸出:[1,2,3,5] 思路:先讓fast跑n步,然后…

14使用按鈕實現helloworld(1)

目錄 還可以通過按鈕的方式來創建 hello world 涉及Qt 中的信號槽機制本質就是給按鈕的點擊操作,關聯上一個處理函數當用戶點擊的時候 就會執行這個處理函數 connect(誰發的信號, 信號類型, 誰來處理這個信息, 怎么處理的&…

【Golang】泛型與類型約束

文章目錄 一、環境二、沒有泛型的Go三、泛型的優點四、理解泛型(一)泛型函數(Generic function)1)定義2)調用 (二)類型約束(Type constraint)1)接…

k8s常用總結

1. Kubernetes 架構概覽 主節點(Master): 負責集群管理,包括 API Server、Controller Manager、Scheduler 和 etcd 存儲。 工作節點(Node): 運行 Pod 和容器,包含 kubelet、kube-pr…

Android 單例模式全解析:從基礎實現到最佳實踐

單例模式(Singleton Pattern)是軟件開發中常用的設計模式,其核心是確保一個類在全局范圍內只有一個實例,并提供全局訪問點。在 Android 開發中,單例模式常用于管理全局資源(如網絡管理器、數據庫助手、配置…

ffmpeg濾鏡使用

ffmpeg實現畫中畫效果 FFmpeg中,可以通過overlay將多個視頻流、多個多媒體采集設備、多個視頻文件合并到一個界面中,生成畫中畫的效果 FFmpeg 濾鏡 overlay 基本參數 x和y x坐標和Y坐標 eof action 遇到 eof表示時的處理方式,默認為重復。…

OpenAI即將開源!DeepSeek“逼宮”下,AI爭奪戰將走向何方?

OpenAI 終于要 Open 了。 北京時間 4 月 1 日凌晨,OpenAI 正式宣布:將在未來幾個月內開源一款具備推理能力的語言模型,并開放訓練權重參數。這是自 2019 年 GPT-2 部分開源以來,OpenAI 首次向公眾開放核心模型技術。 【圖片來源于…