Test a test script for remote CI services locally
You usually employ remote CI services such as Travis CI
to automatically test your projects hosted in GitHub.
Your tests should be passed in such CI services always because you have made sure
your codebase passes the tests before pushing.
.travis.yml, the configuration file of Travis, sometimes has bugs and
your dependency list sometime loses any libraries.
If your codebase fails tests in remote CI services, you need to fix bugs and re-push, and your commit history gets messy. If you’re working with colleague’s repository, you should care about it more.
Loci uses Docker. If you don’t have it, install it first.
You can install Loci in several ways. If you’re familiar with Go, run
$ go get github.com/jkawamoto/loci
or if you’re a Homebrew user, run
$ brew tap jkawamoto/loci $ brew install loci
Otherwise, you can get a compiled binary from GitHub.
If your current directory has
.travis.yml, just run
If you want to test another file, give the path after
loci command like
First time, Loci build container images which install dependent packages listed in
.travis.yml, and it may take long time,
but those images can be reusable.
If you have cache servers of APT repository and PyPI repository,
give their addresses via
Those cache servers may reduce network traffic and building time.
Here is the whole command line options of Loci:
loci [global options] [script file] If script file isn't given, .travis.yml will be used. GLOBAL OPTIONS: --name NAME, -n NAME creating a container named NAME to run tests, and that container will not be deleted. --tag TAG, -t TAG creating an image named TAG. --base TAG, -b TAG use image TAG as the base image. (default: "ubuntu:latest") --verbose verbose mode, which prints Dockerfile and entrypoint.sh. --apt-proxy URL URL for a proxy server of apt repository. [$APT_PROXY] --pypi-proxy URL URL for a proxy server of pypi repository. [$PYPI_PROXY] --http-proxy URL URL for a http proxy server. [$HTTP_PROXY] --https-proxy URL URL for a https proxy server. [$HTTPS_PROXY] --no-proxy LIST Comma separated URL LIST for which proxies won't be used. [$NO_PROXY] --help, -h show help --version, -v print the version
Loci currently supports Python and Go projects. I’ll supports other languages and welcome any pull requests.