Compare commits

...

4 Commits

Author SHA1 Message Date
Fredrik Ekre
72ddd0fcdc Export the JULIA_PKG_SERVER_REGISTRY_PREFERENCE variable for subsequent steps. (#33) 2023-03-13 18:32:34 +01:00
Fredrik Ekre
7c59a056df Revert shortcut for missing deps/build.jl file. (#32) 2023-03-13 13:09:48 +01:00
Fredrik Ekre
fcafde1b68 Use eager Pkg server registry instead of git cloning (#31)
* Use eager Pkg server registry instead of git cloning

This patch removes the git cloning of General and instead uses the eager
registry flavor. In addition, the action exits early if no deps/build.jl
file exist.

* Use env: key instead.
2023-03-13 12:20:47 +01:00
Ian Butterworth
252d4686a5 Fix add_general_registry (#28) 2022-12-20 11:52:13 +01:00
4 changed files with 22 additions and 79 deletions

View File

@@ -15,7 +15,6 @@ on:
jobs:
test:
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
@@ -31,6 +30,9 @@ jobs:
arch:
- x64
- x86
pkg-server:
- ""
- "pkg.julialang.org"
# 32-bit Julia binaries are not available on macOS
exclude:
- os: macOS-latest
@@ -68,6 +70,8 @@ jobs:
${{ runner.os }}-
- uses: ./.github/actions/julia-buildpkg
env:
JULIA_PKG_SERVER: ${{ matrix.pkg-server }}
- uses: julia-actions/julia-runtest@v1

View File

@@ -33,3 +33,13 @@ jobs:
- 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](https://pkgdocs.julialang.org/dev/registries/#Registry-flavors)
for more information.

View File

@@ -17,24 +17,13 @@ inputs:
runs:
using: 'composite'
steps:
# Occasionally, there are rather large delays (> a few hours)
# between the time a package is registered in General and
# propagated to pkg.julialang.org. We can avoid this by manually
# cloning ~/.julia/registries/General/ in Julia 1.5 and later.
# See:
# * https://github.com/JuliaLang/Pkg.jl/issues/2011
# * https://github.com/JuliaRegistries/General/issues/16777
# * https://github.com/JuliaPackaging/PkgServer.jl/issues/60
- run: julia --color=yes "$GITHUB_ACTION_PATH"/add_general_registry.jl
shell: bash
env:
# We set `JULIA_PKG_SERVER` only for this step to enforce
# `Pkg.Registry.add` to use Git. This way, Pkg.jl can send
# the request metadata to pkg.julialang.org when installing
# packages via `Pkg.test`.
JULIA_PKG_SERVER: ""
- run: julia --color=yes --project=${{ inputs.project }} -e 'using Pkg; if VERSION >= v"1.1.0-rc1"; Pkg.build(verbose=true); else Pkg.build(); end'
- name: Set and export registry flavor preference
run: echo "JULIA_PKG_SERVER_REGISTRY_PREFERENCE=${JULIA_PKG_SERVER_REGISTRY_PREFERENCE:-eager}" >> ${GITHUB_ENV}
shell: bash
- run: |
import Pkg
VERSION >= v"1.5-" && Pkg.Registry.add("General")
VERSION >= v"1.1.0-rc1" ? Pkg.build(verbose=true) : Pkg.build()
shell: julia --color=yes --project=${{ inputs.project }} {0}
env:
JULIA_PKG_PRECOMPILE_AUTO: "${{ inputs.precompile }}"

View File

@@ -1,60 +0,0 @@
using Pkg
function tarball_general_registry_location()
reg_dir = joinpath(DEPOT_PATH[1], "registries")
general_registry_tarball = joinpath(reg_dir, "General.tar.gz")
registry_toml_file = joinpath(reg_dir, "General.toml")
return general_registry_tarball, registry_toml_file
end
function cloned_general_registry_location()
general_registry_dir = joinpath(DEPOT_PATH[1], "registries", "General")
registry_toml_file = joinpath(general_registry_dir, "Registry.toml")
return general_registry_dir, registry_toml_file
end
function general_registry_exists()
general_registry_tarball, registry_toml_file = tarball_general_registry_location()
if isfile(general_registry_tarball) && isfile(registry_toml_file)
return true
end
general_registry_dir, registry_toml_file = cloned_general_registry_location()
if !isdir(general_registry_dir)
return false
elseif !isfile(registry_toml_file)
return false
else
return true
end
end
function add_general_registry()
@info("Attempting to clone the General registry")
general_registry_dir, registry_toml_file = general_registry_location()
rm(general_registry_dir; force = true, recursive = true)
Pkg.Registry.add("General")
isfile(registry_toml_file) || throw(ErrorException("the Registry.toml file does not exist"))
return nothing
end
function main(; n = 10, max_delay = 120)
VERSION >= v"1.5-" || return
if general_registry_exists()
@info("The General registry already exists locally")
return
end
delays = ExponentialBackOff(; n = n, max_delay = max_delay)
try
retry(add_general_registry; delays = delays)()
@info("Successfully added the General registry")
catch ex
msg = "I was unable to add the General registry. However, the build will continue."
@error(msg, exception=(ex,catch_backtrace()))
end
return
end
main()