Compare commits

...

4 Commits

Author SHA1 Message Date
Fredrik Ekre
ba451bf755 Use eager registry flavor instead of git clone. (#74) 2023-03-13 12:21:51 +01:00
Sascha Mann
fa1e6fac94 Print executed command in debug mode (#72) 2023-01-08 20:50:11 +00:00
Sascha Mann
8d20cd78f8 Support prefixes with args (#71)
Supersedes #48

Co-authored-by: Ian Butterworth <i.r.butterworth@gmail.com>
2023-01-08 21:39:24 +01:00
Simon Christ
c80d3075f7 prevent double tests (#60) 2022-12-19 22:47:16 -05:00
3 changed files with 12 additions and 68 deletions

View File

@@ -11,7 +11,12 @@ An example workflow that uses this action might look like this:
```yaml
name: Run tests
on: [push, pull_request]
on:
push:
branches:
- master
- main
pull_request:
jobs:
test:

View File

@@ -36,22 +36,6 @@ 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: ""
- name: Install dependencies in their own (shared) environment
run: |
if VERSION > v"1.8pre"
@@ -61,15 +45,18 @@ runs:
end
shell: julia --color=yes {0}
if: inputs.annotate == 'true'
env:
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: "${{ env.JULIA_PKG_SERVER_REGISTRY_PREFERENCE == '' && 'eager' || env.JULIA_PKG_SERVER_REGISTRY_PREFERENCE }}"
- run: |
# The Julia command that will be executed
julia_cmd=( julia --color=yes --depwarn=${{ inputs.depwarn }} --inline=${{ inputs.inline }} --project=${{ inputs.project }} -e 'include(joinpath(ENV["GITHUB_ACTION_PATH"], "test_harness.jl"))' )
# Add the prefix in front of the command if there is one
prefix="${{ inputs.prefix }}"
[[ -n $prefix ]] && julia_cmd=( "$prefix" "${julia_cmd[@]}" )
prefix=( ${{ inputs.prefix }} )
[[ -n ${prefix[*]} ]] && julia_cmd=( "${prefix[@]}" "${julia_cmd[@]}" )
# Run the Julia command
echo "::debug::Executing Julia: ${julia_cmd[*]}"
"${julia_cmd[@]}"
shell: bash
env:
@@ -77,3 +64,4 @@ runs:
COVERAGE: ${{ inputs.coverage }}
FORCE_LATEST_COMPATIBLE_VERSION: ${{ inputs.force_latest_compatible_version }}
CHECK_BOUNDS: ${{ inputs.check_bounds }}
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: "${{ env.JULIA_PKG_SERVER_REGISTRY_PREFERENCE == '' && 'eager' || env.JULIA_PKG_SERVER_REGISTRY_PREFERENCE }}"

View File

@@ -1,49 +0,0 @@
using Pkg
function 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_dir, registry_toml_file = 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()