From 9b7802014d8fc2d442b4e348ca649a9cfc147d29 Mon Sep 17 00:00:00 2001 From: Kenneth Date: Mon, 2 Sep 2019 00:20:16 +0200 Subject: [PATCH] Implemented build task for zipping artifacts. --- .../Examples/BuildSystem/NestedJobTest.asset | 2 +- Assets/Examples/BuildSystem/TestJob.asset | 1 + .../Examples/BuildSystem/ZipArtifacts.asset | 18 +++++++++ .../BuildSystem/ZipArtifacts.asset.meta | 8 ++++ .../BuildTask_BuildAssetBundles.cs | 2 +- .../BuildSystem/BuildTask_BuildPlayer.cs | 2 +- .../EditorCode/BuildSystem/BuildTask_Zip.cs | 38 +++++++++++++++++++ .../BuildSystem/BuildTask_Zip.cs.meta | 11 ++++++ 8 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 Assets/Examples/BuildSystem/ZipArtifacts.asset create mode 100644 Assets/Examples/BuildSystem/ZipArtifacts.asset.meta create mode 100644 Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_Zip.cs create mode 100644 Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_Zip.cs.meta diff --git a/Assets/Examples/BuildSystem/NestedJobTest.asset b/Assets/Examples/BuildSystem/NestedJobTest.asset index bf7c791..c4d5d34 100644 --- a/Assets/Examples/BuildSystem/NestedJobTest.asset +++ b/Assets/Examples/BuildSystem/NestedJobTest.asset @@ -15,4 +15,4 @@ MonoBehaviour: tasks: - {fileID: 11400000, guid: 2c2c2ade1e003314da0ed1c94b360728, type: 2} destination: ./Test/ - deleteExistingDestination: 0 + deleteExistingDestination: 1 diff --git a/Assets/Examples/BuildSystem/TestJob.asset b/Assets/Examples/BuildSystem/TestJob.asset index a76f606..4218c05 100644 --- a/Assets/Examples/BuildSystem/TestJob.asset +++ b/Assets/Examples/BuildSystem/TestJob.asset @@ -15,5 +15,6 @@ MonoBehaviour: tasks: - {fileID: 11400000, guid: d43410207f9c4cf42815d68bbff4b32a, type: 2} - {fileID: 11400000, guid: b1ed952066200074b9dc73f2cbc24b39, type: 2} + - {fileID: 11400000, guid: befca57add10d7e4bba43ece7e828ce9, type: 2} destination: ./Builds/ deleteExistingDestination: 1 diff --git a/Assets/Examples/BuildSystem/ZipArtifacts.asset b/Assets/Examples/BuildSystem/ZipArtifacts.asset new file mode 100644 index 0000000..619e407 --- /dev/null +++ b/Assets/Examples/BuildSystem/ZipArtifacts.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ead8d19a849f46459ade8202df21b28, type: 3} + m_Name: ZipArtifacts + m_EditorClassIdentifier: + subfolders: + - Win64 + archiveDestination: Win64.zip + backend7ZipExePath: C:/Program Files/7-Zip/7z.exe diff --git a/Assets/Examples/BuildSystem/ZipArtifacts.asset.meta b/Assets/Examples/BuildSystem/ZipArtifacts.asset.meta new file mode 100644 index 0000000..d8f05ae --- /dev/null +++ b/Assets/Examples/BuildSystem/ZipArtifacts.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: befca57add10d7e4bba43ece7e828ce9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_BuildAssetBundles.cs b/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_BuildAssetBundles.cs index 7f4bb4f..7afb6d3 100644 --- a/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_BuildAssetBundles.cs +++ b/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_BuildAssetBundles.cs @@ -9,7 +9,7 @@ namespace UnityTK.BuildSystem /// /// which will build all asset bundles specified in the project. /// - [CreateAssetMenu(fileName = "Build AssetBundles Task", menuName = "UnityTK/BuildSystem/Build AssetBundles Task")] + [CreateAssetMenu(fileName = "BuildAssetBundlesTask", menuName = "UnityTK/BuildSystem/Build AssetBundles Task")] public class BuildTask_BuildAssetBundles : BuildTask { [Header("Task")] diff --git a/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_BuildPlayer.cs b/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_BuildPlayer.cs index 936774d..db2c292 100644 --- a/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_BuildPlayer.cs +++ b/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_BuildPlayer.cs @@ -10,7 +10,7 @@ namespace UnityTK.BuildSystem /// /// Build task that builds a player. /// - [CreateAssetMenu(fileName = "Build Player Task", menuName = "UnityTK/BuildSystem/Build Player Task")] + [CreateAssetMenu(fileName = "BuildPlayerTask", menuName = "UnityTK/BuildSystem/Build Player Task")] public class BuildTask_BuildPlayer : BuildTask { [Header("Task")] diff --git a/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_Zip.cs b/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_Zip.cs new file mode 100644 index 0000000..612d927 --- /dev/null +++ b/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_Zip.cs @@ -0,0 +1,38 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using System.IO; +using System.Diagnostics; +using System.Linq; + +namespace UnityTK.BuildSystem +{ + /// + /// which will run a job. + /// + [CreateAssetMenu(fileName = "CreateZipTask", menuName = "UnityTK/BuildSystem/Create Zip Task")] + public class BuildTask_Zip : BuildTask + { + [Header("Build config")] + public List subfolders; + public string archiveDestination; + + [Header("Backend: 7-Zip")] + public string backend7ZipExePath = "C:/Program Files/7-Zip/7z.exe"; + + public override void Run(BuildJob job, BuildJobParameters parameters) + { + List subfolders = new List(this.subfolders); + if (subfolders.Count == 1) + subfolders[0] += "/*"; + + if (File.Exists(backend7ZipExePath)) + { + // Use 7zip backend + string arguments = "a " + Path.Combine(parameters.destination, archiveDestination) + " " + string.Join(" ", subfolders.Select(s => "\"" + Path.Combine(parameters.destination, s) + "\"")); + Process.Start(backend7ZipExePath, arguments).WaitForExit(); + } + } + } +} \ No newline at end of file diff --git a/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_Zip.cs.meta b/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_Zip.cs.meta new file mode 100644 index 0000000..120a069 --- /dev/null +++ b/Assets/UnityTK/Code/EditorCode/BuildSystem/BuildTask_Zip.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0ead8d19a849f46459ade8202df21b28 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: