aboutsummaryrefslogtreecommitdiff
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2023-11-02fixup! [Chore] Make activation wait timeout configurableRoman Melnikov1-1/+1
2023-11-02[Chore] Make activation wait timeout configurableRoman Melnikov5-4/+27
Problem: Currently profile activation waiting timeout is hardcoded to 240 seconds, see https://github.com/serokell/deploy-rs/pull/48. In some cases, this timeout can be exceeded (e.g. activation performs a heavy DB migration and waits for it to finish before considering the profile activation succesful). Solution: Make this timeout configurable via 'activationTimeout' deploy attribute or corresponding '--activation-timeout' CLI option. For the sake of backward compatibility, the new 'wait' subcommand '--activation-timeout' option is made optional and defaults to 240 seconds if it wasn't provided.
2023-11-02[Chore] fix error messages claiming to have rolled back when not actually ↵Philipp Herzog1-2/+3
doing so closes: #241
2023-09-12[#201] Deduce profile directory during activationRoman Melnikov3-47/+166
Problem: Since https://github.com/NixOS/nix/pull/5226 nix profiles for users are stored in 'XDG_STATE_HOME' or 'HOME' directory. However, 'deploy-rs' still expects profiles to be present in '/nix/var/nix/profiles/per-user'. As a result, an attempt to deploy a profile with newer nix may fail with an error about non-existing files. Solution: Instead of deducing the profile path prior to ssh'ing and actual activation, deduce the path to the profile during as a part of 'activate-rs' invocation. Now if the profile path is not specified explicitly as an attribute in profile within the deploy flake, the path to the profile is determined based on the user to which the profile belongs and on the values of 'XDG_STATE_HOME' and 'HOME' variables. Additionally, if the old profile directory (in '/nix/var/nix/profiles/per-user') for a given user already exists, it is used instead for the sake of backward compatibility.
2023-06-08actually merge confirm_timeout into merged_settingsArtemis Everfree1-1/+4
2023-05-05fixup! [#202] Provide '^out' suffix for deriver on newer nixRoman Melnikov1-7/+15
2023-05-05[#202] Provide '^out' suffix for deriver on newer nixRoman Melnikov1-3/+24
Problem: Since 2.15 nix no longer reference '.drv' as derivation outputs. At the same time, nix before '2.13' doesn't support '.drv' special suffix handling. Solution: Provide '^out' suffix for the profile deriver in case 'nix path-info <...>.drv' returns the same '<...>.drv' path. In other cases either an error about the build result not being present in the /nix/store is returned or an actual build result path is returned.
2023-04-20[Chore] Handle 'temp_path' as an actual 'Path' instead of 'String'Roman Melnikov5-31/+40
Problem: 'temp_path' and 'lock_path' are handled as 'String'. This can be a problem when the 'temp_path' directory is a symlink on the target system, e.g. this is the case with the default '/tmp' and macOS, where this directory is actually a symlink to '/private/tmp'. Solution: Handle 'temp_path' and 'lock_path' as actual Paths. Also, canonicalize 'temp_path' to avoid canary file path mismatches when checking filesystem events. As a side effect, also update the 'notify' dependency to the latest stable version.
2023-04-14[#197] Fix hostname overriding for remote buildsRoman Melnikov1-8/+6
Problem: '--hostname' is ignored when used with '--remote-build'. Solution: Account for 'data.deploy_data.cmd_overrides.hostname' when building a profile remotely.
2022-12-29Build every profile first, then push (#158)2xsaiko2-26/+40
Try to build everything first before pushing to remotes. Since the build is more likely to fail than the upload, if there is an error the deployment will fail sooner and before uploading any potentially unusable configuration.
2022-11-18Add option to build on the remote hostPhilipp Herzog4-69/+153
2022-11-11Introduce non-zero exit code for rollbacksPhilipp Herzog1-1/+3
Closes #179
2022-10-09Add new activation strategy `boot` as equivalent to `nixos-rebuild boot`Maximilian Bosch3-4/+31
This can be useful when e.g. deploying a kernel update to a target host. You usually plan a reboot (or kexec) after that to activate the new kernel. However you don't want to wait for services to be restarted first since these will be "restarted" anyways on the reboot. In cases like GitLab or the Atlassian stack this actually makes a difference. This patch changes the following things: * If `--boot` is provided, `nix-env -p profile-to-activate --set` is called for each deployed profile to make sure that it is activated automatically after a reboot. * However, the actual activation (e.g. `switch-to-configuration switch`) is skipped. Instead: * For NixOS, `switch-to-configuration boot` is called to set the new profile as default in the bootloader. * For everything else, nothing else is done. The profile is already the new default (and thus picked up on the next boot).
2022-01-28Add custom sudo command supportAndrew Fontaine3-1/+15
This is useful for nodes that utilize `doas` instead of `sudo`.
2021-11-18ensure spawned thread exits before mainTimothy DeHerrera1-1/+5
2021-08-12General code cleanupnotgne25-130/+117
2021-07-29fix ambiguous crate refTimothy DeHerrera1-1/+1
2021-07-29optionally take args as inputTimothy DeHerrera2-4/+7
2021-07-29make cli opts publicTimothy DeHerrera1-1/+1
2021-07-14export cli run in libTimothy DeHerrera3-667/+677
2021-07-02Evaluate only once, and then only realiseAlexander Bantyev1-9/+47
2021-06-22Cargo fmtAlexander Bantyev2-7/+11
2021-06-22Add multi node supportYannik Sander4-137/+385
Run multiple deployments in sequence Resolve targets later Extend context by deployed flake Apply clippy suggestions Add revoke command builder Track succeeded deploys Add revoke function Register revoke error as deploy error Prepare revoke command in activate Extend logger to handle revoke Implement revoke command client side Run revoke on previously suceeded Control whether to override by flag Adhere profile configuration auto_rollback setting Cargo fmt Correctly provide profile path to activation script when revoking Document multi flake mode in README Resolve a typo in README.md Co-authored-by: notgne2 <gen2@gen2.space> Use existing teminology rename revoke_suceeded -> rollback_suceeded Use more open CLI argument name `targets` instead of `flakes` Document name changes in README Add sudo command support for revokes Call run_deploy with `dry_active` flag Test revoke commands contains sudo Set default temp_path in activate binary Require temp_path for wait and activate subcommands Add copyright comment Address review change requests Fix typo in README Co-authored-by: Alexander Bantyev <balsoft@balsoft.ru>
2021-04-30Use correct path to `deploy-rs-activate` binary when using `dry_activate`notgne21-3/+5
Signed-off-by: Oleg Pykhalov <go.wigust@gmail.com>
2021-04-16Apply notgne2 suggestions.Oleg Pykhalov2-5/+5
2021-04-07Add dry activate argument.Oleg Pykhalov4-50/+83
2021-02-28Remove `ssh://` prefix from SSH addressesnotgne21-1/+1
2021-02-28Re-use `ssh_addr`notgne21-3/+3
2021-02-19Remove redundant `format!()`notgne21-1/+1
2021-02-09Clean up adding Command argumentsnotgne23-25/+23
2021-02-09Re-add debug log for activate command erroringnotgne21-0/+1
2021-02-09Clean up structure used for activation command error sendingnotgne21-11/+9
2021-02-09Still wait for activation command to end even in cases of errorsnotgne21-43/+70
2021-02-09Use oneshot signals to ensure SSH activate command has finished before ↵notgne21-7/+14
deployment ends
2021-02-09Wait for `ssh_activate` to complete and check for errors in magic_rollback ↵notgne21-11/+20
activation (fixes #58 and #49)
2021-02-07fixup! Evaluate deploy output lazilyAlexander Bantyev1-50/+42
2021-02-06Evaluate deploy output lazilyAlexander Bantyev1-22/+70
Currently, we evaluate the `#deploy` output strictly. This means - Longer eval times - Extraneous evaluation errors with `--skip-checks` - `-- --impure` even when the path we're currently deploying is pure - etc. With this change, evaluation happens lazily -- we only evaluate the nodes and profiles we really need. It is only implemented for flaky Nix, and it is on by default. To get the old behavior, one can specify `--strict-eval`. I have tested that this indeed dramatically increases evaluation speed in all of our repos, and removes the need to deploy Agora with `--impure`. Hooray!
2021-01-26changed: remove 2015-style extern crateBernardo Meurer6-23/+9
2021-01-14Raise wait timeoutnotgne21-1/+1
2021-01-14Only build wait command if magic_rollback is enablednotgne21-10/+10
2021-01-08Don't import PushProfileDatanotgne21-2/+1
2021-01-08Remove unused DeployPathToActivatePathErrornotgne23-13/+0
2021-01-08Remove `Error` postfixes from error variants variantsnotgne21-18/+16
2021-01-08Use type definition for ToDeploynotgne21-53/+52
2021-01-08Struct-ify arguments to push_profilenotgne22-42/+62
2021-01-08Struct-ify arguments to build_wait_commandnotgne21-21/+23
2021-01-08Struct-ify arguments to build_activate_commandnotgne21-26/+28
2021-01-08Fix trivial lint issuesnotgne24-8/+7
2021-01-08Restructure projectnotgne26-52/+50
2021-01-01Format logs differentlynotgne21-3/+3