Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
🕊️ peace – zero stress automation
peace
is a framework to build empathetic and forgiving software automation.
See:
- peace.mk for the project vision.
- Background for the motivation to create this framework.
- Operations UX for a book about the dimensions considered during
peace
's design and development.
Guiding Principles
- A joy to use.
- Ergonomic API and guidance to do the right thing.
- Understandable output.
Features
Symbol | Meaning |
---|---|
🟢 | Works well |
🟡 | Partial support |
⚫ | Planned |
🔵 | Compatible by design |
🟣 | Works, "fun idea" |
- 🟢 Idempotent: Multiple invocations result in the goal outcome.
- 🟢 Clean: Every item creation is paired with how it is cleaned up.
- 🟢 Understandable: Progress is shown at an understandable level of detail.
- 🔵 Understandable: Error reporting is compatible with
miette
. - 🟢 Interruptible: Execution can be interrupted.
- 🟢 Resumable: Automation resumes where it was interrupted.
- 🟢 Diffable: States and diffs are serialized as YAML.
- 🟢 Efficient: Tasks are concurrently executed via
fn_graph
. - 🟢 Namespaced: Profile directories isolate environments from each other.
- 🟢 Type Safe: Items and parameters are defined in code, not configuration.
Roadmap
- 🟢 Define items to manage with automation.
- 🟢 Define dependencies between items.
- 🟢 Define "apply" logic.
- 🟢 Define "clean up" logic.
- 🟢 Discover current and goal states.
- 🟢 Define diff calculation between states.
- 🟢 Store and recall parameters across commands.
- 🟢 Diff states between multiple profiles.
- 🟢 Type-safe referential parameters -- specify usage of values generated during automation as parameters to subsequent items.
- 🟢 Cancel-safe interruption.
- 🟡 Feature-gated incremental functionality.
- 🟡 Off-the-shelf support for common items.
- 🟡 Dry run.
- 🟣 WASM support.
- 🟡 Web based UI with interactive graph.
- ⚫ Run command with subset of items.
- ⚫ Params specification: Read values from other flows.
- ⚫ Flow versions: Support migrating environment deployed using previous flow version.
- ⚫ Secure-by-design Support: Encrypted value storage, decrypted per execution / time based agent.
- ⚫ Tutorial for writing a software lifecycle management tool.
- ⚫ Built-in application execution methods -- CLI, web service.
- ⚫
peace
binary for configuration based workflows. - ⚫ Agent mode to run
peace
on servers (Web API invocation).
Further ideas:
- Back up current state.
- Restore previous state.
- Telemetry / metrics logging for analysis.
Examples
Examples are run using --package
instead of --example
, as each example is organized as its own crate.
# e.g.
for
do
done
# Look at metadata that Peace has saved
# Clean up the metadata directory
WASM
The download
example can be built as a web assembly application using wasm-pack
:
In the examples/download
directory, start an HTTP server, and open http://localhost:8000/:
-
Install
cargo-leptos
. -
Build the
envman
example:# defined in .cargo/config.toml
-
Copy artifacts to a temporary directory:
demo_dir=/tmp/demo/envman ||
-
Switch to the demo directory:
demo_dir=/tmp/demo/envman
-
Make sure you have AWS credentials set up in
~/.aws/credentials
. -
Run the appropriate
envman
commands:-
Initialize a project:
# initialize a project to download from `azriel91/web_app`
-
Status / Goal / Diff:
-
Deploy / Clean
-
You can also interrupt the deploy/clean process.
-
-
Run the web interface:
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.