Skip to content
View pipelight's full-sized avatar
🎯
Focusing
🎯
Focusing
Block or Report

Block or report pipelight

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
pipelight/README.md

pipelight_logo

Pipelight - Tiny automation pipelines.

Automate your most boring and repetitive tasks.

  • Define pipelines using typescript, toml and yaml.
  • Pipelines get triggered on specific events (git hooks, file changes).

Checkout the Documentation for a much friendly approach and a deeper understanding.

📦 A lightweight tool for CICD

Pipelight is a Rust based small(13Mb) cli tool to be used from inside a terminal.

Define pipelines with a programming language

Fold your bash commands into an object Pipeline{ Step{ Command }} written in Typescript, and it executes the pipeline on some events.

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

Use a verbose and declarative syntax (Objects API).

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

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.

  • Run tests on file change,
  • Deploy to production on push to master,...
# enable watcher and git hooks.
pipelight enable git-hooks
pipelight enable watcher
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.

pipelight logs

pretty logs

Get a tranparent outputs of every subprocesses.

pipelight logs -vvvv

pretty logs

🛠️ Install (Linux)

Important

Pipelight is not (yet) compatible with macOS or Windows.

Checkout the instruction guide for your favorite package manager.

🚀 Get started!

Create a default configuration file pipelight.ts in your project root directory with:

pipelight init

Try the harmless default pipeline:

pipelight run

And explore logs:

pipelight logs -vvvv

Community

Reach the community whenever you need support or software improvements. On discord or on telegram at @Areskul or send a mail at [email protected].

Licensed under GNU GPLv2 Copyright (C) 2023 Areskul

Pinned

  1. pipelight pipelight Public

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

    Rust 272 6

  2. deno.pipelight deno.pipelight Public

    Typescript helpers for pipelight

    TypeScript 1

  3. doc.pipelight doc.pipelight Public

    The Pipelight documentation website

    Vue 2 1

  4. virshle virshle Public

    Libvirtd wrapper for TOML, YAML and JSON support.

    TypeScript