Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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 docker git pipeline rust toml typescript yaml

Last synced: 2 days ago
JSON representation

Tiny automation pipelines. Bring CI/CD to the smallest projects. Self-hosted, Lightweight, CLI only.

Awesome Lists containing this project

README

        



pipelight_logo


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 **toml, hcl, yaml, typescript**.
- Trigger on events: git hooks, file changes...

Checkout the [Documentation](https://pipelight.dev) for a much friendly approach
and a deeper understanding.

## Usage example

![pipelight_demo](https://github.com/pipelight/doc.pipelight/blob/master/public/tapes/gifs/demo.gif)

## Define pipelines with a configuration language

Fold your bash commands into an object `Pipeline{ Step{ Command }}`.

Use your preferred configuration languages 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
```

## Define pipelines with a programming language.

Fold your bash commands into an object `Pipeline{ Step{ Command }}`.

As long as you know javascript,
you are ready to go with your favorite syntax flavor.

- Javascript. Use a verbose and declarative syntax.

```js
const my_pipeline = {
name: "build_my_website",
steps: [
{
name: "clean directory",
commands: ["rm -rf ./dist"],
},
{
name: "build",
commands: ["pnpm install", "pnpm lint", "pnpm build"],
},
],
};
```

- Typescript(with Helpers). Use the provided sweet shorthands.

```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"]),
]),
]);
```

## 🤖 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
```

```toml
[[pipelines.triggers]]
branches = ["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
```

pretty logs

Get a tranparent outputs of every subprocesses.

```sh
pipelight logs -vvvv
```

pretty logs

## 🛠️ Install

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].

Licensed under GNU GPLv2 Copyright (C) 2023 Areskul