OpenUPMOpenUPM
Packages
Docs
Blog
  • Support OpenUPM
  • Contributors
  • Uptime Status
  • Queue Status
  • GitHub
  • Twitter
  • Discord
  • Contact Us
  • Package Updates
  • Blog RSS
CLI
Loading...
Stars ... Donate
Stars ... Donate
Packages
Docs
Blog
  • Support OpenUPM
  • Contributors
  • Uptime Status
  • Queue Status
  • GitHub
  • Twitter
  • Discord
  • Contact Us
  • Package Updates
  • Blog RSS
CLI
  • User Guide

    • OpenUPM Unity Package Manager Registry Docs
    • Getting Started with Unity Editor
    • Getting Started with OpenUPM-CLI
    • Unity Scoped Registry Troubleshooting
    • Frequently Asked Questions
  • Package Creator Guide

    • Adding UPM Package
    • Signing UPM Packages
    • Adding Badges
    • Troubleshooting Build Errors
    • Modifying UPM Package
    • Reclaiming Package Ownership
    • Opt-out From OpenUPM
    • Managing UPM Project like a Pro
  • Host Your Private Registry

    • Quick Guide: Host Your Private Unity Scoped Registry in Just 15 Minutes
  • NuGet

    • NuGet Packages
  • Support US

    • Support OpenUPM
    • Contributors
    • Contributor Badges
  • Resources

    • Team
    • Terms of Use
    • Code of Conduct
    • Privacy Q&A
  • Docs
  • Troubleshooting Build Errors
(adsbygoogle = window.adsbygoogle || []).push({});

Troubleshooting Build Errors

The build pipelines section on the package detail page reports the build status of each versioned Git tag, allowing you to check for any failed builds and their respective reasons. When a build fails, it leaves an error code and a message in the note field, providing valuable information for troubleshooting.

build-pipelines

OpenUPM categorizes these errors into two types: retryable errors and non-retryable errors.

Retryable Errors

Retryable errors are typically caused by temporary network, registry, GitHub, or build-service conditions. OpenUPM automatically retries retryable release builds up to 3 times. If a retryable error remains after all attempts, the release is retained as failed so an operator can inspect or requeue it.

For trackingMode: githubRelease, missing GitHub Releases and missing publishable assets can recover after the initial attempts are exhausted. OpenUPM checks again after 10 minutes, then 20 minutes, then 40 minutes, doubling until the interval reaches 6 hours. It then checks every 6 hours for up to 7 days from the first missing-release or missing-asset failure.

ErrorReasonWhat to do
E0 unknown errorOpenUPM could not classify the build failure.Open the linked build logs and inspect the failed step. If the logs do not point to a package-side problem, report it with the build ID.
E400 registry bad requestThe registry rejected a publish request as invalid.Check the linked build logs for the registry response. If package metadata looks valid, report it so the registry-side request can be inspected.
E401 registry unauthorizedThe registry rejected the publish request because authentication failed.This is usually an OpenUPM registry credential or token issue. Report it with the build ID.
E403 registry forbiddenThe registry rejected the publish request because access was forbidden.This is usually an OpenUPM registry permission issue. Report it with the build ID.
E500 registry internal errorThe registry returned an internal server error.Wait for the OpenUPM pipeline retry. If repeated builds fail with E500, report it with the build ID.
E502 upstream bad gatewayA temporary upstream gateway error interrupted the build or publish request.Wait for the OpenUPM pipeline retry after the upstream service recovers. If repeated builds fail with E502, report it with the build ID.
E503 upstream service unavailableA required upstream service was temporarily unavailable.Wait for the OpenUPM pipeline retry. If repeated builds fail with E503, report it with the build ID.
E504 upstream timeoutA temporary upstream timeout interrupted the build or publish request.Wait for the OpenUPM pipeline retry after the upstream service recovers. If repeated builds fail with E504, report it with the build ID.
E700 build timed outThe Azure build did not finish before OpenUPM stopped waiting for it. The build may still finish later, and a later pipeline retry can succeed.Wait for the OpenUPM pipeline retry or check the linked Azure build logs. If repeated builds fail with the same reason, report it with the build ID.
E701 build cancelled manuallyThe Azure build was cancelled.Requeue or retag when the cancellation was accidental. If cancellation repeats, report it with the build ID.
E900 connection timeoutThe build could not reach a required network service.Wait for the OpenUPM pipeline retry. If repeated builds fail with E900, check whether the source repository, Git LFS, GitHub Release asset, or registry endpoint is reachable.
E904 GitHub Release not foundFor trackingMode: githubRelease, the configured tag did not have a matching GitHub Release.Create the GitHub Release for the tag. OpenUPM checks again after 10 minutes, then 20 minutes, then 40 minutes, doubling to 6 hours and continuing every 6 hours for up to 7 days. After that, request a rebuild.
E905 GitHub Release asset not foundFor trackingMode: githubRelease, the GitHub Release exists but no publishable .tgz or .tar.gz asset matched the package metadata.Upload the package tarball to the GitHub Release. OpenUPM checks again after 10 minutes, then 20 minutes, then 40 minutes, doubling to 6 hours and continuing every 6 hours for up to 7 days. After that, request a rebuild.
E906 multiple matching GitHub Release assetsMore than one GitHub Release asset matched the package selection rules.Keep exactly one publishable package tarball, or set githubReleaseAssetName to a stable filename or prefix. Unlike E905, this is not expected to resolve by uploading a missing asset later; update the GitHub Release asset list or package metadata, then request a rebuild.
E907 GitHub Release API errorGitHub's API failed while OpenUPM was looking up the release or asset.Wait for the OpenUPM pipeline retry. If repeated builds fail with E907, report it with the build ID.
E908 GitHub Release asset download failedThe selected GitHub Release asset could not be downloaded in the Azure build.Check that the asset is still attached, public, and downloadable. Replace the asset or request a rebuild after GitHub recovers.

Non-retryable Errors

Non-retryable errors are usually caused by package metadata, source repository, versioning, or repository-size issues. A rebuild will usually fail the same way until the package owner changes the source repository, package metadata, or release tag.

ErrorReasonWhat to do
E409 version already existsThe package version has already been published. This often happens when a new Git tag points to a package.json version that was already released.Update the version field in package.json, commit it, and create a new tag. Do not reuse an already published package version.
E413 package is larger than 512MBThe packed package is larger than the registry limit.Remove generated files, caches, large binaries, or other unnecessary content from the package. Use .npmignore or the files field in package.json to control what gets packed.
E800 error path package.jsonThe build could not find a package.json with the expected package name.Make sure the tagged commit contains package.json, the package name matches the OpenUPM metadata, and the package is under the expected path. If package.json was added after the tag, create or move the tag to the correct commit.
E801 package is explicitly privatepackage.json has "private": true.Remove "private": true for public packages, commit the change, and create a new tag.
E803 package name is invalidThe package name is not valid for OpenUPM.Use a reverse-DNS Unity package name such as com.company.package. Scoped npm names such as @scope/name are not supported as UPM package names.
E804 invalid package.json formatpackage.json could not be parsed or is missing required fields.Validate package.json, make sure it is valid JSON, and include required fields such as name and version.
E805 remote branch or tag not foundThe configured Git tag or branch was not found in the source repository.Confirm the tag exists on the remote repository and matches the OpenUPM release metadata. Push the missing tag or create a new valid tag.
E806 invalid package versionThe package.json version field is not a valid version string for publishing.Update package.json to a valid semantic version, commit it, and create a new tag.
E807 remote repository unavailableThe source repository could not be reached. It may be deleted, renamed, unavailable, or private.Make sure the repository URL is correct and public. Update OpenUPM metadata if the repository moved.
E808 remote submodule repository unavailableA Git submodule repository could not be reached.Make each required submodule public and reachable, or remove the submodule from the package source.
E809 submodule commit cannot be fetchedA referenced submodule commit is missing or inaccessible.Push the missing submodule commit to its remote, update the submodule pointer, and create a new tag.
E810 npm publish lifecycle hook failedAn npm lifecycle hook such as prepack, prepare, or postpack failed during package packing or publishing.Fix or remove the failing lifecycle script. OpenUPM packages should not depend on unpublished local build tooling during publish.
E811 package.json version does not match release versionThe package.json version in the selected source does not match the version OpenUPM discovered from the Git tag or GitHub Release.Move or recreate the Git tag or GitHub Release so it matches the package.json version. For example, package.json version 1.0.0 should use a matching release tag such as v1.0.0 or 1.0.0.
E901 heap out of memoryThe package build ran out of memory. Large package contents are a common cause.Reduce package size, remove generated/cache files from the packed package, or split very large assets into a different delivery path.
E902 Git LFS budget exceededGit LFS refused the download because the repository exceeded its bandwidth quota.Restore Git LFS bandwidth or remove required LFS objects from the package source, then request a rebuild.
E903 Git LFS object is missingA Git LFS pointer exists, but the referenced object is missing from the remote server.Upload the missing LFS object or remove the broken pointer, then create a new tag.

How to Trigger a Rebuild for a Failed Build

So you've encountered a failed build and successfully fixed the issue. How do you trigger a rebuild? The solution is to re-tag the existing Git tag.

When the build pipelines detect a failed Git tag that has been re-tagged, it will initiate a rebuild. It's important to note that the build pipelines will not rebuild an already successful release, even if they detect that the Git tag has been removed or re-tagged. This is because what has been released on the registry is immutable.

To re-tag an existing Git tag, you can follow these steps:

  1. Locate the Git tag on the GitHub website.
  2. Delete the existing tag.
  3. Create a new tag with the same name from the latest commit.

Alternatively, you can use the following commands to re-tag a Git tag:

# List all remote tags
git ls-remote --tags

# Delete the local tag
git tag -d v1.0.1

# Push the tag deletion to the remote
git push origin :refs/tags/v1.0.1

# Tag the local branch again
git tag v1.0.1

# Push the tag to the remote
git push origin tag v1.0.1

Some repositories adhere to an immutable policy that disallows re-tagging. In such cases, you can trigger a new build by incrementing the package version. For instance, if the erroneous Git tag is v1.0.1, you should update the package version to 1.0.2 and then create a new Git tag, v1.0.2, to initiate a new build.

Edit this page
Adding Badges Modifying UPM Package