diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 22cbdcf80..0cca17b00 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,8 @@ # Contributing to Compose -Compose is a part of the Docker project, and follows the same rules and principles. Take a read of [Docker's contributing guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md) to get an overview. +Compose is a part of the Docker project, and follows the same rules and +principles. Take a read of [Docker's contributing guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md) +to get an overview. ## TL;DR @@ -17,28 +19,40 @@ If you're looking contribute to Compose but you're new to the project or maybe even to Python, here are the steps that should get you started. -1. Fork [https://github.com/docker/compose](https://github.com/docker/compose) to your username. -1. Clone your forked repository locally `git clone git@github.com:yourusername/compose.git`. -1. Enter the local directory `cd compose`. -1. Set up a development environment by running `python setup.py develop`. This will install the dependencies and set up a symlink from your `docker-compose` executable to the checkout of the repository. When you now run `docker-compose` from anywhere on your machine, it will run your development version of Compose. +1. Fork [https://github.com/docker/compose](https://github.com/docker/compose) + to your username. +2. Clone your forked repository locally `git clone git@github.com:yourusername/compose.git`. +3. Enter the local directory `cd compose`. +4. Set up a development environment by running `python setup.py develop`. This + will install the dependencies and set up a symlink from your `docker-compose` + executable to the checkout of the repository. When you now run + `docker-compose` from anywhere on your machine, it will run your development + version of Compose. ## Running the test suite -Use the test script to run linting checks and then the full test suite: +Use the test script to run DCO check, linting checks and then the full test +suite against different Python interpreters: $ script/test -Tests are run against a Docker daemon inside a container, so that we can test against multiple Docker versions. By default they'll run against only the latest Docker version - set the `DOCKER_VERSIONS` environment variable to "all" to run against all supported versions: +Tests are run against a Docker daemon inside a container, so that we can test +against multiple Docker versions. By default they'll run against only the latest +Docker version - set the `DOCKER_VERSIONS` environment variable to "all" to run +against all supported versions: $ DOCKER_VERSIONS=all script/test -Arguments to `script/test` are passed through to the `nosetests` executable, so you can specify a test directory, file, module, class or method: +Arguments to `script/test` are passed through to the `nosetests` executable, so +you can specify a test directory, file, module, class or method: $ script/test tests/unit $ script/test tests/unit/cli_test.py $ script/test tests.integration.service_test $ script/test tests.integration.service_test:ServiceTest.test_containers +Before pushing a commit you can check the DCO by invoking `script/validate-dco`. + ## Building binaries Linux: @@ -49,27 +63,23 @@ OS X: $ script/build-osx -Note that this only works on Mountain Lion, not Mavericks, due to a [bug in PyInstaller](http://www.pyinstaller.org/ticket/807). +Note that this only works on Mountain Lion, not Mavericks, due to a +[bug in PyInstaller](http://www.pyinstaller.org/ticket/807). ## Release process 1. Open pull request that: - - Updates the version in `compose/__init__.py` - Updates the binary URL in `docs/install.md` - Updates the script URL in `docs/completion.md` - Adds release notes to `CHANGES.md` - 2. Create unpublished GitHub release with release notes - -3. Build Linux version on any Docker host with `script/build-linux` and attach to release - -4. Build OS X version on Mountain Lion with `script/build-osx` and attach to release as `docker-compose-Darwin-x86_64` and `docker-compose-Linux-x86_64`. - +3. Build Linux version on any Docker host with `script/build-linux` and attach + to release +4. Build OS X version on Mountain Lion with `script/build-osx` and attach to + release as `docker-compose-Darwin-x86_64` and `docker-compose-Linux-x86_64`. 5. Publish GitHub release, creating tag - 6. Update website with `script/deploy-docs` - 7. Upload PyPi package $ git checkout $VERSION