diff --git a/docs/140-ci.md b/docs/140-ci.md index 6399ff199..676bd2267 100644 --- a/docs/140-ci.md +++ b/docs/140-ci.md @@ -2,15 +2,47 @@ title: Continuous Integration --- +GoReleaser was built from the very first commit with the idea of +running it as part of the CI pipeline in mind. + +Let's see how we can get it working on popular CI softwares. + +## Travis + You may want to setup your project to auto-deploy your new tags on [Travis](https://travis-ci.org), for example: + ```yaml # .travis.yml -after_success: - - test -n "$TRAVIS_TAG" && curl -sL https://git.io/goreleaser | bash +language: go + +# needed for the nfpm pipe +addons: + apt: + packages: + - rpm + +# needed for the docker pipe +services: +- docker + +# calls goreleaser +deploy: +- provider: script + skip_cleanup: true + script: curl -sL http://git.io/goreleaser | bash + on: + tags: true + condition: $TRAVIS_OS_NAME = linux ``` +Note the last line (`condition: $TRAVIS_OS_NAME = linux`): it is important +if you run a build matrix with multiple Go versions and/or multiple OSes. If +that's the case you will want to make sure GoReleaser is run just once. + +# Circle + Here is how to do it with [CircleCI](https://circleci.com): ```yml @@ -22,13 +54,3 @@ deployment: commands: - curl -sL https://git.io/goreleaser | bash ``` - -If you test multiple versions or multiple OSes, you probably want to -make sure GoReleaser is just run once. -You could change the above example for Travis CI like this: - -```yaml -# .travis.yml -after_success: - - test "$TRAVIS_OS_NAME" = "linux" -a -n "$TRAVIS_TAG" && curl -sL https://git.io/goreleaser | bash -```