VLXI-Cookiecutter-Julia

Julia Packaging Guide: Development, Registration, and Release Process

Authors
Kevin T. Chu <kevin@velexi.com>


Table of Contents

  1. Package Development

  2. Hosting Documentation on GitHub Pages

  3. Package Registration

  4. Package Release Process

  5. Additional Notes

  6. References

  7. Acknowledgements


1. Package Development

The following steps set up Julia package configured for collaboration (via GitHub), documentation generation, continuous integration (CI), and coverage reporting.

Steps


2. Hosting Documentation on GitHub Pages

The following steps set up automatic build and deployment of package documentation as part of the continuous integration and release processes.

Prerequisite

Steps

Troubleshooting


3. Package Registration

The following steps register a new package with the General registry.

Steps


4. Package Release Process

The following steps release a new version of Juila package that is already registered with the General registry.

Prerequisites

Steps


5. Additional Notes

Security Configurations for GitHub Actions

For the GitHub Actions workflows used for Julia CI, registration, and releases, the following actions must be allowed. The GitHub Actions permissions settings are located under: Settings > Actions (sidebar) > General.

Checking Distance to Existing Package Names

In Julia 1.7, the code snippet provided in the “Automatic Merging Guidelines” for generating the current list of all package names in the General registry does not work.

The following alternate code should work for Julia 1.7. Note: this code relies on the internal implementation of the Pkg package, so it should not be considered stable.

julia> using Pkg
julia> all_pkg_names = [
    pkg.name for pkg
    in values(Pkg.Registry.reachable_registries()[1].pkgs)
]

julia> using RegistryCI.AutoMerge
julia> AutoMerge.meets_distance_check("MyPackage", all_pkg_names)

6. References


7. Acknowledgements

Many thanks to Sören Dobberschütz and his excellent blog article. In many ways, this guide is a restructuring and expansion of his article.