Compare commits

...

16 Commits
v1.3 ... v1.7.0

Author SHA1 Message Date
Venkateshprasad
e3eb439fad fix: install the default registries for version > 1.8 (#55) 2024-11-04 07:17:59 -05:00
dependabot[bot]
d36834d834 Bump julia-actions/setup-julia from 1 to 2 (#53)
Bumps [julia-actions/setup-julia](https://github.com/julia-actions/setup-julia) from 1 to 2.
- [Release notes](https://github.com/julia-actions/setup-julia/releases)
- [Commits](https://github.com/julia-actions/setup-julia/compare/v1...v2)

---
updated-dependencies:
- dependency-name: julia-actions/setup-julia
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-02 00:29:53 -04:00
inky
98b1bc2639 Remove link trailing dot (#51) 2024-01-19 20:59:06 -05:00
dependabot[bot]
cec9c38577 Bump actions/cache from 3 to 4 (#50)
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-18 11:23:02 -05:00
Ian Butterworth
90dd6f23eb add suggestion to use cache action if no depot is detected (#41) 2024-01-05 14:39:52 -05:00
dependabot[bot]
d4b940ea5e Bump actions/setup-python from 4 to 5 (#47)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-07 08:03:57 -05:00
dependabot[bot]
7c82bcb737 Bump actions/checkout from 2 to 4 (#46)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-21 22:16:39 -05:00
dependabot[bot]
015ebdb7f3 Bump actions/setup-python from 2 to 4 (#43)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-21 22:08:30 -05:00
dependabot[bot]
b949419b86 Bump actions/cache from 1 to 3 (#44)
Bumps [actions/cache](https://github.com/actions/cache) from 1 to 3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v1...v3)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-21 22:06:30 -05:00
dependabot[bot]
c00cff0b17 Bump codecov/codecov-action from 1 to 3 (#45)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 1 to 3.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v1...v3)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-21 22:05:40 -05:00
Ian Butterworth
3d96aa283a Create dependabot.yml (#42) 2023-11-21 21:47:00 -05:00
Lukas Grunwald
5484b0e27f Add localregistry input option (#38)
* Add localregistry input option

Option to add local registries to build process by specifying their url (https). Authentication to the repos  via user GitHub token.

* Backward compatible keyword syntax and Wrap new code in VERSION > 1.5

* Update Interface&README, add git_cli amd remove token flag

Provide multiple remotes separated with |
Add example to ReadMe
Support for private repos/packages with SSH protocol

* Update README.md

Co-authored-by: Sascha Mann <git@mail.saschamann.eu>

* Update action.yml

Co-authored-by: Sascha Mann <git@mail.saschamann.eu>

* Print warn mesasge if git_cli = true with Julia<1.7.

* Add `::notice::` formatting

---------

Co-authored-by: Sascha Mann <git@mail.saschamann.eu>
2023-11-08 09:56:55 +01:00
Octogonapus
00f9fd6b26 Add a retry around Pkg.build (#23)
* Add a retry around Pkg.build

* Update action.yml
2023-09-22 11:41:04 +02:00
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
6 changed files with 103 additions and 101 deletions

12
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
# Keep dependencies for GitHub Actions up-to-date
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'daily'

View File

@@ -12,7 +12,7 @@ jobs:
steps:
- name: Configure cache
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: |
${{ env.GITHUB_WORKSPACE }}
@@ -20,7 +20,7 @@ jobs:
key: ${{ runner.os }}
- name: Install the correct Python version
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: '3.x'

View File

@@ -40,7 +40,7 @@ jobs:
steps:
- name: Checkout Example.jl
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
repository: julia-actions/Example.jl
@@ -49,27 +49,18 @@ jobs:
shell: bash
- name: Checkout julia-buildpkg
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
path: ./.github/actions/julia-buildpkg
- uses: julia-actions/setup-julia@v1
- uses: julia-actions/setup-julia@v2
with:
version: ${{ matrix.version }}
arch: ${{ matrix.arch }}
- uses: actions/cache@v1
env:
cache-name: cache-artifacts
with:
path: ~/.julia/artifacts
key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }}
restore-keys: |
${{ runner.os }}-test-${{ env.cache-name }}-
${{ runner.os }}-test-
${{ runner.os }}-
- uses: ./.github/actions/julia-buildpkg
with:
ignore-no-cache: true
env:
JULIA_PKG_SERVER: ${{ matrix.pkg-server }}
@@ -77,7 +68,7 @@ jobs:
- uses: julia-actions/julia-processcoverage@v1
- uses: codecov/codecov-action@v1
- uses: codecov/codecov-action@v3
with:
file: lcov.info

View File

@@ -33,3 +33,39 @@ 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.
### Adding Local Registries
Personal registries, e.g. created with [LocalRegistry.jl](https://github.com/GunnarFarneback/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](https://github.com/webfactory/ssh-agent) action. A snippet illustrating the usage of (private) personal registries is shown below
```yaml
...
# 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](https://docs.julialang.org/en/v1/manual/environment-variables/), for additional control of the SSH configuration used by `Pkg` to add/dev packages.

View File

@@ -13,22 +13,58 @@ inputs:
precompile:
description: 'Whether to allow auto-precompilation (via the `JULIA_PKG_PRECOMPILE_AUTO` env var). Options: yes | no. Default value: no.'
default: 'no'
localregistry:
description: 'Add local registries hosted on GitHub. Specified by providing the url (https/ssh) to the repositories as a newline (\n) seperated list.
User is responsible for setting up the necessary SSH-Keys to access the repositories if necessary.'
default: ''
git_cli:
description: 'Determine if Pkg uses the cli git executable (Julia >= 1.7). Might be necessary for more complicated SSH setups.
Options: true | false. Default : false'
default: 'false'
ignore-no-cache:
description: 'Whether to ignore if there appears to be no depot caching. Silences an action notice recommending `julia-actions/cache`.'
default: 'false'
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.buildpkg.jl
- 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: |
if "${{ inputs.ignore-no-cache }}" == "false" && !isdir(DEPOT_PATH[1])
println("::notice title=[julia-buildpkg] Caching of the julia depot was not detected ::Consider using `julia-actions/cache` to speed up runs https://github.com/julia-actions/cache To ignore, set input `ignore-no-cache: true` ")
end
import Pkg
- 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'
shell: bash
# Determine if Pkg uses git-cli executable instead of LibGit2
VERSION >= v"1.7-" && (ENV["JULIA_PKG_USE_CLI_GIT"] = ${{ inputs.git_cli }})
if VERSION < v"1.7-" && ${{ inputs.git_cli }} == true
printstyled("::notice::JULIA_PKG_USE_CLI_GIT requires Julia >= 1.7. Using default LibGit2 git-interface instead! \n"; color = :yellow)
end
if VERSION >= v"1.5-"
if VERSION >= v"1.8-"
# Install the default registries
Pkg.Registry.add()
else
Pkg.Registry.add("General")
end
# If provided add local registries
if !isempty("${{ inputs.localregistry }}")
local_repos = split("${{ inputs.localregistry }}", "\n") .|> string
for repo_url in local_repos
isempty(repo_url) && continue
Pkg.Registry.add(Pkg.RegistrySpec(; url = repo_url))
end
end
end
VERSION >= v"1.1.0-rc1" ? retry(Pkg.build)(verbose=true) : retry(Pkg.build)()
shell: julia --color=yes --project=${{ inputs.project }} {0}
env:
JULIA_PKG_PRECOMPILE_AUTO: "${{ inputs.precompile }}"
GITHUB_TOKEN: ${{ github.token }}

View File

@@ -1,73 +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) && isfile(registry_toml_file)
return true
end
return false
end
function add_general_registry()
@info("Attempting to install the General registry")
general_registry_tarball, registry_toml_file = tarball_general_registry_location()
rm(general_registry_tarball; force = true, recursive = true)
rm(registry_toml_file; force = true, recursive = true)
general_registry_dir, registry_toml_file = cloned_general_registry_location()
rm(general_registry_dir; force = true, recursive = true)
# If not already set, We set `JULIA_PKG_SERVER` 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`.
pkg_server = get(ENV, "JULIA_PKG_SERVER", "")
withenv("JULIA_PKG_SERVER" => pkg_server) do
Pkg.Registry.add("General")
end
general_registry_exists() || throw(ErrorException("The Registry was not intalled properly"))
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()