GitHub Action
Run Pkg.build
This action runs the build step in a Julia package.
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
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.
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.