Features
- Node-based tasks
- Ready to use units
- Easy to defined new units
- Remote build trigger
- Scheduled builds
- Real-time build logs
- Elegant user interface
- Responsive UI
Video
Operating system
Linux
and macOS
are supported, for windows you can use docker.
Installation (Pre-release)
Note: this release is non-production ready.
Docker
$ docker run -d --name pipeline -p 8080:80 mreda/pipeline
wget
$ wget https://github.com/m-reda/pipeline/releases/download/0.1/pipeline-linux.zip
$ unzip pipeline.zip && cd pipeline
$ PORT=8080 ./pipeline
Download
Built-in Units
- Filesystem
- Copy
- Move
- Remove
- Make file
- Make directory
- Git
- Init
- Add
- Commit
- Push
- Clone
- Checkout
- Merge
- Add remote
- Pull
- FTP
- List contents
- Make directory
- Remove directory
- Upload file
- Remove file
- Rename
- General
- Run command
- Send email
- Sleep x seconds
- Request URL
- SSH Command
- Zip / unzip
Add New Unit
-
Create new directory under data/units ./data/units/[unit-id]
-
Create unit definition file data/units/[unit-id]/unit.js
{
"ID": "fs_copy",
"Name": "FS Copy",
"Group": "filesystem",
"Version ": "0.0.1",
"Creator": "Mahmoud Reda",
"Command": "bin:/builtin fs copy {source} {destination}",
"Inputs": {
"source": "Source",
"destination": "Destination"
},
"Outputs": {
"destination": "Destination"
},
"Setting": {
"flag": {"Name": "Flag Name", "Type": "text", "Value": ""}
}
}
- The inputs keys must match the names in the command:
{
"Command": "bin:/filesystem delete {file_path}",
"Inputs": {
"file_path": "File Path"
}
}
-
Command can be global or prefixed with unit:
or bin:
bin:
equals ./data/units/bin
unit:
equals ./data/units/[unit-id]
-
The setting values will passed to the unit command as flags.
-
Unit directory can contain custom scripts.
-
Each output should be printed in a separate line staring with output's key:
output1:sometext
output2:/path/to/file
output3:{"key":"value"}
TODO
- Authentication
- Concurrent Builds
- Using Database
- Upload unit
Custom Build
You can customize the build setting from Makefile under release
command, and rebuild using:
$ make release
the new build will be under bin
directory, or you can build new docker image using:
$ make docker
Contributions, questions, and comments are welcomed and encouraged.
The Node Editor
I'm using my library Linker.
Dependencies
mux /
websocket /
cron /
cli /
ftp /
go.uuid /
testify
License
This code is distributed under the MIT license found in the LICENSE file.