【保姆級】阿里云codeup配置Git的CI/CD步驟

以下是通過阿里云CodeUp的Git倉庫進行CI/CD配置的詳細步驟,涵蓋前端(Vue 3)和后端(Spring Boot)項目的自動化打包,并將前端打包結果嵌入到Nginx的Docker鏡像中,以及將后端打包的JAR文件拷貝至Docker指定目錄的完整流程:

前提條件

  1. 阿里云賬號:已注冊并登錄阿里云CodeUp。
  2. 項目代碼:前端(Vue 3)和后端(Spring Boot)項目代碼已托管到CodeUp倉庫。
  3. Docker環境:本地或服務器上已安裝Docker。
  4. 阿里云容器鏡像服務:已創建并配置好容器鏡像倉庫。

步驟 1:配置CodeUp倉庫

  1. 登錄CodeUp

    • 使用阿里云賬號登錄CodeUp。
    • 創建或選擇一個前端Vue 3項目倉庫和一個后端Spring Boot項目倉庫。
  2. 設置Webhook(可選):

    • 在CodeUp倉庫中,進入“設置”頁面,找到“Webhooks”選項。
    • 添加Webhook,指向阿里云CI/CD工具的Webhook地址(如果使用阿里云CI/CD工具)。

步驟 2:配置CI/CD流水線

2.1 配置前端項目CI/CD
  1. 創建前端Dockerfile

    • 在前端項目根目錄下創建Dockerfile,內容如下:
      # 基于官方Nginx鏡像
      FROM nginx:alpine# 將構建好的dist文件夾復制到Nginx的默認靜態文件目錄
      COPY dist /usr/share/nginx/html# 暴露80端口
      EXPOSE 80# 啟動Nginx
      CMD ["nginx", "-g", "daemon off;"]
      
  2. 配置CI/CD流水線

    • 在CodeUp中,進入項目的“CI/CD”頁面,選擇“流水線配置”。
    • 創建流水線任務,配置如下:
      • 任務1:安裝依賴并打包前端項目
        • 配置任務,選擇Node.js運行環境。
        • 構建命令:
          npm install
          npm run build
          
        • 設置觸發條件為特定標簽(如v*)。
        • 配置輸出路徑為dist文件夾。
      • 任務2:構建前端Docker鏡像
        • 使用Docker任務,將dist文件夾打包為Nginx鏡像。
        • 鏡像名稱格式:<阿里云鏡像倉庫地址>/frontend:<版本號>
        • 推送到阿里云容器鏡像服務。
      • 任務3:推送鏡像到阿里云容器鏡像服務
        • 配置Docker鏡像推送任務,將前端鏡像推送到阿里云容器鏡像服務。
2.2 配置后端項目CI/CD
  1. 創建后端Dockerfile

    • 在后端項目根目錄下創建Dockerfile,內容如下:
      # 基于官方OpenJDK鏡像
      FROM openjdk:17-jdk-alpine# 將構建好的JAR文件復制到鏡像中
      COPY target/*.jar app.jar# 暴露8080端口
      EXPOSE 8080# 啟動Spring Boot應用
      CMD ["java", "-jar", "app.jar"]
      
  2. 配置CI/CD流水線

    • 在CodeUp中,進入項目的“CI/CD”頁面,選擇“流水線配置”。
    • 創建流水線任務,配置如下:
      • 任務1:安裝依賴并打包后端項目
        • 配置任務,選擇Java運行環境。
        • 構建命令:
          mvn clean package
          
        • 設置觸發條件為特定標簽(如v*)。
      • 任務2:構建后端Docker鏡像
        • 使用Docker任務,將target目錄下的*.jar文件打包為Docker鏡像。
        • 鏡像名稱格式:<阿里云鏡像倉庫地址>/backend:<版本號>
        • 推送到阿里云容器鏡像服務。
      • 任務3:推送鏡像到阿里云容器鏡像服務
        • 配置Docker鏡像推送任務,將后端鏡像推送到阿里云容器鏡像服務。

步驟 3:配置環境變量

  1. 在CodeUp中配置環境變量
    • 在CodeUp項目的“設置”頁面中,找到“環境變量”選項。
    • 添加以下環境變量:
      • ALIYUN_ACR_USERNAME:阿里云容器鏡像服務的用戶名。
      • ALIYUN_ACR_PASSWORD:阿里云容器鏡像服務的密碼。
      • ALIYUN_ACR_REGISTRY:阿里云容器鏡像服務的倉庫地址。
    • 這些環境變量將用于Docker鏡像的推送和拉取操作。

步驟 4:測試CI/CD流程

  1. 推送代碼到CodeUp

    • 在本地倉庫中,為前端和后端項目分別打上特定標簽(如v1.0.0)。
    • 推送代碼到CodeUp倉庫:
      git tag v1.0.0
      git push origin v1.0.0
      
  2. 監控流水線執行

    • 在CodeUp的CI/CD頁面,查看流水線的執行情況。
    • 確保前端項目打包成功,并構建為Nginx Docker鏡像。
    • 確保后端項目打包成功,并構建為Spring Boot Docker鏡像。
    • 確保Docker鏡像成功推送到阿里云容器鏡像服務。

步驟 5:部署到Docker環境

  1. 拉取Docker鏡像

    • 在目標服務器上,拉取前端和后端Docker鏡像:
      docker pull <阿里云鏡像倉庫地址>/frontend:v1.0.0
      docker pull <阿里云鏡像倉庫地址>/backend:v1.0.0
      
  2. 運行Docker容器

    • 啟動前端容器:
      docker run -d -p 80:80 --name frontend <阿里云鏡像倉庫地址>/frontend:v1.0.0
      
    • 啟動后端容器:
      docker run -d -p 8080:8080 --name backend <阿里云鏡像倉庫地址>/backend:v1.0.0
      

步驟 6:優化和擴展

  1. 添加測試階段

    • 在CI/CD流水線中,為前端和后端項目添加測試任務。
    • 前端項目可以運行單元測試和端到端測試。
    • 后端項目可以運行單元測試和集成測試。
  2. 配置多環境部署

    • 使用環境變量和配置文件,支持開發、測試和生產環境的部署。
    • 例如,通過.env文件管理不同環境的配置。
  3. 集成更多工具

    • 根據項目需求,集成代碼質量檢查工具(如SonarQube)。
    • 集成自動化測試工具(如Jest、Mocha)。

通過以上步驟,可以實現前端和后端項目的自動化打包、鏡像構建和部署,提高開發和運維效率。

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

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

相關文章

LINUX網絡編程API原型詳細解析

1. 網絡體系 1.1. 簡介 網絡采用分而治之的方法設計&#xff0c;將網絡的功能劃分為不同的模塊&#xff0c;以分層的形式有機組合在一起。 每層實現不同的功能&#xff0c;其內部實現方法對外部其他層次來說是透明的。每層向上層提供服務&#xff0c;同時使用下層提供…

藍橋杯 之 暴力回溯

文章目錄 數字接龍小u的最大連續移動次數問題迷宮 在藍橋杯中&#xff0c;十分喜歡考察對于網格的回溯的問題&#xff0c;對于這類的問題&#xff0c;常常會使用到這個DFS和BFS進行考察&#xff0c;不過無論怎么考察&#xff0c;都只是會在最基礎的模本的基礎上&#xff0c;根據…

微信小程序的業務域名配置(通過ingress網關的注解)

一、背景 微信小程序的業務域名配置&#xff08;通過kong網關的pre-function配置&#xff09;是依靠kong實現&#xff0c;本文將通過ingress網關實現。 而我們的服務是部署于阿里云K8S容器&#xff0c;當然內核與ingress無異。 找到k8s–>網絡–>路由 二、ingress注解 …

Python數據可視化工具:六西格瑪及其基礎工具概覽

在當今數據驅動的時代&#xff0c;數據分析和可視化工具成為了各行業優化流程、提升質量的關鍵手段。六西格瑪&#xff08;Six Sigma&#xff09;作為一種以數據為基礎、追求完美質量的管理理念&#xff0c;其實施依賴于一系列基礎工具的靈活運用。而Python&#xff0c;憑借其強…

集群環境下Redis 商品庫存系統設計

目錄 環境實現基本結構代碼業務代碼主體庫存管理模塊 后續問題高并發臨界值與樂觀鎖問題 完整代碼總結后話 環境 我們現在要做商品秒殺系統。功能很簡單&#xff0c;就是庫存刪減。用戶先下單減庫存&#xff0c;之后再進行扣款。 實現 基本結構代碼 那么我們先看下如何搭建…

Spring MVC響應數據

handler方法分析 /*** TODO: 一個controller的方法是控制層的一個處理器,我們稱為handler* TODO: handler需要使用RequestMapping/GetMapping系列,聲明路徑,在HandlerMapping中注冊,供DS查找!* TODO: handler作用總結:* 1.接收請求參數(param,json,pathVariable,共享域等…

基于圖像識別的醫學影像大數據診斷系統的設計與實現

標題:基于圖像識別的醫學影像大數據診斷系統的設計與實現 內容:1.摘要 隨著醫學影像技術的快速發展&#xff0c;醫學影像數據量呈爆炸式增長&#xff0c;傳統的人工診斷方式在處理海量數據時效率低下且容易出現誤差。本研究的目的是設計并實現一個基于圖像識別的醫學影像大數據…

Python散點圖(Scatter Plot):數據探索的“第一張圖表”

在數據可視化領域,散點圖是一種強大而靈活的工具,它能夠幫助我們直觀地理解和探索數據集中變量之間的關系。本文將深入探討散點圖的核心原理、應用場景以及如何使用Python進行高效繪制。 后續幾篇將介紹高級技巧、復雜應用場景。 Python散點圖(Scatter Plot):高階分析、散點…

【redis】在 Spring中操作 Redis

文章目錄 基礎設置依賴StringRedisTemplate庫的封裝 運行StringList刪庫 SetHashZset 基礎設置 依賴 需要選擇這個依賴 StringRedisTemplate // 后續 redis 測試的各種方法&#xff0c;都通過這個 Controller 提供的 http 接口來觸發 RestController public class MyC…

微服務》》Kubernetes (K8S) 集群 安裝

關閉交換空間 # 切換 超級管理員身份 # 查看交換空間 free -h # 關閉交換空間 swapoff -a避免開啟啟動交換空間 # 注釋swap開頭的行 vim /etc/fstab關閉防火墻 # 關閉防火墻 # 因為K8S 是集群形式存在的 至少三臺 一主二從 &#xff08;一個master 兩個node&#xff09…

HTTP和RPC的區別

RPC和 HTTP是兩種常見的通信方式&#xff0c;它們在設計目標、使用場景和技術實現上有顯著區別。以下是它們的詳細對比&#xff1a; 1. 定義與核心思想 特性RPCHTTPRemote Procedure Call遠程過程調用HyperText Transfer Protocol超文本傳輸協議定義一種協議或框架&#xff0…

MySQL 簡記

MySQL 簡記 mysql中的數據存儲的結構是B樹 其與B樹的相同點是&#xff0c;B樹一個節點也可以存放多條數據&#xff0c;并且從左到右依次增大&#xff1b;不同點是&#xff0c;B樹的葉子結點之間也能相互連接。那么實際上是采取利用空間換區時間的策略。 那么B樹的樹結構like…

十七、實戰開發 uni-app x 項目(仿京東)- 后端指南

前面我們已經用uniappx進行了前端實戰學習 一、實戰 開發uni-app x項目(仿京東)-規劃-CSDN博客 二、實戰 開發uni-app x項目(仿京東)-項目搭建-CSDN博客 三、實戰開發 uni-app x 項目(仿京東)- 技術選型-CSDN博客 四、實戰開發 uni-app x 項目(仿京東)- 頁面設計-C…

Infura 簡介

文章目錄 Infura 簡介Infura 的主要功能Infura 的替代方案&#xff08;類似服務&#xff09;AlchemyQuickNodeAnkrMoralisPocket Network 什么時候選擇 Infura&#xff1f; Infura 簡介 Infura 是一個 區塊鏈基礎設施即服務&#xff08;BaaS, Blockchain as a Service&#xf…

TouchSocket TcpService:構建高性能Tcp服務的終極利器

這里寫目錄標題 TouchSocket TCPService&#xff1a;構建高性能TCP服務的終極利器引言TCPService核心特性快速入門&#xff1a;5分鐘搭建TCP服務1. 創建基礎TCP服務2. 自定義插件處理數據 高級用法實戰1. 客戶端連接管理 性能與穩定性保障示例與源碼結語 TouchSocket TCPServic…

Android Fresco 框架緩存模塊源碼深度剖析(二)

一、引言 在 Android 應用開發中&#xff0c;圖片加載和處理是常見且重要的功能。頻繁的圖片加載不僅會消耗大量的網絡流量&#xff0c;還會影響應用的性能和響應速度。因此&#xff0c;有效的緩存機制對于提升圖片加載效率和用戶體驗至關重要。Fresco 是 Facebook 開源的一款…

springboot使用163發送自定義html格式的郵件

springboot使用163發送html格式的郵件 效果: 下面直接開始教學 注冊郵箱&#xff0c;生成授權碼 獲取163郵箱的授權碼&#xff0c;可以按照以下步驟操作&#xff1a; 登錄163郵箱 打開瀏覽器&#xff0c;訪問 163郵箱登錄頁面。 使用你的郵箱賬號和密碼登錄。進入郵箱設置 登…

【Kafka】深入了解Kafka

集群的成員關系 Kafka使用Zookeeper維護集群的成員信息。 每一個broker都有一個唯一的標識&#xff0c;這個標識可以在配置文件中指定&#xff0c;也可以自動生成。當broker在啟動時通過創建Zookeeper的臨時節點把自己的ID注冊到Zookeeper中。broker、控制器和其他一些動態系…

C#使用SnsPictureBox.dll繪制點,線段、圓、折線、多邊形、測量尺等多種圖形。

CSDN下載地址&#xff1a;https://download.csdn.net/download/sns1991sns/87726867 gitee下載地址:https://gitee.com/linsns/SnsPictrueBox 支持2種繪制方式&#xff1a;響應式和等待式。 一、使用響應式繪制圖形 1、在窗口構造函數里添加繪制圖形的完成響應函數 public…

Hugging Face預訓練GPT微調ChatGPT(微調入門!新手友好!)

Hugging Face預訓練GPT微調ChatGPT&#xff08;微調入門&#xff01;新手友好&#xff01;&#xff09; 在實戰中&#xff0c;?多數情況下都不需要從0開始訓練模型&#xff0c;?是使?“??”或者其他研究者開源的已經訓練好的?模型。 在各種?模型開源庫中&#xff0c;最…