Go JavaScript CSS HTML
Switch branches/tags
Nothing to show
Latest commit 0922975 Apr 16, 2017 @m-reda m-reda Initial Commit
Permalink
Failed to load latest commit information.
builtin-units Initial Commit Apr 16, 2017
data Initial Commit Apr 16, 2017
.gitattributes Initial Commit Apr 16, 2017
.gitignore Initial Commit Apr 16, 2017
.travis.yml Initial Commit Apr 16, 2017
Dockerfile Initial Commit Apr 16, 2017
LICENSE Initial Commit Apr 16, 2017
Makefile Initial Commit Apr 16, 2017
README.md Initial Commit Apr 16, 2017
api.go Initial Commit Apr 16, 2017
api_test.go Initial Commit Apr 16, 2017
build.go Initial Commit Apr 16, 2017
build_test.go Initial Commit Apr 16, 2017
logo.jpg Initial Commit Apr 16, 2017
main.go Initial Commit Apr 16, 2017
main_test.go Initial Commit Apr 16, 2017
pipeline.go Initial Commit Apr 16, 2017
pipeline_test.go Initial Commit Apr 16, 2017
scheduler.go Initial Commit Apr 16, 2017
scheduler_test.go Initial Commit Apr 16, 2017
task.go Initial Commit Apr 16, 2017
task_test.go Initial Commit Apr 16, 2017
unit.go Initial Commit Apr 16, 2017
unit_test.go Initial Commit Apr 16, 2017

README.md

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.