cocos creator使用jenkins打包微信小游戲,自動上傳資源到cdn,windows版運行jenkins

cocos 版本2.4.11

在windows上jenkins的具體配置和部署,可參考上一篇文章cocos creator使用jenkins打包流程,打包webmobile_jenkins打包,發布,部署cocoscreator-CSDN博客

特別注意,windows上運行jenkins需要關閉windows自己的jenkins服務,需要手動使用命令行啟動jenkins服務,否則打包的時候會有cocos報錯,上面的文章中有提到

這里直接從新建jenkins構建任務開始

1.新建item,選擇自由風格,起個名字,這里是build Wechat

2.配置參數,分別配置

cdn的桶中的文件夾路徑:

下面是我的cdn地址,前面是桶,后面是具體路徑,這里只配置在桶中的路徑,不包含桶

還有是否上傳cdn:不上傳就是完整的包,選擇上傳就會自動上傳remote文件夾到cdn,讓然后刪除包中的remote文件夾,

還有是否清理緩存:一般可以不清理工程的temp和libaray,這里清理是為了防止緩存的資源和實際的不一致,清理后可重新生成

3.配置代碼的svn路徑和用戶名校驗,我這里工程師svn,也可以選擇git,需要在jenkins插件中安裝svn這里才能配置

4.具體的打包流程批處理命令

(1)需要在電腦上先安裝coscli,用于上傳到cdn的工具,具體安裝和配置可看官網對象存儲 下載與安裝配置_騰訊云

(2)要下載壓縮工具,我這里是7Z,用于壓縮最終包,供下載

重點解釋

1.需要修成自己對應的路徑(cocos安裝路徑,cocos項目具體路徑,打包類型,打包后保存路徑,訪問打包結果的服務端口,cdn的桶,資源服務器地址

set COCOS_PATH="C:\ProgramData\cocos\editors\Creator\2.4.11\CocosCreator.exe"

set PROJECT_PATH=%WORKSPACE%\client\proj

set BUILD_PLATFORM=wechatgame

set DEPLOY_ROOT="D:\buildPackage\wechatgame"

set WEB_PORT=8090

set COS_BUCKET="cos://gsr-cdn-125......."

set "REMOTE_SERVER=https://gsr-cdn.xxxxxx.com%ResServerPath%"

ResServerPath:是上面jenkins中配置的路徑變量

2.這里的大致就是,把項目配置中的settings/wechatgame.json中的資源服務器地址,替換成我們配置的,等打完包后,再重置回來,防止下次更新產生沖突

3.因為coscli放在C:\Users\Admin下,這里如果要上傳cdn,需要進入admin目錄下,如果配置的cnd上的資源版本路徑 例如 A/B,則會自動創建B文件夾,并在B文件夾下創建remote文件夾,然后把打包后的remote中的文件,傳上來,B文件夾前面的路徑需要自己提前創建好,上傳后移除項目包體中的remote文件夾,自己也可以選擇備份

4.這里就是壓縮構建好的包體,生成下載鏈接和版本信息,保存打包記錄中的最新的20個包,具體可自己修改要保存多少個歷史包體,我是用http-server啟動的包體訪問服務

5.我是windows任務,每次開機的時候啟動訪問服務,啟動jenkins,在上一個文章打包webmobile中提到過,有具體代碼,

下面是具體的批處理打包代碼

@echo off
chcp 65001 >nul
:: 設置命令行字體(需要支持 Unicode 的字體如 Consolas)
reg add "HKCU\Console" /v "FaceName" /t REG_SZ /d "Consolas" /f
reg add "HKCU\Console" /v "CodePage" /t REG_DWORD /d 65001 /f:: 設置本地環境支持 Unicode
setlocal enableextensions enabledelayedexpansion
set PYTHONIOENCODING=utf-8
set LANG=zh_CN.UTF-8:: ========== 配置區 ==========
set COCOS_PATH="C:\ProgramData\cocos\editors\Creator\2.4.11\CocosCreator.exe"
set PROJECT_PATH=%WORKSPACE%\client\proj\gamexiuxianv7
set BUILD_PLATFORM=wechatgame
set DEPLOY_ROOT="D:\buildPackage\wechatgame"
set WEB_PORT=8090
set COS_BUCKET="cos://gsr-cdn-125.......":: ========== 1. 清理環境 ==========
if "%CleanUpCache%"=="true" (echo [STEP 1] 清理緩存...rmdir /s /q "%PROJECT_PATH%\library"rmdir /s /q "%PROJECT_PATH%\temp"
):: ========== 2. 微信小游戲構建 ==========
echo [STEP 3] 構建微信小游戲(啟用分包)...
:: 構建修改 wechatgame.json 把cdn地址替換成配置的最新地址
set "SETTINGS_FILE=%PROJECT_PATH%\settings\wechatgame.json"
set "REMOTE_SERVER=https://gsr-cdn.xxxxxx.com%ResServerPath%"
set "BACKUP_FILE=%SETTINGS_FILE%.bak":: 步驟1:備份原始文件 wechatgame.json
copy "%SETTINGS_FILE%" "%BACKUP_FILE%""
powershell -Command "$json = Get-Content '%SETTINGS_FILE%' | ConvertFrom-Json; $json.REMOTE_SERVER_ROOT = '%REMOTE_SERVER%'; $json | ConvertTo-Json -Depth 100 | Set-Content '%SETTINGS_FILE%'"echo 已更新 REMOTE_SERVER_ROOT 為: %REMOTE_SERVER%
%COCOS_PATH% --path "%PROJECT_PATH%" --build "platform=%BUILD_PLATFORM%;"if %errorlevel% neq 0 (echo 錯誤:Cocos構建失敗exit /b 1
)
echo 正在恢復原始配置文件...wechatgame.json
move /y "%BACKUP_FILE%" "%SETTINGS_FILE%":: ========== 3. 上傳到COS ==========
echo [STEP 5] 上傳到騰訊云COS...
:: 檢查是否上傳CDN
if "%isUploadCDN%"=="true" (cd /d "C:\Users\Admin":: 創建文件夾標記echo Creating folder markers...coscli cp NUL "%COS_BUCKET%%ResServerPath%/.keep"if %ERRORLEVEL% neq 0 (echo [ERROR] Failed to create folder marker!exit /b 1)echo [SUCCESS] Folder marker created successfully!:: 創建remote文件夾標記coscli cp NUL "%COS_BUCKET%%ResServerPath%/remote/.keep"if %ERRORLEVEL% neq 0 (echo [ERROR] Failed to create remote folder marker!exit /b 1)echo [SUCCESS] Remote folder marker created successfully!:: 上傳remote文件夾內容echo Uploading remote folder...coscli cp "%PROJECT_PATH%\build\%BUILD_PLATFORM%\remote" "%COS_BUCKET%%ResServerPath%/remote" -rif %ERRORLEVEL% neq 0 (echo [ERROR] Upload failed!exit /b %ERRORLEVEL%)echo [SUCCESS] Upload completed!:: 執行后續操作移除remote文件夾rmdir /s /q "%PROJECT_PATH%\build\%BUILD_PLATFORM%\remote"
)set VERSION=build-%BUILD_NUMBER%
set BUILD_DIR=%PROJECT_PATH%\build\%BUILD_PLATFORM%
set ZIP_FILE=%DEPLOY_ROOT%\builds\%VERSION%.zipecho [STEP 6] 壓縮構建產物...
"D:\Program Files\7-Zip\7z.exe" a -tzip "%ZIP_FILE%" "%BUILD_DIR%\*" -mx9:: ========== 6. 生成下載鏈接 ==========
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr "IPv4"') do (for /f "tokens=*" %%j in ("%%i") do set IP=%%j
)
set IP=%IP: =%
set ACCESS_URL=http://!IP!:%WEB_PORT%/wechatgame/builds/%VERSION%.zipecho [STEP 7] 生成版本信息...
echo { "version": "!VERSION!", "time": "%DATE% %TIME%", "url": "!ACCESS_URL!" } > "%DEPLOY_ROOT%\current.json"
echo {
echo    "current": "!VERSION!",
echo    "time": "%DATE% %TIME%",
echo    "versions": [
for /d %%i in ("%DEPLOY_ROOT%\builds\*") do (set V=%%~nxiecho     { "version": "!V!", "path": "/builds/!V!" },
)
echo    ]
echo } > "%DEPLOY_ROOT%\versions.json"
:: 更新版本清單
dir %DEPLOY_ROOT%\builds /AD /B /O-N > %DEPLOY_ROOT%\versions.json:: ========== 8. 清理舊版本 ==========
echo [STEP 7] 清理舊構建...
set KEEP_BUILDS=20
for /f "skip=%KEEP_BUILDS% delims=" %%i in ('dir /b /o-d /ad "%DEPLOY_ROOT%\builds\build_*" 2^>nul') do (rmdir /s /q "%DEPLOY_ROOT%\builds\%%i"
):: ========== 9. 輸出結果 ==========
echo [SUCCESS] 構建上傳完成
echo 包下載鏈接: %ACCESS_URL%

下面是我的打包歷史存儲

最終下載打好的包,使用微信開發者工具手動上傳即可,如果打包選擇不上傳cdn,那包體中會包含remote,是一個完整的包體,包體太大微信開發者工具是傳不上去的

擴展:如果對打包后有特殊批處理,可自己添加,例如我這里打包后需要移動一些文件和壓縮圖片,

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

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

相關文章

力扣刷題(第三十六天)

靈感來源 - 保持更新,努力學習 - python腳本學習 多數元素 解題思路 這道題是要找出數組中出現次數超過一半的元素。有幾種不同的方法可以解決這個問題: 哈希表統計法:遍歷數組,用哈希表統計每個元素的出現次數,…

關于讀取CH584單片機的IO電平出現到的烏龍

本來是調用的庫里的 uint8_t get_wake_up_sta (void) {return GPIOB_ReadPortPin(GPIO_Pin_10);//return cc_gpio_get_in_io (WAKUP_CH);} 然后讀出來是0,我都配置上拉了。 搞不到原因。 最后是CH584單片機只有0和非零兩種狀態,讀出來1024被轉換成無…

Opencv常見學習鏈接(待分類補充)

文章目錄 1.常見學習鏈接 1.常見學習鏈接 1.Opencv中文官方文檔 2.Opencv C圖像處理:矩陣Mat 隨機數RNG 計算耗時 鼠標事件 3.Opencv C圖像處理:亮度對比度飽和度高光暖色調陰影漫畫效果白平衡浮雕羽化銳化顆粒感 4.OpenCV —— 頻率域濾波&#xff…

anaconda、miniconda、conda的關系及miniconda安裝

anaconda、miniconda、conda的關系及miniconda安裝 文章目錄 前言正文定義關系Linux安裝miniconda新建一個python3.8環境 參考 前言 本文用于記錄關于Anaconda、conda和Miniconda的定義及其關系的總結123: 正文 定義 conda 一個跨平臺的開源包管理和環境管理工具…

2024-2025年AI領域重大事件深度解析:技術革命、產業重構與未來挑戰

一、技術突破:從多模態到具身智能的跨越式演進 1. 生成式AI的“核爆級”升級 多模態融合:OpenAI的GPT-4o實現文本、圖像、語音的實時交互,GPQA基準測試得分達87.7%,在科學推理和編程任務中表現卓越1。谷歌的Gemini 2.0 Flash支持…

城市地下“隱形衛士”:激光甲烷傳感器如何保障燃氣安全?

城市“生命線”面臨的安全挑戰 城市地下管網如同人體的“血管”和“神經”,承載著燃氣、供水、電力、通信等重要功能,一旦發生泄漏或爆炸,將嚴重影響城市運行和居民安全。然而,由于管線老化、違規施工、監管困難等問題&#xff0…

融云 uni-app IMKit 上線,1 天集成,多端暢行

融云 uni-app IMKit 正式上線,支持一套代碼同時運行在 iOS、Android、H5、小程序主流四端,集成僅需 1 天,并可確保多平臺的一致性體驗。 融云 uni-app IMKit 在 Vue 3 的高性能加持下開發實現,使用 Vue 3 Composition API&#x…

《Claude:人工智能界的璀璨新星》

一、Claude 登場:AI 新時代的震撼開篇 在科技飛速發展的今天,人工智能(AI)已經成為推動社會進步和創新的核心力量。從智能語音助手到自動駕駛汽車,從圖像識別技術到自然語言處理,AI 正以驚人的速度滲透到我…

Python中tqdm進度條工具和enumerate函數的使用詳解

tqdm進度條工具 tqdm 是 Python 中一個非常流行的 進度條顯示工具庫,常用于迭代操作的可視化,比如訓練神經網絡、批量數據處理等任務。 一、tqdm 是什么? tqdm 全稱是 taqaddum(阿拉伯語,意為“進展”)&a…

yum命令常用選項

刷新倉庫列表 sudo yum repolist清理 Yum 緩存并生成新的緩存 sudo yum clean all sudo yum makecache驗證 EPEL 源是否已正確啟用 sudo yum repolist enabled安裝軟件包 sudo yum install <package-name> -y更新軟件包 sudo yum update -y僅更新指定的軟件包。 su…

linux debug技術

Linux是當今應用最廣泛的免費和開源操作系統&#xff0c;它是一個復雜的分布式操作系統。它的內核的強大和靈活性已成為引用它的原因之一。在掌握Linux內核的過程中&#xff0c;調試工具可以幫助開發人員獲得更深入的反思和理解。下面有25種不可或缺的Linux內核調試工具&#x…

【LinkedList demo 內部類講說】

LinkedList demo 內部類講說 1. Node節點2.MyLinkedList3. LinkedListTest 測試類 1. Node節點 public class Node<T> {private Node<T> pre;private Node<T> next;private T data;public Node() {}public Node getPre() {return pre;}public void setPre(N…

html主題切換小demo

主題切換功能為網頁和應用程序提供了多樣化的視覺風格與使用體驗。實現多主題切換的技術方案豐富多樣&#xff0c;其中 CSS 變量和 JavaScript 樣式控制是較為常見的實現方式。 以下是一個簡潔的多主題切換示例&#xff0c;愿它能為您的編程之旅增添一份趣味。 代碼展示 <…

【數據結構】

一、架構梳理 線性&#xff08;1:1) 線性表 順序存儲 –> arr 鏈式存儲 –> 指針 &#xff08;有頭&#xff0c;無頭&#xff09; 有頭是指有一個不存數據的頭&#xff0c;始終作為這個鏈表的起點。 會更加簡單&#xff0c;無頭的話&#xff0c;更改首部節點會麻煩。 頭…

UML學習指南:從零入門到實戰應用

為零基礎學習者設計的UML技術文檔&#xff0c;旨在通過詳細解釋和實際案例&#xff0c;從零開始掌握UML。 UML學習指南&#xff1a;從零入門到實戰應用 目錄 引言&#xff1a;UML是什么&#xff1f;為什么學習UML&#xff1f; 1.1 什么是UML&#xff1f;1.2 為什么我們需要UM…

Matlab實戰訓練項目推薦

以下是一系列適合不同技能水平的 MATLAB 實戰訓練項目&#xff0c;涵蓋基礎編程、數據分析、信號處理、圖像處理、控制系統、機器學習等領域。這些項目可幫助你鞏固理論知識并提升實際應用能力。 一、基礎項目&#xff08;適合初學者&#xff09; 矩陣運算與可視化 目標&#x…

從零開始:Python語言進階之異常處理

一、認識異常&#xff1a;程序運行中的“意外事件” 在編寫Python程序時&#xff0c;即使代碼語法完全正確&#xff0c;運行過程中也可能遭遇各種意外情況。這些意外被稱為異常&#xff0c;它們會打斷程序的正常執行流程。例如&#xff0c;當我們嘗試打開一個不存在的文件、用0…

Groovy:Java 的簡潔版

Groovy 是一種 動態、面向對象的編程語言&#xff0c;運行在 Java 虛擬機&#xff08;JVM&#xff09;上&#xff0c;并與 Java 高度兼容。你可以把它理解為“Java 的簡潔版 動態特性 腳本語言的靈活性”。 &#x1f9e0; Groovy 的核心特點 特性說明? 與 Java 高度兼容可以…

生成模型——PixelRNN與PixelCNN

一、PixelRNN PixelRNN 是一種基于循環神經網絡&#xff08;RNN&#xff09;的像素級生成模型&#xff0c;通過逐個像素地生成圖像來構建完整的圖像&#xff0c;其核心思想是將圖像中的像素視為序列&#xff0c;并利用 RNN 的能力來捕捉像素之間的依賴關系。 序列生成&#xf…

每日算法刷題Day14 5.24:leetcode不定長滑動窗口求子數組個數越長越合法4道題,用時1h20min

3. 3325.字符至少出現K次的子字符串I(中等&#xff0c;學習優化) 3325. 字符至少出現 K 次的子字符串 I - 力扣&#xff08;LeetCode&#xff09; 思想 1.給你一個字符串 s 和一個整數 k&#xff0c;在 s 的所有子字符串中&#xff0c;請你統計并返回 至少有一個 字符 至少…