From c6b7ce97ba782e352c61d0d1ea6741d29de3de0f Mon Sep 17 00:00:00 2001 From: Liam Sho Date: Wed, 27 Jul 2022 21:03:54 +0800 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20=E6=96=87=E4=BB=B6=E6=95=B4?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/MaaBuilder/ActionConfiguration.cs | 2 -- tools/MaaBuilder/{ => Builder}/BuildConfiguration.cs | 0 tools/MaaBuilder/{ => Builder}/BuildParameters.cs | 7 ------- .../{ => Builder/CI}/Build.CI.GitHubActions.DevBuild.cs | 0 .../{ => Builder/CI}/Build.CI.GitHubActions.ReleaseMaa.cs | 0 .../{ => Builder/Helper}/Build.Helper.Bundler.cs | 0 .../MaaBuilder/{ => Builder/Helper}/Build.Helper.Github.cs | 0 .../MaaBuilder/{ => Builder/Helper}/Build.Helper.Logger.cs | 0 tools/MaaBuilder/{ => Builder/Job}/Build.Job.Bundle.cs | 0 tools/MaaBuilder/{ => Builder/Job}/Build.Job.Changelog.cs | 0 tools/MaaBuilder/{ => Builder/Job}/Build.Job.Clean.cs | 0 tools/MaaBuilder/{ => Builder/Job}/Build.Job.Compile.cs | 0 tools/MaaBuilder/{ => Builder/Job}/Build.Job.Publish.cs | 0 tools/MaaBuilder/{ => Builder/Job}/Build.Job.Version.cs | 0 tools/MaaBuilder/{ => Builder/Job}/Build.Job.Workflow.cs | 0 tools/MaaBuilder/MaaBuilder.csproj.DotSettings | 4 ++++ 16 files changed, 4 insertions(+), 9 deletions(-) rename tools/MaaBuilder/{ => Builder}/BuildConfiguration.cs (100%) rename tools/MaaBuilder/{ => Builder}/BuildParameters.cs (95%) rename tools/MaaBuilder/{ => Builder/CI}/Build.CI.GitHubActions.DevBuild.cs (100%) rename tools/MaaBuilder/{ => Builder/CI}/Build.CI.GitHubActions.ReleaseMaa.cs (100%) rename tools/MaaBuilder/{ => Builder/Helper}/Build.Helper.Bundler.cs (100%) rename tools/MaaBuilder/{ => Builder/Helper}/Build.Helper.Github.cs (100%) rename tools/MaaBuilder/{ => Builder/Helper}/Build.Helper.Logger.cs (100%) rename tools/MaaBuilder/{ => Builder/Job}/Build.Job.Bundle.cs (100%) rename tools/MaaBuilder/{ => Builder/Job}/Build.Job.Changelog.cs (100%) rename tools/MaaBuilder/{ => Builder/Job}/Build.Job.Clean.cs (100%) rename tools/MaaBuilder/{ => Builder/Job}/Build.Job.Compile.cs (100%) rename tools/MaaBuilder/{ => Builder/Job}/Build.Job.Publish.cs (100%) rename tools/MaaBuilder/{ => Builder/Job}/Build.Job.Version.cs (100%) rename tools/MaaBuilder/{ => Builder/Job}/Build.Job.Workflow.cs (100%) diff --git a/tools/MaaBuilder/ActionConfiguration.cs b/tools/MaaBuilder/ActionConfiguration.cs index a2510ab8db..d9d5110af2 100644 --- a/tools/MaaBuilder/ActionConfiguration.cs +++ b/tools/MaaBuilder/ActionConfiguration.cs @@ -8,7 +8,6 @@ public class ActionConfiguration : Enumeration { public static readonly ActionConfiguration DevBuild = new() { Value = "dev-build" }; public static readonly ActionConfiguration ReleaseMaa = new() { Value = "release-maa" }; - public static readonly ActionConfiguration ReleaseMaaResource = new() { Value = "release-maa-resource" }; public static implicit operator string(ActionConfiguration configuration) { @@ -19,7 +18,6 @@ public class ActionConfiguration : Enumeration { "dev-build" => DevBuild, "release-maa" => ReleaseMaa, - "release-maa-resource" => ReleaseMaaResource, _ => null }; } diff --git a/tools/MaaBuilder/BuildConfiguration.cs b/tools/MaaBuilder/Builder/BuildConfiguration.cs similarity index 100% rename from tools/MaaBuilder/BuildConfiguration.cs rename to tools/MaaBuilder/Builder/BuildConfiguration.cs diff --git a/tools/MaaBuilder/BuildParameters.cs b/tools/MaaBuilder/Builder/BuildParameters.cs similarity index 95% rename from tools/MaaBuilder/BuildParameters.cs rename to tools/MaaBuilder/Builder/BuildParameters.cs index cbfa522335..1d1d3df75c 100644 --- a/tools/MaaBuilder/BuildParameters.cs +++ b/tools/MaaBuilder/Builder/BuildParameters.cs @@ -224,13 +224,6 @@ public partial class Build Assert.True(GhTag is not null, "ReleaseMaa -> Auto Triggered,Tag 为 Null"); Assert.True(GitHubPersonalAccessToken is not null, "ReleaseMaa -> Auto Triggered,PAT 为 Null"); } - - // 若是 ReleaseMaaResource,Branch 必须为 Master,PAT 必须存在 - if (GhActionName == ActionConfiguration.ReleaseMaaResource) - { - Assert.True(GhBranch == MasterBranch, "ReleaseMaaResource -> Auto Triggered,Branch 不为 master"); - Assert.True(GitHubPersonalAccessToken is not null, "ReleaseMaaResource -> Auto Triggered,PAT 为 Null"); - } } } } diff --git a/tools/MaaBuilder/Build.CI.GitHubActions.DevBuild.cs b/tools/MaaBuilder/Builder/CI/Build.CI.GitHubActions.DevBuild.cs similarity index 100% rename from tools/MaaBuilder/Build.CI.GitHubActions.DevBuild.cs rename to tools/MaaBuilder/Builder/CI/Build.CI.GitHubActions.DevBuild.cs diff --git a/tools/MaaBuilder/Build.CI.GitHubActions.ReleaseMaa.cs b/tools/MaaBuilder/Builder/CI/Build.CI.GitHubActions.ReleaseMaa.cs similarity index 100% rename from tools/MaaBuilder/Build.CI.GitHubActions.ReleaseMaa.cs rename to tools/MaaBuilder/Builder/CI/Build.CI.GitHubActions.ReleaseMaa.cs diff --git a/tools/MaaBuilder/Build.Helper.Bundler.cs b/tools/MaaBuilder/Builder/Helper/Build.Helper.Bundler.cs similarity index 100% rename from tools/MaaBuilder/Build.Helper.Bundler.cs rename to tools/MaaBuilder/Builder/Helper/Build.Helper.Bundler.cs diff --git a/tools/MaaBuilder/Build.Helper.Github.cs b/tools/MaaBuilder/Builder/Helper/Build.Helper.Github.cs similarity index 100% rename from tools/MaaBuilder/Build.Helper.Github.cs rename to tools/MaaBuilder/Builder/Helper/Build.Helper.Github.cs diff --git a/tools/MaaBuilder/Build.Helper.Logger.cs b/tools/MaaBuilder/Builder/Helper/Build.Helper.Logger.cs similarity index 100% rename from tools/MaaBuilder/Build.Helper.Logger.cs rename to tools/MaaBuilder/Builder/Helper/Build.Helper.Logger.cs diff --git a/tools/MaaBuilder/Build.Job.Bundle.cs b/tools/MaaBuilder/Builder/Job/Build.Job.Bundle.cs similarity index 100% rename from tools/MaaBuilder/Build.Job.Bundle.cs rename to tools/MaaBuilder/Builder/Job/Build.Job.Bundle.cs diff --git a/tools/MaaBuilder/Build.Job.Changelog.cs b/tools/MaaBuilder/Builder/Job/Build.Job.Changelog.cs similarity index 100% rename from tools/MaaBuilder/Build.Job.Changelog.cs rename to tools/MaaBuilder/Builder/Job/Build.Job.Changelog.cs diff --git a/tools/MaaBuilder/Build.Job.Clean.cs b/tools/MaaBuilder/Builder/Job/Build.Job.Clean.cs similarity index 100% rename from tools/MaaBuilder/Build.Job.Clean.cs rename to tools/MaaBuilder/Builder/Job/Build.Job.Clean.cs diff --git a/tools/MaaBuilder/Build.Job.Compile.cs b/tools/MaaBuilder/Builder/Job/Build.Job.Compile.cs similarity index 100% rename from tools/MaaBuilder/Build.Job.Compile.cs rename to tools/MaaBuilder/Builder/Job/Build.Job.Compile.cs diff --git a/tools/MaaBuilder/Build.Job.Publish.cs b/tools/MaaBuilder/Builder/Job/Build.Job.Publish.cs similarity index 100% rename from tools/MaaBuilder/Build.Job.Publish.cs rename to tools/MaaBuilder/Builder/Job/Build.Job.Publish.cs diff --git a/tools/MaaBuilder/Build.Job.Version.cs b/tools/MaaBuilder/Builder/Job/Build.Job.Version.cs similarity index 100% rename from tools/MaaBuilder/Build.Job.Version.cs rename to tools/MaaBuilder/Builder/Job/Build.Job.Version.cs diff --git a/tools/MaaBuilder/Build.Job.Workflow.cs b/tools/MaaBuilder/Builder/Job/Build.Job.Workflow.cs similarity index 100% rename from tools/MaaBuilder/Build.Job.Workflow.cs rename to tools/MaaBuilder/Builder/Job/Build.Job.Workflow.cs diff --git a/tools/MaaBuilder/MaaBuilder.csproj.DotSettings b/tools/MaaBuilder/MaaBuilder.csproj.DotSettings index 7bc28484c4..b9d26d2bab 100644 --- a/tools/MaaBuilder/MaaBuilder.csproj.DotSettings +++ b/tools/MaaBuilder/MaaBuilder.csproj.DotSettings @@ -3,6 +3,10 @@ DO_NOT_SHOW DO_NOT_SHOW DO_NOT_SHOW + True + True + True + True Implicit Implicit ExpressionBody From ba4a05b58aed20f7b29f02b7954d9145368a26f2 Mon Sep 17 00:00:00 2001 From: Liam Sho Date: Thu, 28 Jul 2022 04:41:24 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=20Checksum=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix: #1341 --- .github/workflows/dev-build.yml | 2 +- .github/workflows/release-maa.yml | 2 +- .nuke/build.schema.json | 1 + tools/MaaBuilder/Build.cs | 14 ++----- .../Builder/Helper/Build.Helper.Bundler.cs | 38 +++++++++++++++++-- .../Builder/Helper/Build.Helper.Github.cs | 2 +- .../Builder/Job/Build.Job.Bundle.cs | 25 +++++------- .../Builder/Job/Build.Job.Publish.cs | 6 +-- tools/MaaBuilder/MaaBuilder.csproj | 2 +- tools/MaaBuilder/Models/Checksum.cs | 18 +++++++++ 10 files changed, 73 insertions(+), 37 deletions(-) create mode 100644 tools/MaaBuilder/Models/Checksum.cs diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml index cf7bf21311..cdaff30d71 100644 --- a/.github/workflows/dev-build.yml +++ b/.github/workflows/dev-build.yml @@ -50,7 +50,7 @@ jobs: name: windows-latest runs-on: windows-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Cache .nuke/temp, ~/.nuget/packages uses: actions/cache@v2 with: diff --git a/.github/workflows/release-maa.yml b/.github/workflows/release-maa.yml index 497baee2ca..68563e702c 100644 --- a/.github/workflows/release-maa.yml +++ b/.github/workflows/release-maa.yml @@ -26,7 +26,7 @@ jobs: name: windows-latest runs-on: windows-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Cache .nuke/temp, ~/.nuget/packages uses: actions/cache@v2 with: diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json index 35186d1765..b7d738f7a3 100644 --- a/.nuke/build.schema.json +++ b/.nuke/build.schema.json @@ -21,6 +21,7 @@ "AppVeyor", "AzurePipelines", "Bamboo", + "Bitbucket", "Bitrise", "GitHubActions", "GitLab", diff --git a/tools/MaaBuilder/Build.cs b/tools/MaaBuilder/Build.cs index cb312c4e00..6ae652be8d 100644 --- a/tools/MaaBuilder/Build.cs +++ b/tools/MaaBuilder/Build.cs @@ -1,17 +1,11 @@ using Nuke.Common; -using Nuke.Common.Execution; -using Nuke.Common.Git; -using Nuke.Common.IO; -using Nuke.Common.Tools.GitHub; -using Octokit; using System; -using System.Linq; +using System.Collections.Generic; using System.Runtime.InteropServices; - +using MaaBuilder.Models; namespace MaaBuilder; -[CheckBuildProjectConfigurations] public partial class Build : NukeBuild { public static int Main() @@ -40,16 +34,16 @@ public partial class Build : NukeBuild const string DevBranch = "dev"; const string MaaDevBundlePackageNameTemplate = "MaaBundle-Dev-{VERSION}"; - const string MaaResourcePackageNameTemplate = "MaaResource-{VERSION}"; string Version = ""; string ChangeLog = ""; string MaaDevBundlePackageName => MaaDevBundlePackageNameTemplate.Replace("{VERSION}", Version); - string MaaResourcePackageName => MaaResourcePackageNameTemplate.Replace("{VERSION}", Version); string LatestTag; + List ArtifactChecksums = new(); + protected override void OnBuildInitialized() { Parameters = new BuildParameters(this); diff --git a/tools/MaaBuilder/Builder/Helper/Build.Helper.Bundler.cs b/tools/MaaBuilder/Builder/Helper/Build.Helper.Bundler.cs index 0012ace6e0..830cf31ef0 100644 --- a/tools/MaaBuilder/Builder/Helper/Build.Helper.Bundler.cs +++ b/tools/MaaBuilder/Builder/Helper/Build.Helper.Bundler.cs @@ -1,7 +1,10 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; +using System.Security.Cryptography; +using System.Text; using MaaBuilder.Models; using Microsoft.Extensions.FileSystemGlobbing; using Nuke.Common; @@ -11,7 +14,7 @@ namespace MaaBuilder; public partial class Build { - void BundlePackage(AbsolutePath input, string bundleName) + void BundlePackage(AbsolutePath input, string bundleName, string packageType) { var packName = bundleName; if (packName.EndsWith(".zip") is false) @@ -27,6 +30,27 @@ public partial class Build Information($"创建压缩文件:{bundle}"); ZipFile.CreateFromDirectory(input, bundle, CompressionLevel.SmallestSize, false); + + var sourceDirectory = new DirectoryInfo(input); + var allFiles = sourceDirectory.GetFiles("*.*", SearchOption.AllDirectories); + var allHashes = allFiles.Select(x => FileSystemTasks.GetFileHash(x.FullName)).OrderBy(x => x); + var hashCombinedBuilder = new StringBuilder(); + foreach (var h in allHashes) + { + hashCombinedBuilder.Append(h); + } + var combinedHashString = hashCombinedBuilder.ToString(); + var hash = GetStringMd5(combinedHashString); + + var bundleHash = FileSystemTasks.GetFileHash(bundle); + + ArtifactChecksums.Add(new Checksum + { + FileHash = bundleHash, + FileIdentity = hash, + FileName = packName, + PackageType = packageType + }); } static void MoveGlobFiles(AbsolutePath source, AbsolutePath target, IEnumerable include, IEnumerable exclude) @@ -78,6 +102,14 @@ public partial class Build ZipFile.ExtractToDirectory(file, tempDir, true); } - BundlePackage(tempDir, bundleName); + BundlePackage(tempDir, bundleName, package.PackageType); + } + + static string GetStringMd5(string input) + { + using var md5 = MD5.Create(); + var inputBytes = Encoding.ASCII.GetBytes(input); + var hashBytes = md5.ComputeHash(inputBytes); + return Convert.ToHexString(hashBytes); } } diff --git a/tools/MaaBuilder/Builder/Helper/Build.Helper.Github.cs b/tools/MaaBuilder/Builder/Helper/Build.Helper.Github.cs index e390cd9406..d9a9e6e048 100644 --- a/tools/MaaBuilder/Builder/Helper/Build.Helper.Github.cs +++ b/tools/MaaBuilder/Builder/Helper/Build.Helper.Github.cs @@ -12,7 +12,7 @@ public partial class Build void CreateGitHubRelease(string repo, string commitish, string releaseName) { - var assets = Parameters.ArtifactOutput.GlobFiles("*.zip", "checksum.txt"); + var assets = Parameters.ArtifactOutput.GlobFiles("*.zip", "checksum.json"); var release = new NewRelease(Version) { diff --git a/tools/MaaBuilder/Builder/Job/Build.Job.Bundle.cs b/tools/MaaBuilder/Builder/Job/Build.Job.Bundle.cs index d84ef7d713..c5265c4bf9 100644 --- a/tools/MaaBuilder/Builder/Job/Build.Job.Bundle.cs +++ b/tools/MaaBuilder/Builder/Job/Build.Job.Bundle.cs @@ -1,10 +1,7 @@ -using System; -using System.Collections.Generic; -using System.IO; +using System.IO; using System.Text; -using MaaBuilder.Models; +using System.Text.Json; using Nuke.Common; -using Nuke.Common.IO; namespace MaaBuilder; @@ -16,7 +13,7 @@ public partial class Build .Executes(() => { var buildOutput = Parameters.BuildOutput / BuildConfiguration.Release; - BundlePackage(buildOutput, MaaDevBundlePackageName); + BundlePackage(buildOutput, MaaDevBundlePackageName, "DevBundle"); }); Target UseMaaRelease => _ => _ @@ -40,18 +37,14 @@ public partial class Build .Executes(() => { Information("已完成打包"); - var checksumFile = Parameters.ArtifactOutput / "checksum.txt"; - var checksum = new List(); + var checksumFile = Parameters.ArtifactOutput / "checksum.json"; - foreach (var file in Parameters.ArtifactOutput.GlobFiles("*.zip")) + foreach (var chs in ArtifactChecksums) { - var size = (new FileInfo(file).Length / 1024.0 / 1024.0).ToString("F3"); - var hash = FileSystemTasks.GetFileHash(file); - Information($"找到 Artifact ({hash}):{file} ({size} MB)"); - - checksum.Add($"{file.Name}:{hash}"); + Information($"Artifact:{chs}"); } - - File.WriteAllLines(checksumFile, checksum, Encoding.UTF8); + + var str = JsonSerializer.Serialize(ArtifactChecksums); + File.WriteAllText(checksumFile, str, Encoding.UTF8); }); } diff --git a/tools/MaaBuilder/Builder/Job/Build.Job.Publish.cs b/tools/MaaBuilder/Builder/Job/Build.Job.Publish.cs index dd34619885..22c14c5b81 100644 --- a/tools/MaaBuilder/Builder/Job/Build.Job.Publish.cs +++ b/tools/MaaBuilder/Builder/Job/Build.Job.Publish.cs @@ -8,7 +8,7 @@ public partial class Build { Target UsePublishArtifact => _ => _ .After(SetPackageBundled, SetMaaChangeLog) - .Produces(RootDirectory / "artifacts" / "*.zip") + .Produces(RootDirectory / "artifacts" / "*.*") .OnlyWhenStatic(() => GitHubActions != null); Target UsePublishRelease => _ => _ @@ -21,7 +21,7 @@ public partial class Build if (Parameters.GhActionName == ActionConfiguration.DevBuild) { - Information($"DevBuild 跳过发布 Release"); + Information("DevBuild 跳过发布 Release"); return; } @@ -36,8 +36,6 @@ public partial class Build Information($"运行 ReleaseMaa 将在 {Parameters.MainRepo} 创建 Release {Parameters.GhTag}"); CreateGitHubRelease(Parameters.MainRepo, Parameters.CommitHashFull, Version); - - return; } }); } diff --git a/tools/MaaBuilder/MaaBuilder.csproj b/tools/MaaBuilder/MaaBuilder.csproj index 37207c6d95..64d49d0158 100644 --- a/tools/MaaBuilder/MaaBuilder.csproj +++ b/tools/MaaBuilder/MaaBuilder.csproj @@ -11,7 +11,7 @@ - + diff --git a/tools/MaaBuilder/Models/Checksum.cs b/tools/MaaBuilder/Models/Checksum.cs new file mode 100644 index 0000000000..3b4e37adcb --- /dev/null +++ b/tools/MaaBuilder/Models/Checksum.cs @@ -0,0 +1,18 @@ +using System.Text.Json.Serialization; + +namespace MaaBuilder.Models; + +public record Checksum +{ + [JsonPropertyName("file_name")] + public string FileName { get; set; } + + [JsonPropertyName("package_type")] + public string PackageType { get; set; } + + [JsonPropertyName("file_hash")] + public string FileHash { get; set; } + + [JsonPropertyName("file_identity")] + public string FileIdentity { get; set; } +} From 12425d2977da9cf8be5c51b0e0b40814e79f66f3 Mon Sep 17 00:00:00 2001 From: Liam Sho Date: Thu, 28 Jul 2022 05:14:38 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=20=E7=BB=9F=E4=B8=80=20MD5=20?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E7=A0=81=E5=A4=A7=E5=B0=8F=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/MaaBuilder/Builder/Helper/Build.Helper.Bundler.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/MaaBuilder/Builder/Helper/Build.Helper.Bundler.cs b/tools/MaaBuilder/Builder/Helper/Build.Helper.Bundler.cs index 830cf31ef0..4590603dcb 100644 --- a/tools/MaaBuilder/Builder/Helper/Build.Helper.Bundler.cs +++ b/tools/MaaBuilder/Builder/Helper/Build.Helper.Bundler.cs @@ -33,7 +33,9 @@ public partial class Build var sourceDirectory = new DirectoryInfo(input); var allFiles = sourceDirectory.GetFiles("*.*", SearchOption.AllDirectories); - var allHashes = allFiles.Select(x => FileSystemTasks.GetFileHash(x.FullName)).OrderBy(x => x); + var allHashes = allFiles + .Select(x => FileSystemTasks.GetFileHash(x.FullName).ToUpperInvariant()) + .OrderBy(x => x); var hashCombinedBuilder = new StringBuilder(); foreach (var h in allHashes) { @@ -42,7 +44,7 @@ public partial class Build var combinedHashString = hashCombinedBuilder.ToString(); var hash = GetStringMd5(combinedHashString); - var bundleHash = FileSystemTasks.GetFileHash(bundle); + var bundleHash = FileSystemTasks.GetFileHash(bundle).ToUpperInvariant(); ArtifactChecksums.Add(new Checksum {