Releases: hercules-ci/hercules-ci-agent
hercules-ci-agent-0.10.2 - 2024-05-03
Added
- Add
nixSettings
configuration item, to more easily configure Nix settings such assubstituters
, overriding the system Nix settings. - Cachix 1.7.2 support
Fixed
- Remove most uses of
c_str()
, of which at least one exhibited undefined behavior. nix-darwin
module now readssystem
correctly from the configuration.
hercules-ci-agent-0.10.1 - 2024-02-12
Changed
-
More work is performed concurrently during evaluation, including binary cache lookups and (more) build dispatch. This results in a speedup.
-
Dependencies of build dependencies are not scheduled eagerly anymore.
This reduces the scope of all jobs that are evaluated by agents since this release, resulting in a speedup.
This resolves a noticable slowdown when first evaluating significant Nixpkgs updates when itsstaging
branch is merged.Strictly speaking, a job success no longer guarantees that absolutely everything (all the way up to the bootstrap binaries) is realisable on your agents.
This property is generally not your responsibility, and enforcing it had the effect of excluding less reproducible platforms such as darwin.
Instead, a weaker property is provided: your derivations are realisable, as well as the immediate build dependencies. "Your derivations" is defined as those whose outputs are not already cached.CI setups based on the Nix command line interface (almost all CIs) also behave this way.
-
The recommended configuration format is now JSON, preferably generated using a configuration manager such as NixOS or nix-darwin.
TOML is still supported, but does not supportnull
in labels, and due to library limitations, it requires that intermediate tables be specified. See the config file documentation. -
services.hercules-ci-agent
is now an alias forservices.hercules-ci-agents.""
, which still provides the same behavior as the old module. -
Hardening flags have been applied to the NixOS module.
-
The effect sandbox now use the
crun
container runtime instead ofrunc
. -
Attribute sets containing a
_type
attribute are not scanned for derivations inherculesCI.<...>.outputs
. This prevents accidental scanning of large or failing attribute trees, such as NixOS configurations.nixosConfigurations
in Flakes are still built as usual, as they are not (verbatim) in theherculesCI.<...>.outputs
attributes.
Added
-
Effect mounts. Specify
effectMountables
in the agent configuration, deploy, and mount them into an effect. This can be used for instance to expose the host's/etc/hosts
, or hardware devices such as GPUs. Access is controlled by the agent configuration. -
New configuration option
remotePlatformsWithSameFeatures
, allowing a remote build to be used before more elaborate remote builder support is implemented.
The recommended method for running a cluster is still to installhercules-ci-agent
on each machine, as that is more efficient and accurate. -
Agent labels can now be
null
, when using the JSON configuration format.
Fixed
-
Low level crash details are now reported in the log as expected.
-
An interaction between the Nix GC and threads has been fixed, solving such a crash.
hercules-ci-agent-0.9.12 - 2023-06-28
Added
-
Nix 2.16 support
-
Nix 2.15 support
Fixed
- Do not
chdir
the build worker. This functionality of theprocess
package appears unreliable, but is not needed.
hercules-ci-cli-0.3.4
0.3.4 - 2022-12-02
Added
hci state get --version INT
added, to retrieve a specific revision of a remote state file.
hercules-ci-agent-0.9.9 - 2022-12-02
0.9.9 - 2022-12-02
Fixed
-
The flake
templates
check now allows filtered sources. -
Tweaks to diagnostic messages
hercules-ci-agent-0.9.8 - 2022-11-15
Added
-
herculesCI.onSchedule
jobs, which a created at set times. These can be used
to automate work that doesn't start with a code change, such as automatic
updates or impure periodic deployments. -
Secret types and the
GitToken
type, to be provided by the Hercules CI GitHub
App. As of writing this requires a permission approval in the GitHub UI. This
has to be initiated on the Hercules CI side. More on that very soon. -
More repository metadata in the
herculesCI
attribute; see evaluation docs.
Fixed
-
Work around excessive stack use by libstdc++ regex issue
The new limit of 256 MiB stack allows larger string inputs to be used.
This bug was triggered by purs-nix and possibly other Nix expression libraries that parse substantial files. -
Lift the agent-side restriction on the number of derivations in a job.
hercules-ci-agent-0.9.7 - 2022-07-21
Added
- Nix 2.10 support
Removed
-nix_2_7
variants. Nixpkgs has stopped offering older versions of Nix. If
you need an older version, you could inject an older Nixpkgs into this flake
usinghercules-ci-agent.inputs.nixpkgs.follows = ...
.
hercules-ci-agent-0.9.6 - 2022-06-21
0.9.6 - 2022-06-21
Added
- Nix 2.9 support
Fixed
- NixOS module: keep main process running when worker triggers system OOM killer.
- Missing file in hackage sdist
hercules-ci-agent-0.9.5 - 2022-05-17
0.9.5 - 2022-05-17
Added
- Concurrent IFD, reducing evaluation wall clock time
- Nix 2.8.0 support
- Improved log contexts
Fixed
- Workaround for cachix#406 (add
login
tonetrc
) - A crash in
inline-c-cpp
exception handling (inline-c-cpp
update) - Towards the error "Could not push logs within 10 minutes after completion"
- Add a timeout to prevent in case of a stuck handshake
- Enforce log limit on client side as well in case of excessive log spam and an upload bottleneck
Removed
hercules-ci-agent-nix_2_5
variant: upgrade to plainhercules-ci-agent
(2.8.0) or_nix_2_7
.
hercules-ci-agent-0.9.3 - 2022-04-08
Added
- The evaluator now caches build statuses and ignores redundant rebuild requests, giving a significant performance boost to IFD-heavy jobs.
Fixed
- The branch name in flake-based jobs is now handled correctly when special characters are present.