using Nuke.Common.Tooling; using System.ComponentModel; namespace MaaBuilder; [TypeConverter(typeof(TypeConverter))] public class ActionConfiguration : Enumeration { /// /// 开发构建测试 /// 触发条件 /// /// Push 或 PR 至 `dev` 分支 /// Maa 相关代码有更改 /// 可手动触发 /// /// 运行内容 (在 MaaElectronUI 发布后将会进行修改) /// /// 将会发布 Artifact /// 将会打包 MaaBundle /// 生成的包文件名为 `MaaBundle-Dev-{VERSION}.zip` /// 版本号为 `{yyyy-MM-dd-HH-mm-ss}-{commitHash[..7]}` /// MaaCore 使用 `RelWithDebInfo` 配置 /// MaaWpf 使用 `RelWithDebInfo` 配置 /// /// public static readonly ActionConfiguration DevBuild = new() { Value = "dev-build" }; /// /// 发布 MeoAssistantArknights (在 MaaElectronUI 发布后,此 Action 将被移除,由 代替) /// 触发条件 /// /// 创建了 Tag /// Tag 匹配 `v*` 规则 /// /// 运行内容 /// /// 将会发布 Artifact /// 将会打包 MeoAssistantArknights 和 MaaCore /// 生成的包文件名为 `MeoAssistantArknights_{VERSION}.zip` 和 `MaaCore-{VERSION}.zip` /// GitHub Actions 中运行时,将会发布 Release 至 `MaaAssistantArknights/MaaAssistantArknights` /// GitHub Actions 中运行时,`ref` 不匹配 `ref/tags/v*` 时将会抛错 /// GitHub Actions 中运行时,版本号为 `{Tag}` /// /// 其他环境中运行时,版本号为 /// /// 当前 HEAD 存在一个 Tag,则为 `{Tag}-Local` /// 当前 HEAD 不存在 Tag,则为 `v.{CommitHash[..7]}-Local` /// /// /// MaaCore 使用 `Release` 配置,单独的包中使用 `CICD` 配置 /// MaaWpf 使用 `Release` 配置 /// 将会移除 Debug 用文件 /// /// public static readonly ActionConfiguration ReleaseMaa = new() { Value = "release-maa" }; /// /// 发布 MaaCore (在 MaaElectronUI 发布前,此 Action 不执行) /// 触发条件 /// /// 创建了 Tag /// Tag 匹配 `v*` 规则 /// /// 运行内容 /// /// 将会发布 Artifact /// 将会打包 MaaCore /// 生成的包文件名为 `MaaCore-{VERSION}.zip` /// GitHub Actions 中运行时,将会发布 Release 至 `MaaAssistantArknights/MaaAssistantArknights` /// GitHub Actions 中运行时,`ref` 不匹配 `ref/tags/v*` 时将会抛错 /// GitHub Actions 中运行时,版本号为 `{Tag}` /// /// 其他环境中运行时,版本号为 /// /// 当前 HEAD 存在一个 Tag,则为 `{Tag}-Local` /// 当前 HEAD 不存在 Tag,则为 `v.{CommitHash[..7]}-Local` /// /// /// MaaCore 使用 `CICD` 配置 /// 将会移除 Debug 用文件 /// /// public static readonly ActionConfiguration ReleaseMaaCore = new() { Value = "release-maa-core" }; /// /// 发布 MaaResource /// 触发条件 /// /// 资源文件夹有更改 /// `master` 分支 /// /// 运行内容 /// /// 将会发布 Artifact /// 将会打包 MaaResource /// 生成的包文件名为 `MaaResource-{VERSION}.zip` /// GitHub Actions 中运行时,将会发布 Release 至 `MaaAssistantArknights/MaaResourceRelease` /// 版本号为 `{yyyy-MM-dd-HH-mm-ss}-{commitHash[..7]}` /// /// public static readonly ActionConfiguration ReleaseMaaResource = new() { Value = "release-maa-resource" }; public static implicit operator string(ActionConfiguration configuration) { return configuration.Value; } public static explicit operator ActionConfiguration(string value) => value switch { "dev-build" => DevBuild, "release-maa" => ReleaseMaa, "release-maa-core" => ReleaseMaaCore, "release-maa-resource" => ReleaseMaaResource, _ => null }; }