Contributing

tl;dr

  1. Fork https://github.com/cloudtools/troposphere
  2. Make the code better
  3. Make the code pass tests
  4. Create a Pull Request

How to Get Help

We have a Google Group, cloudtools-dev, where you can ask questions and engage with the troposphere community. Issues and pull requests are always welcome!

How to Test Your Code

The latest test scripts can be found at Travis-CI. If you look at the details of a job, you can see what automated tests will be run against any commits to the project.

  1. Create a virtualenv (e.g. virtualenv ~/virtualenv/troposphere)
  2. Activate it: source ~/virtualenv/troposphere/bin/activate
  3. pip install –upgrade pip setuptools wheel
  4. pip install -r requirements-dev.txt
  5. Run tests
    1. pycodestyle .
    2. pyflakes .
    3. python setup.py test
  6. Alternatively, make can be used to run the tests, i.e. make test.

Tests are run against Python 2.7, 3.4, 3.5 and 3.6.

Contributing Example Code

New example code should go into troposphere/examples. The expected CloudFormation Template should be stored in troposphere/tests/examples_output/. When tests are run the output of the code in the examples directory will be compared with the expected results in the example_output directory.

Releasing

Steps to release a new version

  • Change version in troposphere/__init__.py
  • Update CHANGELOG.md with changes made since last release
  • Create a signed tag: git tag --sign -m "Release 1.1.1" 1.1.1
  • Create PyPI release: python setup.py sdist upload --sign
  • Push commits: git push
  • Push tag: git push --tags
  • Update github release page: https://github.com/cloudtools/troposphere/releases

Helper to create CHANGELOG entries

git log --reverse --pretty=format:"%s" | tail -100 | sed 's/^/* /'

Helper to list supported resources

grep -h 'resource_type = "AWS::' troposphere/* | sed 's/[ ]*resource_type = "'// | cut -f1-3 -d: | sort | uniq | sed 's/^/- /'