Danger
Danger runs during our CI process, and lets us ensure our commits, pull requests, and more meet a minimum level of quality.
Setup
Add Danger to your Ministry of Justice Ruby project
- Add the following to your Gemfile;
group :development do
gem 'ministryofjustice-danger'
end
-
bundle install
-
Create a Dangerfile that imports the central MoJ Dangerfile
echo "danger.import_dangerfile(github: 'ministryofjustice/danger')" > Dangerfile
Commit and push your changes.
Run Danger via Travis CI
- Add Danger to your
.travis.yml
(use whatever ruby version (>= 2.3.0) is appropriate)
rvm: 2.3.3
script:
- bundle exec danger
… or add it to your build matrix:
matrix:
include:
- rvm: 2.3.3
script:
- bundle exec danger
Commit and push the changes.
- Add the MoJ Dangerbot API token to Travis;
This assumes your project has already been added to Travis.
https://travis-ci.org/ministryofjustice/[your project]/settings
Add the environment variable
DANGER_GITHUB_API_TOKEN
, with the value
from the password field of the MOJ Danger bot Github API token
entry
in Rattic.
Danger will now run against every PR which is raised, and will create comments about any errors that it finds (the comments will be removed once the issues are fixed).
Run Danger via CircleCI
Just add bundle exec danger
to your circle.yml
, either as an extra
step in your test
overrides, or in a new pre
section. You'll need
to add the DANGER_GITHUB_API_TOKEN
to the environment variables,
like with Travis, and
Danger recommend
setting “only build pull requests” in the advanced settings.
If you're not running Ruby
If Danger is your only Ruby dependency, you probably don't want to have a Gemfile cluttering up your repo. In that case, you can (probably) use this command in the Travis config above:
rbenv global 2.3.1 && gem install ministryofjustice-danger --version '~> 0.1' && danger
Updating the gem
e.g. to add new runtime dependencies
-
Make your changes to
ministryofjustice-danger.gemspec
-
Update the version in
ministryofjustice-danger.gemspec
-
Build the gem
gem build ministryofjustice-danger.gemspec
- Publish to Rubygems
gem push ministryofjustice-danger-[VERSION].gem
Fixing your commits
To keep Danger happy, you will need to amend commits that you have already pushed.
This Github article
describes a process for doing this. But, please use --force-with-lease
instead of --force
when pushing your amendments.