| 引擎/平台 | 关键步骤 | 常见坑与建议 |
|---|---|---|
| Cocos Creator/H5/小游戏 | 拉取代码 → Cocos CLI 构建 → JS/图片混淆 → 生成预览二维码 → 上传 CDN/平台 | 引擎 CLI 路径与权限;混淆后需回归关键路径;二维码与版本绑定便于回溯 |
| Unity(Windows/Android/iOS/WebGL) | Unity 无头构建(Batchmode)→ 资源后处理 → 生成版本哈希 → 归档符号与包体 | iOS 需正确配置 Keychain/Provisioning Profile;多平台建议用矩阵并行;大项目启用缓存提速 |
| H5/Egret | 拉取 → 执行 egret clean/build → 产物归档与分发 | 构建节点需将 egret.cmd 加入 PATH 或使用绝对路径,避免“命令未找到” |
| 分发与验收 | 上传至 CDN/本地网盘/平台 → 生成下载链接/二维码 → 邮件/IM 通知 | 上传前做校验和与去重;产物与符号分离管理,便于线上问题定位 |
pipeline {
agent { label 'game-builder' }
triggers { pollSCM('H/5 * * * *') }
parameters {
string(name: 'Version', defaultValue: '', description: '版本号')
booleanParam(name: 'Build', defaultValue: true)
booleanParam(name: 'Preview', defaultValue: false)
booleanParam(name: 'Upload', defaultValue: false)
booleanParam(name: 'Obfuscation', defaultValue: false)
booleanParam(name: 'UploadBundle', defaultValue: false)
booleanParam(name: 'EmailNotice', defaultValue: true)
}
environment {
JAVA_HOME = 'C:\\Program Files\\Java\\jdk-11'
UNITY_PATH = 'C:\\Program Files\\Unity\\Hub\\Editor\\2021.3.11f1\\Editor\\Unity.exe'
BUILD_TYPE = 'Development'
}
options { skipDefaultCheckout true }
stages {
stage('Checkout') {
steps { git branch: 'main', url: 'https://example.com/repo.git', credentialsId: 'git-cred-id' }
}
stage('Restore Cache') {
steps {
cache(path: 'Library', includes: '**/*', key: "unity-library-${BUILD_ID}") {
// 命中缓存可加速构建
}
}
}
stage('Build') {
steps {
script {
def code = bat returnStatus: true, script: "\"${env.UNITY_PATH}\" -batchmode -quit -buildTarget win64 -executeMethod BuildPipeline.Build -logFile build.log"
if (code != 0) error("Unity build failed with code ${code}")
// 可调用日志检查脚本:python check_log.py build.log
}
}
}
stage('Obfuscate') {
when { expression { params.Obfuscation } }
steps {
bat 'python obfuscate_js.py build/output'
bat 'python obfuscate_images.py build/output'
}
}
stage('Upload to CDN') {
when { expression { params.UploadBundle } }
steps { bat 'python upload_cdn.py build/remote https://cdn.example.com' }
}
stage('Preview & Upload') {
when { expression { params.Preview || params.Upload } }
steps {
bat 'tmg preview -o qrcode.png'
bat 'python process_qr.py qrcode.png'
script {
if (params.Upload) { bat "tmg upload -v ${params.Version}" }
}
}
}
}
post {
success {
script {
if (params.EmailNotice) {
mail to: 'team@example.com', subject: "Build Success - ${env.BUILD_NUMBER}", body: "See ${env.BUILD_URL}"
}
}
}
failure {
script {
if (params.EmailNotice) {
mail to: 'team@example.com', subject: "Build Failed - ${env.BUILD_NUMBER}", body: "See ${env.BUILD_URL}"
}
}
}
}
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。