/pipeline

Node-based automation server

Primary LanguageGoMIT LicenseMIT

Build Status

Build Status Coverage Status Codacy Badge Go Report Card Docker Build Statu GitHub license

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

Pipeline 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

  1. Create new directory under data/units ./data/units/[unit-id]

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

Community

Contributions, questions, and comments are welcomed and encouraged.

The Node Editor

I'm using my library Linker.

Linker

Dependencies

mux / websocket / cron / cli / ftp / go.uuid / testify

License

This code is distributed under the MIT license found in the LICENSE file.