pipeline

by m-reda

m-reda / pipeline

Node-based automation server

210 Stars 15 Forks Last release: Not found MIT License 1 Commits 1 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

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
    json
    {
    "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": ""}
    }
    }
    
  3. The inputs keys must match the names in the command:

    json
    {
    "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.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.