{"id":13502840,"url":"https://github.com/pipelight/pipelight","last_synced_at":"2025-05-15T11:07:24.772Z","repository":{"id":150302954,"uuid":"613524760","full_name":"pipelight/pipelight","owner":"pipelight","description":"Tiny automation pipelines. Bring CI/CD to the smallest projects. Self-hosted, Lightweight, CLI only.","archived":false,"fork":false,"pushed_at":"2025-03-07T12:39:04.000Z","size":9775,"stargazers_count":704,"open_issues_count":11,"forks_count":18,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-08T00:14:49.138Z","etag":null,"topics":["automation","bash","cicd","docker","git","pipeline","rust","toml","typescript","yaml"],"latest_commit_sha":null,"homepage":"https://pipelight.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pipelight.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-03-13T18:34:58.000Z","updated_at":"2025-05-06T08:40:43.000Z","dependencies_parsed_at":"2023-10-05T15:34:11.989Z","dependency_job_id":"74b72f2b-fb65-47e0-981f-550a7e2e8c4e","html_url":"https://github.com/pipelight/pipelight","commit_stats":null,"previous_names":[],"tags_count":85,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pipelight%2Fpipelight","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pipelight%2Fpipelight/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pipelight%2Fpipelight/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pipelight%2Fpipelight/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pipelight","download_url":"https://codeload.github.com/pipelight/pipelight/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254328384,"owners_count":22052632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","bash","cicd","docker","git","pipeline","rust","toml","typescript","yaml"],"created_at":"2024-07-31T22:02:26.614Z","updated_at":"2025-05-15T11:07:24.724Z","avatar_url":"https://github.com/pipelight.png","language":"Rust","readme":"\u003cspan\u003e\n\u003ch1\u003e\n\u003cimg width=\"125px\" alt=\"pipelight_logo\" src=\"https://pipelight.dev/images/pipelight.png\"/\u003e\n\u003cp\u003ePipelight - Tiny automation pipelines.\u003c/p\u003e\n\u003c/h1\u003e\n\u003c/span\u003e\n\nAutomate your most boring and repetitive tasks.\n\n## 📦 A lightweight tool for CICD\n\nPipelight is a [Rust](https://www.rust-lang.org/) based small(13Mb) cli tool to\nbe used from inside a terminal.\n\n- Define pipelines using **toml, hcl, yaml, typescript**.\n- Trigger on events: git hooks, file changes...\n\nCheckout the [Documentation](https://pipelight.dev) for a much friendlier approach\nand a deeper understanding.\n\n## Usage example\n\n![pipelight_demo](https://github.com/pipelight/doc.pipelight/blob/master/public/tapes/gifs/demo.gif)\n\n## Define pipelines with a configuration language\n\nFold your bash commands into an object `Pipeline{ Step{ Command }}`.\n\nUse your preferred configuration languages for your most simple pipelines.\n\n- Toml\n\n  ```toml\n  [[pipelines]]\n  name = \"test\"\n\n  [[pipelines.steps]]\n  name = \"build\"\n  commands = [\"pnpm install\", \"pnpm build\"]\n\n  [[pipelines.triggers]]\n  branches = [\"master\",\"dev\"]\n  actions= [\"pre-push\", \"pre-commit\"]\n  ```\n\n- Hcl\n\n  ```hcl\n  # A pipeline\n  pipelines = [{\n    name = \"test\"\n    steps = [{\n      name     = \"build\"\n      commands = [\"pnpm install\", \"pnpm build\"]\n    }]\n    triggers = [{\n      branches = [\"master\",\"dev\"]\n      actions  = [\"pre-push\", \"pre-commit\"]\n    }]\n  }]\n  ```\n\n- Yaml\n\n  ```yml\n  pipelines:\n    - name: test\n      steps:\n        - name: build\n          commands:\n            - pnpm install\n            - pnpm build\n    - triggers:\n        - branches:\n            - master\n            - dev\n          actions:\n            - pre-push\n            - pre-commit\n  ```\n\n## Define pipelines with a programming language.\n\nFold your bash commands into an object `Pipeline{ Step{ Command }}`.\n\nAs long as you know javascript,\nyou are ready to go with your favorite syntax flavor.\n\n- Javascript. Use a verbose and declarative syntax.\n\n  ```js\n  const my_pipeline = {\n    name: \"build_my_website\",\n    steps: [\n      {\n        name: \"clean directory\",\n        commands: [\"rm -rf ./dist\"],\n      },\n      {\n        name: \"build\",\n        commands: [\"pnpm install\", \"pnpm lint\", \"pnpm build\"],\n      },\n    ],\n  };\n  ```\n\n- Typescript(with Helpers). Use the provided sweet shorthands.\n\n  ```ts\n  const my_pipeline = pipeline(\"build website\", () =\u003e [\n    step(\"clean directory\", () =\u003e [`rm -rf ${build_dir}`]),\n    step(\"build\", () =\u003e [\"pnpm install\", \"pnpm lint\", \"pnpm build\"]),\n    step(\"send to host\", () =\u003e [`scp -r ${build_dir}`]),\n    step(\"do stuffs on host\", () =\u003e [\n      ssh(\"host\", () =\u003e [\"systemctl restart nginx\"]),\n    ]),\n  ]);\n  ```\n\n## 🤖 Automatic triggers\n\nAdd automatic triggers to your pipeline.\n\n_If you want to run tests on file change or deploy to production on push to master._\n\n```sh\n# enable watcher and git hooks.\npipelight enable git-hooks\npipelight enable watcher\n```\n\n```toml\n[[pipelines.triggers]]\nbranches = [\"master\"]\nactions = [\"pre-push\"]\n```\n\n## 🫦 Pretty and verbose logs\n\nGet the pipeline most relevant informations or dive into the steps and commands\nstandard outputs.\n\nGet the pipeline status, event, execution time... and more.\n\n```sh\npipelight logs\n```\n\n\u003cimg width=\"500px\" alt=\"pretty logs\" src=\"https://pipelight.dev/images/log_level_error.png\"/\u003e\n\nGet a tranparent outputs of every subprocesses.\n\n```sh\npipelight logs -vvvv\n```\n\n\u003cimg width=\"500px\" alt=\"pretty logs\" src=\"https://pipelight.dev/images/log_level_trace.png\"/\u003e\n\n## 🛠️ Install\n\nCheckout the\n[instruction guide](https://pipelight.dev/introduction/install.html) for your\nfavorite package manager.\n\n## 🚀 Get started!\n\nCreate a default configuration file `pipelight.ts` in your project root\ndirectory with:\n\n```sh\npipelight init\n```\n\nTry the harmless default pipeline:\n\n```sh\npipelight run\n```\n\nAnd explore logs:\n\n```sh\npipelight logs -vvvv\n```\n\n## Community\n\nReach the community whenever you need support or software improvements. On\n[discord](https://discord.gg/swNRD3Xysz) or on telegram at\n[@Areskul](https://t.me/areskul) or send a mail at areskul@areskul.com.\n\nLicensed under GNU GPLv2 Copyright (C) 2023 Areskul\n","funding_links":[],"categories":["Rust","List of Continuous Integration services","bash"],"sub_categories":["Introduction"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpipelight%2Fpipelight","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpipelight%2Fpipelight","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpipelight%2Fpipelight/lists"}