命令行自动打包工具(支持批量、多渠道打包)集成到jenkins更香

可以可以,值得借鉴。 :innocent:

作者,高质高量。刚在看你框架,现在就在分享新的好东西了 :100: :+1:

:wave: :wave: :wave: :wave: (^U^)ノ~YO

贴一个交流群二维码,感兴趣的朋友来吧

建议:抽离逻辑
比如Cocos的构建、小游戏的打包、OSS的上传、飞书的通知
这样,就可以
支持不同的引擎、不同的平台、不同的对象存储、不同的办公软件

嗯 感谢建议
也这样想过,为了方便就一把梭出来了。。。

其实模块是抽离的,今天还有点时间,我再改改组装逻辑

主体逻辑有了,其实无所谓,让使用的人想怎么玩就怎么玩,也OK的。

是这个道理,开源的,大家可以随意改

1赞

重新组装了打包的流程
目前可以更方便的修改

   // AutoBuild.js中 分别注册了不同平台的打包流程

    constructor() {
        this._platformFlowBindFuncs = {
            ['android']: this.buildAndroidFlow,
            // ['ios']: this.buildIosFlow,
            ['harmonyos-next']: this.buildHarmonyNextFlow,
            ['wechatgame']: this.buildWechatFlow,
            ['bytedance-mini-game']: this.buildBytedanceFlow,
            ['alipay-mini-game']: this.buildAlipayFlow,
            // ['huawei-quick-game']: this.buildHuaweiQuickFlow,
        }
    }

想要修改对应平台的打包流程,只需要找到对应的函数
把不需要的调用删掉就差不多了

    /** 构建android渠道 */
    async buildAndroidFlow(channel) {
        let build = new BuildAndroid(channel, this._version, this._buildCode, this._debug);
        // 修改版本号
        build.modifyGameVersion();
        // 构建apk
        await build.buildApk();
        // 拷贝apk到指定目录 publish 目录
        await build.copyApkToPublish();
        // 给apk签名
        await build.signApk();
        // 上传apk到cdn
        await build.ossUpload();
        // 发送飞书通知
        if (this._notificationFeishu) {
            await build.notificationFeishu();
        }
        // 打印安卓打包完成信息
        console.log(colors("green", "安卓打包完成, apk文件路径:" + path.join(DataHelper.instance.project, 'publish', build.getApkName())));
    }

    /** 鸿蒙Next打包流程 */
    async buildHarmonyNextFlow() {
        let build = new BuildHarmony(this._version, this._buildCode, this._debug);
        // 修改鸿蒙项目版本号
        build.modifyGameVersion();
        // 构建鸿蒙app
        await build.buildApp();
        // 上传鸿蒙app和hap到cdn
        await build.ossUpload();
        // 发送飞书通知 
        if (this._notificationFeishu) {
            await build.notificationFeishu();
        }
        // 打印鸿蒙打包完成信息
        console.log(colors("green", "鸿蒙打包完成, hap文件路径:" + path.join(DataHelper.instance.project, 'publish', build.getHapName())));
        if (!this._debug) {
            console.log(colors("green", "鸿蒙打包完成, app文件路径:" + path.join(DataHelper.instance.project, 'publish', build.getAppName())));
        }
    }

    /** 支付宝小游戏打包流程 */
    async buildAlipayFlow() {
        let build = new BuildAlipay(this._version, this._message, this._debug);
        // 上传支付宝远程资源到cdn
        await build.uploadRes();
        // 上传支付宝小游戏到开发者后台 并且保存体验二维码到qrcode目录
        await build.uploadProject();

        // 发送飞书通知
        if (this._notificationFeishu) {
            let imagePath = path.join(DataHelper.instance.path, "qrcode", "ali_qrcode.png");
            await new NotificationFeishu().miniGameSend("alipay", this._version, imagePath, this._debug);
        }
    }

    /** 抖音小游戏打包流程 */
    async buildBytedanceFlow() {
        let build = new BuildBytedance(this._version, this._message, this._robot, this._debug);
        // 上传抖音远程资源到cdn
        await build.uploadRes();
        // 上传抖音小游戏到开发者后台 并且保存体验二维码到qrcode目录
        await build.uploadProject();
        // 发送飞书通知
        if (this._notificationFeishu) {
            let imagePath = path.join(DataHelper.instance.path, "qrcode", "bytedance_qrcode.png");
            await new NotificationFeishu().miniGameSend("bytedance", this._version, imagePath, this._debug);
        }
    }

    /** 微信小游戏打包流程 */
    async buildWechatFlow() {
        let build = new BuildWechat(this._version, this._message, this._robot, this._debug);
        // 上传微信远程资源到cdn
        await build.uploadRes();
        // 上传项目到微信后台
        await build.uploadProject();

        // 发送飞书通知 因为微信不支持自动修改体验版本 这里是提前把二维码放到目录下了
        if (this._notificationFeishu) {
            let imagePath = path.join(DataHelper.instance.path, "qrcode", "wechat_qrcode.jpg");
            await new NotificationFeishu().miniGameSend("wechatgame", this._version, imagePath, this._debug);
        }
    }

修改打包流程可以找到对应的平台,比如android

把飞书通知的代码注释掉

/** 构建android渠道 */
    async buildAndroidFlow(channel) {
        let build = new BuildAndroid(channel, this._version, this._buildCode, this._debug);
        // 修改版本号
        build.modifyGameVersion();
        // 构建apk
        await build.buildApk();
        // 拷贝apk到指定目录 publish 目录
        await build.copyApkToPublish();
        // 给apk签名
        await build.signApk();
        // 上传apk到cdn
        await build.ossUpload();
        // 发送飞书通知
        // if (this._notificationFeishu) {
        //     await build.notificationFeishu();
        // }
        // 打印安卓打包完成信息
        console.log(colors("green", "安卓打包完成, apk文件路径:" + path.join(DataHelper.instance.project, 'publish', build.getApkName())));
    }      

OV实现了吗?感谢分享,看一下

ov是什么?

oppo vivo的小游戏

那个我们游戏没上,就没搞,我这个是我们项目自用的,抽出来的

25年5月8日

添加自定义引擎的打包支持

二维码过期了

一会更一下

二维码已更新


更新二维码