{"id":20621040,"url":"https://github.com/rageagainstthepixel/com.utilities.buildpipeine","last_synced_at":"2025-04-15T12:14:25.953Z","repository":{"id":63006567,"uuid":"560193906","full_name":"RageAgainstThePixel/com.utilities.buildpipeine","owner":"RageAgainstThePixel","description":"A Unity Build Pipeline utility package (UPM)","archived":false,"fork":false,"pushed_at":"2025-03-07T22:02:45.000Z","size":731,"stargazers_count":11,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-15T12:14:08.092Z","etag":null,"topics":["game-ci","github","github-actions","github-actions-unity","unity","upm"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RageAgainstThePixel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"StephenHodgson","patreon":"RageAgainstThePixel"}},"created_at":"2022-10-31T23:56:38.000Z","updated_at":"2025-03-07T22:02:35.000Z","dependencies_parsed_at":"2024-03-06T03:23:18.187Z","dependency_job_id":"0388f5d8-15e1-4b71-aecd-b38803adfe0c","html_url":"https://github.com/RageAgainstThePixel/com.utilities.buildpipeine","commit_stats":null,"previous_names":[],"tags_count":50,"template":false,"template_full_name":"RageAgainstThePixel/upm-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RageAgainstThePixel%2Fcom.utilities.buildpipeine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RageAgainstThePixel%2Fcom.utilities.buildpipeine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RageAgainstThePixel%2Fcom.utilities.buildpipeine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RageAgainstThePixel%2Fcom.utilities.buildpipeine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RageAgainstThePixel","download_url":"https://codeload.github.com/RageAgainstThePixel/com.utilities.buildpipeine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249067779,"owners_count":21207396,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game-ci","github","github-actions","github-actions-unity","unity","upm"],"created_at":"2024-11-16T12:16:29.696Z","updated_at":"2025-04-15T12:14:25.940Z","avatar_url":"https://github.com/RageAgainstThePixel.png","language":"C#","funding_links":["https://github.com/sponsors/StephenHodgson","https://patreon.com/RageAgainstThePixel"],"categories":[],"sub_categories":[],"readme":"# com.utilities.buildpipeline\n\n[![Discord](https://img.shields.io/discord/855294214065487932.svg?label=\u0026logo=discord\u0026logoColor=ffffff\u0026color=7389D8\u0026labelColor=6A7EC2)](https://discord.gg/xQgMW9ufN4) [![openupm](https://img.shields.io/npm/v/com.utilities.buildpipeline?label=openupm\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.utilities.buildpipeline/) [![openupm](https://img.shields.io/badge/dynamic/json?color=brightgreen\u0026label=downloads\u0026query=%24.downloads\u0026suffix=%2Fmonth\u0026url=https%3A%2F%2Fpackage.openupm.com%2Fdownloads%2Fpoint%2Flast-month%2Fcom.utilities.buildpipeline)](https://openupm.com/packages/com.utilities.buildpipeline/) [![marketplace](https://img.shields.io/static/v1?label=\u0026labelColor=505050\u0026message=Unity%20Build%20Pipeline%20Utility\u0026color=0076D6\u0026logo=github-actions\u0026logoColor=0076D6)](https://github.com/marketplace/actions/unity-build-pipeline-utility)\n\nA Build Pipeline utility package for the [Unity](https://unity.com/) Game Engine.\n\n## Installing\n\nRequires Unity 2019.4 LTS or higher.\n\nThe recommended installation method is though the unity package manager and [OpenUPM](https://openupm.com/packages/com.utilities.buildpipeine).\n\n### Via Unity Package Manager and OpenUPM\n\n#### Terminal\n\n```bash\nopenupm add com.utilities.buildpipeline\n```\n\n#### Manual\n\n- Open your Unity project settings\n- Add the OpenUPM package registry:\n  - Name: `OpenUPM`\n  - URL: `https://package.openupm.com`\n  - Scope(s):\n    - `com.utilities`\n\n![scoped-registries](Utilities.BuildPipeline/Packages/com.utilities.buildpipeline/Documentation~/images/package-manager-scopes.png)\n\n- Open the Unity Package Manager window\n- Change the Registry from Unity to `My Registries`\n- Add the `Utilities.BuildPipeline` package\n\n### Via Unity Package Manager and Git url\n\n- Open your Unity Package Manager\n- Add package from git url: `https://github.com/RageAgainstThePixel/com.utilities.buildpipeine.git#upm`\n\n## Documentation\n\nThis package is designed to be use in conjunction with a CI/CD pipeline, such as [![marketplace](https://img.shields.io/static/v1?label=\u0026labelColor=505050\u0026message=Unity%20Build%20Pipeline%20Utility\u0026color=0076D6\u0026logo=github-actions\u0026logoColor=0076D6)](https://github.com/marketplace/actions/unity-build-pipeline-utility).\n\n### Example Usage\n\n#### Create Github Action Workflow\n\n1. Create a new action workflow file using [![marketplace](https://img.shields.io/static/v1?label=\u0026labelColor=505050\u0026message=Unity%20Build%20Pipeline%20Utility\u0026color=0076D6\u0026logo=github-actions\u0026logoColor=0076D6)](https://github.com/marketplace/actions/unity-build-pipeline-utility)\n`.github/workflows/unity-build.yml`\n\n2. Add the following content to the file:\n\n```yml\nname: unity-build\n\non:\n  push:\n    branches:\n      - 'main'\n  pull_request:\n    branches:\n      - '*'\n  # Allows you to run this workflow manually from the Actions tab\n  workflow_dispatch:\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\njobs:\n  build:\n    runs-on: ${{ matrix.os }}\n    strategy:\n      # max-parallel: 2 # Use this if you're activating pro license with matrix\n      matrix:\n        os: [ubuntu-latest, windows-latest, macos-13]\n        unity-version: [2019.x, 2020.x, 2021.x, 2022.x, 6000.x]\n        include: # for each os specify the build targets\n          - os: ubuntu-latest\n            build-target: StandaloneLinux64\n          - os: windows-latest\n            build-target: StandaloneWindows64\n          - os: macos-13\n            build-target: StandaloneOSX\n\n    steps:\n      - uses: actions/checkout@v4\n\n        # Installs the Unity Editor based on your project version text file\n        # sets -\u003e env.UNITY_EDITOR_PATH\n        # sets -\u003e env.UNITY_PROJECT_PATH\n      - uses: RageAgainstThePixel/unity-setup@v1\n        with:\n          unity-version: ${{ matrix.unity-version }}\n          build-targets: ${{ matrix.build-target }}\n\n        # Activates the installation with the provided credentials\n      - uses: RageAgainstThePixel/activate-unity-license@v1\n        with:\n          license: 'Personal' # Choose license type to use [ Personal, Professional ]\n          username: ${{ secrets.UNITY_USERNAME }}\n          password: ${{ secrets.UNITY_PASSWORD }}\n          # serial: ${{ secrets.UNITY_SERIAL }} # Required for pro activations\n\n      - name: Unity Build (${{ matrix.build-target }})\n        uses: RageAgainstThePixel/unity-build@v1\n        with:\n          build-target: ${{ matrix.build-target }}\n```\n\n### Executable Methods\n\nThese methods can be executed using the `-executeMethod` command line argument to validate, sync, and build the Unity project.\n\n| Method | Description |\n| ------ | ----------- |\n| `Utilities.Editor.BuildPipeline.UnityPlayerBuildTools.ValidateProject` | Validates the Unity Project assets by forcing a symbolic link sync and creates solution files. |\n| `Utilities.Editor.BuildPipeline.UnityPlayerBuildTools.SyncSolution` | Force Unity to update CSProj files and generates solution. |\n| `Utilities.Editor.BuildPipeline.UnityPlayerBuildTools.StartCommandLineBuild` | Start a build using command line arguments. |\n\n```bash\n\"/path/to/Unity.exe\" -projectPath \"/path/to/unity/project\" -quit -batchmode -executeMethod Utilities.Editor.BuildPipeline.UnityPlayerBuildTools.StartCommandLineBuild\n```\n\n#### Project Validation Command Line Arguments\n\n\u003e [!NOTE]\n\u003e No longer required in Unity 6+\n\n| Argument | Description |\n| -------- | ----------- |\n| `-importTMProEssentialsAsset` | Imports the TMPro Essential assets if they are not already in the project. |\n\n```bash\n\"/path/to/Unity.exe\" -projectPath \"/path/to/unity/project\" -quit -batchmode -executeMethod Utilities.Editor.BuildPipeline.UnityPlayerBuildTools.ValidateProject -importTMProEssentialsAsset\n```\n\n### Additional Custom Command Line Arguments\n\nIn addition to any already defined [Unity Editor command line arguments](https://docs.unity3d.com/Manual/EditorCommandLineArguments.html), this plugin offers some additional options:\n\n| Argument | Description |\n| -------- | ----------- |\n| `-ignoreCompilerErrors` | Disables logging. |\n| `-autoIncrement` | Enables auto incrementing. |\n| `-versionName` | Sets the version of the application. Value must be string. |\n| `-versionCode` | Sets the version code of the application. Value must be an integer. |\n| `-bundleIdentifier` | Sets the bundle identifier of the application. |\n| `-sceneList` | Sets the scenes of the application, list as CSV. |\n| `-sceneListFile` | Sets the scenes of the application, list as JSON. |\n| `-buildOutputDirectory` | Sets the output directory for the build. |\n| `-acceptExternalModificationsToPlayer` | Sets the build options to accept external modifications to the player. |\n| `-development` | Sets the build options to build a development build of the player. |\n| `-colorSpace` | Sets the color space of the application, if the provided color space string is a valid `ColorSpace` enum value. |\n| `-compressionMethod` | Set the build compression. Can be: `LZ4`, `LZ4HC` |\n| `-buildConfiguration` | Sets the build configuration of the application. Can be:  `debug`, `master`, or `release`. |\n| `-export` | Creates a native code project for the target platform. |\n| `-symlinkSources` | Enables the use of symbolic links for the sources. |\n| `-disableDebugging` | :warning: deprecated. Use `allowDebugging`. Disables the ability to attach remote debuggers to the player. |\n| `-allowDebugging` | Enables or disables the ability to attache a remote debugger to the player. Can be: `true` or `false`. |\n| `-dotnetApiCompatibilityLevel` | Sets the dotnet api compatibility level of the player. Can be: `NET_2_0`, `NET_2_0_Subset`, `NET_4_6`, `NET_Unity_4_8`, `NET_Web`, `NET_Micro`, `NET_Standard`, or `NET_Standard_2_0`. |\n| `-scriptingBackend` | Sets the scripting framework of the player. Can be: `Mono2x`, `IL2CPP`, or `WinRTDotNET`. |\n| `-autoConnectProfiler` | Start the player with a connection to the profiler. |\n| `-buildWithDeepProfilingSupport` | Enables deep profiling support in the player. |\n| `-il2cppCompilerConfiguration` | C++ compiler configuration used when compiling IL2CPP. Can be: `Debug`, `Release`, or `Master` |\n| `-il2cppCodeGeneration` | Control code generation for IL2CPP. Can be: `OptimizeSpeed` or `OptimizeSize` |\n\n#### Platform specific Command Line Arguments\n\n##### Android Command Line Arguments\n\n| Argument | Description |\n| -------- | ----------- |\n| `-appBundle` | Builds an .abb for Google Play Store |\n| `-splitBinary` | Builds an APK per CPU architecture. |\n| `-splitApk` | Uses APK expansion files. |\n| `-keystorePath` | Path to the keystore. |\n| `-keystorePass` | Sets the keystore password. |\n| `-keyaliasName` | Name of the key to use when signing. |\n| `-keyaliasPass` | Sets the key alias password. |\n| `-symbols` | Sets the symbol creation mode. Can be: `public`, `debugging`, or `disabled`. |\n\n##### Apple Device Command Line Args\n\nWorks for any Apple Platform Target: MacOS, iOS, tvOS, and visionOS.\n\n| Argument | Description |\n| -------- | ----------- |\n| `-appleTeamId` | The team id used for signing. |\n| `-enableAppleAutomaticSigning` | Enables automatic signing. |\n| `-disableAppleAutomaticSigning` | Disables automatic signing. |\n| `-appleProvisioningProfileId` | Sets the provisioning profile UUID. |\n| `-appleProvisioningProfileType` | Sets the provisioning profile type. Can be `Automatic`, `Development`, or `Distribution`. |\n| `-appleSdkVersion` | Sets the apple sdk version. Can be `Device` or `Simulator`. |\n\n###### MacOS Command Line Arguments\n\n| Argument | Description |\n| -------- | ----------- |\n| `-arch` | Sets the build architecture. Can be: `x64`, `arm64`, or `x64arm64`. |\n\n##### Windows Universal Platform Command Line Arguments\n\n| Argument | Description |\n| -------- | ----------- |\n| `-arch` | Sets the build architecture. Can be: `x64`, `x86`, `ARM`, or `ARM64`. |\n| `-wsaUWPBuildType` | Sets the output build type when building to Universal Windows Platform. Can be: `XAML`, `D3D`, or `ExecutableOnly`. |\n| `-wsaSetDeviceFamily` | Sets the device family. Can be: `Desktop`, `Mobile`, `Xbox`, `Holographic`, `Team`, `IOT`, or `IoTHeadless`. |\n| `-wsaUWPSDK` | Sets the UWP SDK Version to build for. |\n| `-wsaMinUWPSDK` | Sets the min UWP SDK to build for. |\n| `-wsaCertificate` | Sets the signing certificate. Must pass the path and password together. `-wsaCertificate \"path/to/cert.pfx\" myP@55w0rd` |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frageagainstthepixel%2Fcom.utilities.buildpipeine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frageagainstthepixel%2Fcom.utilities.buildpipeine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frageagainstthepixel%2Fcom.utilities.buildpipeine/lists"}