Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pipelight/pipelight
Tiny automation pipelines. Bring CI/CD to the smallest projects. Self-hosted, Lightweight, CLI only.
https://github.com/pipelight/pipelight
automation bash cicd continuous continuous-delivery continuous-deployment continuous-integration continuous-testing devops-tools docker git pipeline rust toml typescript yaml
Last synced: about 2 months ago
JSON representation
Tiny automation pipelines. Bring CI/CD to the smallest projects. Self-hosted, Lightweight, CLI only.
- Host: GitHub
- URL: https://github.com/pipelight/pipelight
- Owner: pipelight
- License: gpl-2.0
- Created: 2023-03-13T18:34:58.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-07-30T18:22:17.000Z (about 2 months ago)
- Last Synced: 2024-07-31T17:43:01.157Z (about 2 months ago)
- Topics: automation, bash, cicd, continuous, continuous-delivery, continuous-deployment, continuous-integration, continuous-testing, devops-tools, docker, git, pipeline, rust, toml, typescript, yaml
- Language: Rust
- Homepage: https://pipelight.dev
- Size: 9.09 MB
- Stars: 350
- Watchers: 4
- Forks: 8
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
Pipelight - Tiny automation pipelines.
Automate your most boring and repetitive tasks.
## 📦 A lightweight tool for CICD
Pipelight is a [Rust](https://www.rust-lang.org/) based small(13Mb) cli tool to
be used from inside a terminal.- Define pipelines using **typescript, toml, hcl and yaml**.
- Trigger on events: git hooks, file changes...Checkout the [Documentation](https://pipelight.dev) for a much friendly approach
and a deeper understanding.![pipelight_demo](https://github.com/pipelight/doc.pipelight/blob/master/public/images/showcase.gif)
## Define pipelines with a programming language.
Fold your bash commands into an object `Pipeline{ Step{ Command }}` written in
**Typescript**.As long as you know javascript,
you are ready to go with your favorite syntax flavor.Use a verbose and declarative syntax (Objects API).
```ts
const my_pipeline = {
name: "build_my_website",
steps: [
{
name: "clean directory",
commands: ["rm -rf ./dist"],
},
{
name: "build",
commands: ["pnpm install", "pnpm lint", "pnpm build"],
},
],
};
```Use the provided sweet shorthands (Helpers API).
```ts
const my_pipeline = pipeline("build website", () => [
step("clean directory", () => [`rm -rf ${build_dir}`]),
step("build", () => ["pnpm install", "pnpm lint", "pnpm build"]),
step("send to host", () => [`scp -r ${build_dir}`]),
step("do stuffs on host", () => [
ssh("host", () => ["systemctl restart nginx"]),
]),
]);
```## Define pipelines with a configuration language
For your most simple pipelines.
Toml
```toml
[[pipelines]]
name = "test"[[pipelines.steps]]
name = "build"
commands = ["pnpm install", "pnpm build"][[pipelines.triggers]]
branches = ["master","dev"]
actions= ["pre-push", "pre-commit"]
```Hcl
```hcl
# A pipeline
pipelines = [{
name = "test"
steps = [{
name = "build"
commands = ["pnpm install", "pnpm build"]
}]
triggers = [{
branches = ["master","dev"]
actions = ["pre-push", "pre-commit"]
}]
}]
```Yaml
```yml
pipelines:
- name: test
steps:
- name: build
commands:
- pnpm install
- pnpm build
- triggers:
- branches:
- master
- dev
actions:
- pre-push
- pre-commit
```## Automatic triggers
Add automatic triggers to your pipeline.
_If you want to run tests on file change or deploy to production on push to master._
```sh
# enable watcher and git hooks.
pipelight enable git-hooks
pipelight enable watcher
``````ts
pipeline.add_trigger({
branch: ["master"],
actions: ["pre-push"],
});
```## 🫦 Pretty and verbose logs
Get the pipeline most relevant informations or dive into the steps and commands
standard outputs.Get the pipeline status, event, execution time... and more.
```sh
pipelight logs
```Get a tranparent outputs of every subprocesses.
```sh
pipelight logs -vvvv
```## 🛠️ Install (Linux)
> [!IMPORTANT]
> Pipelight is not (yet) compatible with macOS or Windows.Checkout the
[instruction guide](https://pipelight.dev/introduction/install.html) for your
favorite package manager.## 🚀 Get started!
Create a default configuration file `pipelight.ts` in your project root
directory with:```sh
pipelight init
```Try the harmless default pipeline:
```sh
pipelight run
```And explore logs:
```sh
pipelight logs -vvvv
```## Community
Reach the community whenever you need support or software improvements. On
[discord](https://discord.gg/swNRD3Xysz) or on telegram at
[@Areskul](https://t.me/areskul) or send a mail at [email protected].## Roadmap
Support other configuration languages:
Can't tell the difference between them,
but Rustacean made crates for it.- [x] feat: add support for hashicorp hcl
- [ ] feat: add support for apple pkl
- [ ] feat: add support for CNCF kclCrate:
- [ ] doc: add example for pipelight_utils crate
Javascript helpers:
- [ ] feat: add helper for jucenit proxy
- [ ] refactor: rewrite docker helpers in rust wasmCli:
- [ ] feat: add a tui interface with ratatui
- [ ] feat: add a live view for processing pipelinesCommunity:
- [x] feat: add a news page on Documentation website
- [ ] refactor: move out of discordLicensed under GNU GPLv2 Copyright (C) 2023 Areskul