This version of GitHub Enterprise will be discontinued on 2022-02-16. No patch releases will be made, even for critical security issues. For better performance, improved security, and new features, upgrade to the latest version of GitHub Enterprise. For help with the upgrade, contact GitHub Enterprise support.

About GitHub Packages and GitHub Actions

Learn the fundamentals of managing packages through your GitHub Actions workflows.

Packaging in continuous integration workflows

A packaging step is a common part of a continuous integration or continuous delivery workflow. Creating a package at the end of a continuous integration workflow can help during code reviews on a pull request.

After building and testing your code, a packaging step can produce a runnable or deployable artifact. Depending on the kind of application you're building, this package can be downloaded locally for manual testing, made available for users to download, or deployed to a staging or production environment.

For example, a continuous integration workflow for a Java project may run mvn package to produce a JAR file. Or, a CI workflow for a Node.js application may create a Docker container.

Now, when reviewing a pull request, you'll be able to look at the workflow run and download the artifact that was produced.

Download artifact drop-down menu

This will let you run the code in the pull request on your machine, which can help with debugging or testing the pull request.

Workflows for publishing packages

In addition to uploading packaging artifacts for testing in a continuous integration workflow, you can create workflows that build your project and publish packages to a package registry.

  • Publish packages to GitHub Packages
    GitHub Packages can act as a package hosting service for many types of packages. You can choose to share your packages with all of GitHub, or private packages to share with collaborators or an organization. For more information, see "Introduction to GitHub Packages."

    You may want to publish packages to GitHub Packages on every push into the default branch. This will allow developers on your project to always be able to run and test the latest build from the default branch easily, by installing it from GitHub Packages.

  • Publish packages to a package registry
    For many projects, publishing to a package registry is performed whenever a new version of a project is released. For example, a project that produces a JAR file may upload new releases to the Maven Central repository. Or, a .NET project may produce a nuget package and upload it to the NuGet Gallery.

    You can automate this by creating a workflow that publishes packages to a package registry on every release creation. For more information, see "Creating releases."

Did this doc help you?

Privacy policy

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

Or, learn how to contribute.