PkgFactory.jl

Create your first package through the Web UI using the steps below.

Quick Start

You need Julia 1.12 or later, Git, and a GitHub account. Documentation deploy keys use the automatically installed OpenSSH_jll dependency. No separate OpenSSH installation or PATH configuration is needed in any application.

Get the source

Download the repository in a terminal:

git clone https://github.com/JuliaPackageFactory/PkgFactory.jl.git
cd PkgFactory.jl

Start the Web UI

julia --project=apps/web --startup-file=no -e 'import Pkg; Pkg.instantiate()'
julia --project=apps/web --startup-file=no apps/web/bin/pkgfactory-web.jl
  1. Open http://127.0.0.1:8000/ and connect GitHub. Follow the link shown by the app and enter the one-time code.
  2. Choose the repository owner and enter a package name such as MyPkg and the authors. Choose a template and visibility using the package settings.
  3. Click Generate & commit package, then open the repository link.

Continue with After creation to work on the package and finish setting up its services.

Keep the terminal running while using the Web UI; press Ctrl+C to stop it. On later runs, start it with the last command above from the same directory.

Workflows

Guides to Julia package development include How to develop a Julia package, Modern Julia Workflows — Sharing your code, Pkg.jl — Creating Packages, and Julia — Workflow Tips. In Japanese, additional information can be found on Qiita and Zenn. PkgFactory.jl automates the following steps:

  1. Validate the package settings and generate package files (on memory, not on disk) and GitHub Actions workflows from the selected template.
  2. Create a GitHub repository and commit the generated files to main.
  3. Create the gh-pages branch for documentation.
  4. Generate an SSH key pair and register the public key as a deploy key with write access.
  5. Store the base64-encoded private key as the DOCUMENTER_KEY repository secret.

The generated GitHub Actions workflows run tests, upload coverage to Codecov, and build and deploy documentation with Documenter.jl, depending on the selected template.