Skip to content
Wilson - routine tasks automation toolkit
Go
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows
cmd/wilson
example
internal
pkg
.gitignore
LICENSE.md
README.md
go.mod
go.sum
wilson.yaml

README.md

Wilson - routine tasks automation toolkit

Tests Requirements Status GitHub top language Go Report Card

GitHub tag (latest SemVer) GitHub go.mod Go version GitHub closed issues GitHub issues Licence

Wilson allows you to design you development workflow pipelines in nice and neat way in yaml files. Each pipeline composed from tasks or other pipelines and allows them to run in parallel or one-by-one. Tasks may be runned manually or triggered by filesystem watcher.

Automation is based on four concepts:

  1. Tasks
  2. Pipelines that describe set of stages (tasks or other pipelines) to run
  3. Watchers that listen for filesystem events and trigger tasks
  4. Execution contexts

asciicast

Getting started

Install

MacOS

brew install trntv/wilson/wilson

Linux

curl -L https://github.com/trntv/wilson/releases/latest/download/wilson-linux-amd64.tar.gz | tar xz

From sources

go get -u github.com/trntv/wilson

First run

wilson init
wilson run pipeline1

Examples

Tasks

Task config

wilson -c example/task.yaml run task echo-date-local
wilson -c example/task.yaml run task echo-date-docker

Pipelines

Pipelines config

wilson -c example/pipeline.yaml run test-pipeline
wilson -c example/pipeline.yaml run pipeline1

Contexts

Contexts config

Watchers

Watchers config

wilson -c watch.yaml --debug watch test-watcher test-watcher-2

Full config

Full config example

Contexts

Available context types:

  • local - shell
  • container - docker, docker-compose, kubectl
  • remote - ssh

Pipelines

This configuration:

pipelines:
    pipeline1:
        - task: start task
        - task: task A
          depends_on: "start task"
        - task: task B
          depends_on: "start task"
        - task: task C
          depends_on: "start task"
        - task: task D
          depends_on: "task C"
        - task: task E
          depends_on: ["task A", "task B", "task D"]
        - task: finish
          depends_on: ["task A", "task B", "finish"]
          
tasks:
    start task: ...
    task A: ...
    task B: ...
    task C: ...
    task D: ...
    task E: ...
    finish: ...
    

will create this pipeline:

               |‾‾‾ task A ‾‾‾‾‾‾‾‾‾‾‾‾‾‾|
start task --- |--- task B --------------|--- task E --- finish
               |___ task C ___ task D ___|

Watchers

WIF*

Autocomplete

Bash

Add to ~/.bashrc or ~/.profile

. <(wilson completion bash)

ZSH

Add to ~/.zshrc

. <(wilson completion zsh)

Why "Wilson"?

https://en.wikipedia.org/wiki/Cast_Away#Wilson_the_volleyball 🏐


*waiting for inspiration

You can’t perform that action at this time.