Skip to content

Commit e8b1899

Browse files
committed
Merge branch 'unstable' into stable
2 parents 9aad041 + c459f9d commit e8b1899

31 files changed

+1015
-680
lines changed

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,26 @@ All notable changes to this project will be documented in this file.
77
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
88
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
99

10+
## [2.0.0] - 2025-11-06
11+
12+
### Added
13+
14+
- `from_cmd` variable type (for example, to get some passkeys via `curl` requests, etc.).
15+
- `desc` (description) field to `exists`, `exists_any` & `check_success` requirements to optionally describe steps for resolving them.
16+
- Independent variable setup for each pipelines (inside `depl edit project` UI -> any pipeline -> `Setup variables for the pipeline`).
17+
- `depl use` command to use content or templates from Deployer's storage.
18+
- `depl export/import registries` command (exports all actions and pipelines, and imports with merge).
19+
20+
### Changed
21+
22+
- Extended command-line options for `depl new content`, unified `edit`/`cat`/`rm` behavior.
23+
- Changed description output for `depl ls pipelines`.
24+
25+
### Fixed
26+
27+
- Custom storage path by `DEPLOYER_STORAGE_PATH` env variable wasn't applied by first.
28+
- Actions that used in a selected pipeline from the Registry are now synchronized with project config file.
29+
1030
## [2.0.0-beta-3] - 2025-10-21
1131

1232
### Changed
@@ -569,6 +589,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
569589
- Build support.
570590
- TUI.
571591

592+
[2.0.0]: https://github.com/impulse-sw/deployer/compare/2.0.0-beta-3...2.0.0
572593
[2.0.0-beta-3]: https://github.com/impulse-sw/deployer/compare/1.5.0-1...2.0.0-beta-3
573594
[1.5.0-1]: https://github.com/impulse-sw/deployer/compare/1.5.0...1.5.0-1
574595
[1.5.0]: https://github.com/impulse-sw/deployer/compare/1.4.4...1.5.0

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "deployer"
3-
version = "2.0.0-beta-3"
3+
version = "2.0.0"
44
edition = "2024"
55

66
[[bin]]

DOCS.md

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,28 @@ Typically, it runs in a separate folder to save the cache while keeping the code
1717
Deployer is primarily a CLI utility. You can see help for any Deployer command by specifying the `-h` option. Here are some examples of the most common commands:
1818

1919
```bash
20-
depl new action # create an Action and put in Registry
21-
depl new pipeline # create a Pipeline and put in Registry
20+
depl new action # create an action and put in Registry
21+
depl new pipeline # create a pipeline and put in Registry
22+
depl new content # add some content in Deployer's storage folder
2223
depl new remote # add new remote host to Registry
24+
25+
depl ls actions/pipelines/content/remote # list all entities from Registries
26+
depl cat action/pipeline/content/remote # display information about entiry from Registry
27+
depl rm action/pipeline/content/remote # remove entity from Registry
28+
2329
depl init # init project, fill all attributes
2430

31+
depl edit project # edit project
32+
depl edit . # (the same)
33+
2534
depl with # check compatibility and assign Pipeline to project,
2635
# also specify needed variables and artifacts
2736

37+
depl use # use some content from Deployer's storage
38+
2839
depl run # run default Pipeline
40+
depl # (the same)
41+
2942
depl run my-pipe # run specified `my-pipe` Pipeline
3043
depl run configure,build -o build-folder # run `configure` and `build` Pipelines in a `build-folder`
3144
depl run -R my-remote my-pipe # run `my-pipe` Pipeline on remote host `my-remote`
@@ -35,7 +48,7 @@ depl watch my-pipe # watch `my-pipe` Pipeline and re-run
3548

3649
### Console Interface (TUI)
3750

38-
Deployer has support for a high-end terminal-based customizer, allowing you to forget about manually writing Actions and Pipelines for your projects. Just try to create an Action or Pipeline and Deployer will ask you about everything.
51+
Deployer has support for a high-end terminal-based customizer, allowing you to forget about manually writing actions and Pipelines for your projects. Just try to create an action or Pipeline and Deployer will ask you about everything.
3952

4053
### Logs
4154

@@ -47,7 +60,7 @@ In the Deployer build caches folder, there is a `logs` folder that contains proj
4760

4861
Action is the main entity of Deployer. Actions as part of pipelines are used to build, install, and deploy processes. However, an action itself cannot be assigned to a project, that's what pipelines are for (see below).
4962

50-
In the Deployer's Action Registry or project's actions list, an action looks like a construction:
63+
In the Deployer's action Registry or project's actions list, an action looks like a construction:
5164

5265
```yaml
5366
info: upx@0.1.0
@@ -75,14 +88,17 @@ requirements:
7588
- /bin/upx
7689
- /usr/bin/upx
7790
- ~/.local/bin/upx
91+
desc: "This is optional description with information about UPX installation steps."
7892
# if this path exists, the requirement is considered satisfied
7993
- type: exists
8094
path: /usr/bin/mold
81-
# if this check is passed, the requirement will be considered satisfied (for details, see below - Action `Check`)
95+
desc: "Only optional"
96+
# if this check is passed, the requirement will be considered satisfied (for details, see below - action `Check`)
8297
- type: check_success
8398
command:
8499
cmd: /usr/bin/python -V
85100
success_when_found: "Python 3."
101+
desc: "Only optional"
86102
# if a given remote host exists in the Registry, is accessible, and its Deployer version is identical to the version of the running Deployer,
87103
# the requirement will be considered satisfied
88104
- type: remote_accessible_and_ready
@@ -99,7 +115,7 @@ There are 7 action categories:
99115
6. Actions of synchronization build folders - from current to remote host `sync_to_remote` and vice versa `sync_from_remote`
100116
7. `interrupt` (when a user needs to perform some actions by hand before continue a pipeline)
101117

102-
The concept of a custom command, a command for the terminal shell, is fundamental. The `custom`, `observe`, and the three main categories of Actions contain one or more custom commands inside.
118+
The concept of a custom command, a command for the terminal shell, is fundamental. The `custom`, `observe`, and the three main categories of actions contain one or more custom commands inside.
103119

104120
#### 1.1. Custom command
105121

@@ -268,7 +284,7 @@ When a patch is applied, Deployer displays the number of times it has been appli
268284

269285
#### 1.4. Actions of synchronization run folders - from current to remote host `sync_to_remote` and vice versa `sync_from_remote`
270286

271-
Sometimes you need to synchronize build files between remote hosts and the current host. For example, when some actions must be performed on one host, and some on another. To do this, you can use the built-in Actions `sync_to_remote` and `sync_from_remote`.
287+
Sometimes you need to synchronize build files between remote hosts and the current host. For example, when some actions must be performed on one host, and some on another. To do this, you can use the built-in actions `sync_to_remote` and `sync_from_remote`.
272288

273289
#### 1.5. Other actions - `interrupt`, `observe` and `test`
274290

@@ -344,9 +360,9 @@ Building and execution occur as follows:
344360
5. Deployer on the host machine runs Deployer in the container and performs complete pipeline execution.
345361

346362
> [!NOTE]
347-
> When building in containers, Deployer does not support Actions `interrupt`, `observe`, `add_to_storage` and `use_from_storage`, and when running - Actions `add_to_storage` and `use_from_storage`.
363+
> When building in containers, Deployer does not support actions `interrupt`, `observe`, `add_to_storage` and `use_from_storage`, and when running - actions `add_to_storage` and `use_from_storage`.
348364
>
349-
> To solve problems of synchronizing files or performing I/O operations, you can use a pipeline with containerized build options inside another pipeline, which can then use the Actions you need.
365+
> To solve problems of synchronizing files or performing I/O operations, you can use a pipeline with containerized build options inside another pipeline, which can then use the actions you need.
350366

351367
> [!NOTE]
352368
> To prevent building Deployer before your project, switch to `shell` pipeline driver.

MIGRATIONS.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Migrations will be applied automatically.
2020

2121
## From `1.4.1` to `1.4.2`
2222

23-
1. Manually check all your `add_to_storage` Actions (`AutoVersionExtractFromRule`): them now look like this:
23+
1. Manually check all your `add_to_storage` actions (`AutoVersionExtractFromRule`): them now look like this:
2424

2525
```json
2626
[
@@ -57,10 +57,10 @@ Formally, you should now specify `type` field of `auto_version_rule` object.
5757

5858
Migrations will be almost fully applied automatically on configuration save. Deployer will be able to work with old configuration formats (`"version": 2`).
5959

60-
1. All Actions will be typed internally with `type` field and `snake_case` (example: `{ "type": "build", ... }`).
60+
1. All actions will be typed internally with `type` field and `snake_case` (example: `{ "type": "build", ... }`).
6161
2. `deploy-config.json` and `deploy-global.json` will be upgraded to `"version": 3`.
6262
3. Variables, requirements, placements and other structs are changed, see the documentation.
63-
4. Check Action will become Test, original Test will be migrated into PostBuild.
63+
4. Check action will become Test, original Test will be migrated into PostBuild.
6464

6565
### Need manual changes:
6666

@@ -74,5 +74,5 @@ Migrations will be almost fully applied automatically on configuration save. Dep
7474
## From `<=1.2.1` to `1.3.0`
7575

7676
1. Edit `deploy-config.json` and rename `inplace_artifacts_into_project_root` to `place_artifacts_into_project_root`.
77-
2. Remove `tags` field inside your deploy-like and `Observe` Actions.
77+
2. Remove `tags` field inside your deploy-like and `Observe` actions.
7878
3. `deploy-config.json` and `deploy-global.json` will be upgraded to `"version": 2`.

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ actions:
9696
used: upx@0.1.0
9797
```
9898

99-
Note that you can change the inner content of Actions inside Pipelines, and also can change the inner content of Pipelines and their Actions if these Pipelines assigned to your project. The changes will not affect Actions and Pipelines from Deployer's Registries.
99+
Note that you can change the inner content of actions inside Pipelines, and also can change the inner content of Pipelines and their actions if these Pipelines assigned to your project. The changes will not affect actions and Pipelines from Deployer's Registries.
100100

101101
You can view your actions and pipelines and get it in YAML by simple commands:
102102

@@ -108,7 +108,7 @@ depl cat action upx@0.1.0
108108
depl cat pipeline pack@0.1.0
109109
```
110110

111-
And, of course, load Actions and Pipelines from YAML files by:
111+
And, of course, load actions and Pipelines from YAML files by:
112112

113113
```bash
114114
depl new action -f {your config}
@@ -122,7 +122,7 @@ depl init
122122
depl edit .
123123
```
124124

125-
You should add some actions and specify project variables that you'll use. For our example, add simple variable with `target/release/my-app` value. Also add `cargo-release@0.1.0` and `upx@0.1.0` actions from Actions Registry. And not forget to add `Cargo.lock` file and `target` folder to cache files to prevent syncing project folder cache with run folder cache (without specifying this; see `depl run --help` for more).
125+
You should add some actions and specify project variables that you'll use. For our example, add simple variable with `target/release/my-app` value. Also add `cargo-release@0.1.0` and `upx@0.1.0` actions from actions Registry. And not forget to add `Cargo.lock` file and `target` folder to cache files to prevent syncing project folder cache with run folder cache (without specifying this; see `depl run --help` for more).
126126

127127
After all you will get this `.depl/config.yaml`:
128128

@@ -199,7 +199,7 @@ depl run -fc
199199
# or explicitly specify the project pipeline's short name - `build-and-compress`
200200
depl run pack
201201

202-
# create pipeline with `Observe` Action and start development server with auto-rebuild
202+
# create pipeline with `Observe` action and start development server with auto-rebuild
203203
depl watch build-and-deploy-devel
204204
```
205205

TODO.md

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,3 @@
1-
# `deployer`'s 2.0 TODO list
1+
# `deployer`'s TODO list
22

3-
- [~] TUI for editing containered (Docker/Podman), Ansible, GitHub CI/CD and GitLab CI/CD options for Pipelines
4-
- [x] Replace complete `RemoteHost` definitions from `ansible_opts` for their shortnames
5-
- [x] Add `depl cd` command to change current directory to one of run directories
6-
- [~] Make `depl export` command:
7-
1. [x] for exporting Pipelines to `bash` scripts
8-
2. [ ] for exporting (and importing with merging) Actions & Pipelines Registries
9-
3. [x] for exporting Pipelines to CI/CD (GitHub Actions & GitLab CI) configurations
10-
- [x] Add `--skip N` argument to skip N Actions inside selected Pipelines, if you exactly know that they have no need to re-run after changes
11-
- [x] Add `--no-clear` argument to disable screen clear on `run`/`watch`
12-
- [~] Go to more declarative way to define project configuration (ver. 6 & Deployer v2.0)
13-
1. [x] Remove targets, programming languages and actions variability
14-
2. [x] Rename `Actions` & `Pipelines` to `actions` and `pipelines`
15-
3. [x] Split `configs.rs` to `project.rs` and `globals.rs`
16-
4. [x] Allow to both use and define actions in pipelines. Used actions should be defined inside project configuration
17-
5. [x] Fix all traits and TUI interface
18-
6. [x] Fix action setup:
19-
> Action setup depends on command definition of placeholders and replacements. I think I should remove replacements completely
20-
> and add `with` field to `UsedAction` as `BTreeMap<String, Variable>`, e.g. placeholder-variable pairs.
21-
- [x] Remove `artifacts` field completely (`artifacts_placements` is enough)
22-
- [x] Fix `depl watch` with no `artifacts` folder ignoring
23-
- [x] Remove automigrator with `MIGRATIONS.md` autoreference:
24-
1. [-] Add `depl migrate` command
25-
2. [x] Remove `configs` source
26-
3. [x] Refine `read` functions from `crate::rw` module
27-
4. [x] Add prompt on `crate::rw` to read `MIGRATIONS.md`
28-
- [-] Make `DEPLOYER_DRIVER` env variable support to define executor: bash on itself or Deployer implementation (default)
29-
- [x] Make `driver` pipeline option support to define executor: bash on itself or Deployer implementation (default):
30-
1. [x] For Pipelines
31-
2. [x] For containered builds & runs
32-
3. [x] For Ansible runs
3+
- [~] TUI for editing containered (Docker/Podman), Ansible, GitHub CI/CD and GitLab CI/CD options for pipelines

0 commit comments

Comments
 (0)