/cheapci

Simple CI framework in bash. Checks whether there have been any updates, runs tests and mails you on completion.

Primary LanguageShellMIT LicenseMIT

cheapci

Simple CI framework in bash. Checks whether there have been any updates, runs tests and mails you on completion.

Usage:

$ ./cheapci 
./cheapci [-q <pre-script>] [-w <post-script>] [-m <email>] [-a <mail command>]
   [-t <mail command attach flag>] [-s <mail command subject flag]
   [-e <recipients flag>] [-n name] [-d <dir>] [-c <command>] [-f] [-v] [-h]
   -r <repo> -l <local_checkout>

-q - script to run just before actually performing test (default /bin/true)
-w - script to run just after actually performing test (default /bin/true)
-m - email to send using "mail" command (default logs to stdout)
-a - mail command to use (default=mail)
-n - name for ci (unique, must be a valid directory name), eg myproj (default=ci)
-d - directory within repository to navigate to (default=.)
-c - test command to run from -d directory (default=./test.sh)
-t - attach argument flag for mail command (default=-A, empty string means no-attach)
-s - subject flag for mail command (default=-s)
-e - recipients flag (default=-t, empty string means no flag needed)
-f - force a run even if repo has no updates (default off)
-v - verbose logging (default off)
-h - show help
-r - git repository, eg https://github.com/myname/myproj (required)
-l - local checkout of code (that gets updated to determine whether a run is needed) (required)

EXAMPLES

- "Clone -r https://github.com/ianmiell/shutit.git if a git pull on /space/git/shutit 
indicates there's been an update. Then navigate to test, run ./test.sh and mail 
ian.miell@gmail.com if there are any issues"

./cheapci \
      -r https://github.com/ianmiell/shutit.git \
      -l /space/git/shutit \
      -d test \
      -c ./test.sh \
      -m ian.miell@gmail.com


- "Run the above continuously in a crontab."

  Crontab line:

* * * * * cd /path/to/cheapci && ./cheapci -r https://github.com/ianmiell/shutit.git -l /space/git/shutit -d test -c ./test.sh -m ian.miell@gmail.com

- "Test cheapci with cheapci"

./cheapci \
     -q "ls -l" \
     -w "ls -l" \
     -m ian.miell@gmail.com \
     -n cheapci \
     -d . \
     -c /bin/true \
     -v \
     -r https://github.com/ianmiell/cheapci \
     -l /space/git/cheapci \
     -f