{"id":13700943,"url":"https://github.com/m-reda/pipeline","last_synced_at":"2025-05-04T19:33:58.388Z","repository":{"id":144202271,"uuid":"85202308","full_name":"m-reda/pipeline","owner":"m-reda","description":"Node-based automation server","archived":false,"fork":false,"pushed_at":"2017-04-16T14:55:18.000Z","size":261,"stargazers_count":224,"open_issues_count":1,"forks_count":14,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-02-14T23:34:40.697Z","etag":null,"topics":["automation","ci","go","node-base","server","workflow"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m-reda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2017-03-16T14:01:26.000Z","updated_at":"2024-08-02T21:06:13.328Z","dependencies_parsed_at":"2023-06-18T05:15:36.074Z","dependency_job_id":null,"html_url":"https://github.com/m-reda/pipeline","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-reda%2Fpipeline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-reda%2Fpipeline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-reda%2Fpipeline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-reda%2Fpipeline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m-reda","download_url":"https://codeload.github.com/m-reda/pipeline/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224406065,"owners_count":17305718,"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","ci","go","node-base","server","workflow"],"created_at":"2024-08-02T20:01:10.092Z","updated_at":"2024-11-13T06:31:37.626Z","avatar_url":"https://github.com/m-reda.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"![Build Status](https://github.com/m-reda/pipeline/blob/master/logo.jpg)\n\n[![Build Status](https://travis-ci.org/m-reda/pipeline.svg?branch=master)](https://travis-ci.org/m-reda/pipeline)\n[![Coverage Status](https://coveralls.io/repos/github/m-reda/pipeline/badge.svg?branch=master)](https://coveralls.io/github/m-reda/pipeline?branch=master)\n[![Codacy Badge](https://img.shields.io/codacy/grade/4a9417c844594bd28060477885d99d3c.svg)](https://www.codacy.com/app/m-reda/pipeline?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=m-reda/pipeline\u0026amp;utm_campaign=Badge_Grade)\n[![Go Report Card](https://goreportcard.com/badge/github.com/m-reda/pipeline?1)](https://goreportcard.com/report/github.com/m-reda/pipeline)\n[![Docker Build Statu](https://img.shields.io/badge/docker-pipeline-green.svg?style=flat)](https://hub.docker.com/r/mreda/pipeline/)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/m-reda/pipeline/master/LICENSE)\n\nFeatures\n--------\n- Node-based tasks\n- Ready to use units\n- Easy to defined new units\n- Remote build trigger\n- Scheduled builds\n- Real-time build logs\n- Elegant user interface\n- Responsive UI\n\nVideo\n-----\n[![Pipeline Video](http://i.imgur.com/GRMRsQx.png)](https://youtu.be/A_upilYkrok)\n\nOperating system\n----------------\n`Linux` and `macOS` are supported, for windows you can use docker.\n\nInstallation (Pre-release)\n----------------\n`Note: this release is non-production ready.`\n#### Docker\n\n\t$ docker run -d --name pipeline -p 8080:80 mreda/pipeline\n\n#### wget \n\n\t$ wget https://github.com/m-reda/pipeline/releases/download/0.1/pipeline-linux.zip\n\t$ unzip pipeline.zip \u0026\u0026 cd pipeline\n\t$ PORT=8080 ./pipeline\n\n#### Download\n- v0.1-alpha\n\t- [pipeline-linux.zip](https://github.com/m-reda/pipeline/releases/download/v0.1-alpha/pipeline-alpha-linux.zip)\n\t- [pipeline-macOS.zip](https://github.com/m-reda/pipeline/releases/download/v0.1-alpha/pipeline-alpha-macOS.zip)\n\n\n\nBuilt-in Units\n-------------\n- Filesystem\n  - Copy\n  - Move\n  - Remove\n  - Make file\n  - Make directory\n- Git\n  - Init\n  - Add\n  - Commit\n  - Push\n  - Clone\n  - Checkout\n  - Merge\n  - Add remote\n  - Pull\n- FTP\n  - List contents\n  - Make directory\n  - Remove directory\n  - Upload file\n  - Remove file\n  - Rename\n- General\n  - Run command\n  - Send email\n  - Sleep x seconds\n  - Request URL\n  - SSH Command\n  - Zip / unzip\n\nAdd New Unit\n--------\n1. Create new directory under data/units `./data/units/[unit-id]`\n\n2. Create unit definition file `data/units/[unit-id]/unit.js`\n```json\n{\n\t\"ID\": \"fs_copy\",\n\t\"Name\": \"FS Copy\",\n\t\"Group\": \"filesystem\",\n\t\"Version \": \"0.0.1\",\n\t\"Creator\": \"Mahmoud Reda\",\n\t\"Command\": \"bin:/builtin fs copy {source} {destination}\",\n\t\"Inputs\": {\n\t\t\"source\": \"Source\",\n\t\t\"destination\": \"Destination\"\n\t},\n\t\"Outputs\": {\n\t\t\"destination\": \"Destination\"\n\t},\n\t\"Setting\": {\n\t\t\"flag\": {\"Name\": \"Flag Name\", \"Type\": \"text\", \"Value\": \"\"}\n\t}\n}\n```\n- The inputs keys must match the names in the command:\n```json\n{\n\t\"Command\": \"bin:/filesystem delete {file_path}\",\n\t\"Inputs\": {\n\t\t\"file_path\": \"File Path\"\n\t}\n}\n```\n\n- Command can be global or prefixed with `unit:` or `bin:`\n\t- `bin:` equals ./data/units/bin\n\t- `unit:` equals ./data/units/[unit-id]\n\t\n\n- The setting values will passed to the unit command as flags.\n- Unit directory can contain custom scripts.\n- Each output should be printed in a separate line staring with output's key:\n\t\n```\noutput1:sometext\noutput2:/path/to/file\noutput3:{\"key\":\"value\"}\n```\n\nTODO\n----\n- [ ] Authentication\n- [ ] Concurrent Builds\n- [ ] Using Database\n- [ ] Upload unit\n\nCustom Build\n------------\nYou can customize the build setting from Makefile under `release` command, and rebuild using:\n```\n$ make release\n```\nthe new build will be under `bin` directory, or you can build new docker image using:\n```\n$ make docker\n```\n\n\nCommunity\n---------\nContributions, questions, and comments are welcomed and encouraged.\n\nThe Node Editor\n----------\nI'm using my library [Linker](https://github.com/m-reda/linker).\n\n[![Linker](https://github.com/m-reda/linker/raw/master/dist/logo.png)](https://github.com/m-reda/linker)\n\n\nDependencies\n------------\n[mux](https://github.com/gorilla/mux) / \n[websocket](https://github.com/gorilla/websocket) / \n[cron](https://github.com/robfig/cron) / \n[cli](https://github.com/urfave/cli) /\n[ftp](https://github.com/jlaffaye/ftp) /\n[go.uuid](https://github.com/satori/go.uuid) /\n[testify](https://github.com/stretchr/testify)\n\nLicense\n-------\nThis code is distributed under the MIT license found in the [LICENSE](https://github.com/m-reda/pipeline/LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-reda%2Fpipeline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm-reda%2Fpipeline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-reda%2Fpipeline/lists"}