Skip to content

julia-buildpkg Action

This action runs the build step in a Julia package.

Usage

Julia needs to be installed before this action can run. This can easily be achieved with the setup-julia action.

And example workflow that uses this action might look like this:

name: Run tests

on: [push, pull_request]

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        julia-version: [stable, lts]
        julia-arch: [x64, x86]
        os: [ubuntu-latest, windows-latest, macOS-latest]
        exclude:
          - os: macOS-latest
            julia-arch: x86

    steps:
      - uses: actions/checkout@v4
      - uses: julia-actions/setup-julia@v2
        with:
          version: ${{ matrix.julia-version }}
      - uses: julia-actions/julia-buildpkg@v1
      - uses: julia-actions/julia-runtest@v1

Registry flavor preference

This actions defines (and exports for subsequent steps of the workflow) the environmental variable JULIA_PKG_SERVER_REGISTRY_PREFERENCE=eager unless it is already set. If you want another registry flavor (i.e. conservative) this should be defined in the env: section of the relevant workflow or step. See Registry flavors for more information.

Adding Local Registries

Personal registries, e.g. created with LocalRegistry.jl, can be added to the CI using the localregistry input option. If the personal registry as well as packages needed in the current project are public, no additional setup is required if the registry url is specified in https-format.

If the registry contains private packages, or is itself private, the ssh protocol should to be used. The user has to provide the corresponding private SSH-keys to the ssh-agent to access packages and registry. This can be conveniently done using the webfactory/ssh-agent action. A snippet illustrating the usage of (private) personal registries is shown below

...   
      # Adding private SSH keys (only necessary for accessing private packages and/or 
      # when providing Registry-link in ssh format)
      - uses: webfactory/ssh-agent@v0.8.0
        with:
          ssh-private-key: |
            ${{ secrets.PRIVATE_DEPLOY_KEY }}
            ${{ secrets.PRIVATE_DEPLOY_KEY2 }}
      - uses: julia-actions/julia-buildpkg@v1
        with:
          localregistry: |
            https://github.com/username/PersonalRegistry.git
            git@github.com:username2/PersonalRegistry2.git
          git_cli: false # = JULIA_PKG_USE_CLI_GIT. Options: true | false (default)
...

For Julia 1.7 and above, the git_cli option can be used to set the JULIA_PKG_USE_CLI_GIT environment flag, for additional control of the SSH configuration used by Pkg to add/dev packages.