diff options
author | James Lopez <james@gitlab.com> | 2016-02-24 16:56:42 +0000 |
---|---|---|
committer | James Lopez <james@gitlab.com> | 2016-02-24 16:56:42 +0000 |
commit | 4a9affa7330f2099f6385d3d74150f93cfd008f1 (patch) | |
tree | 0e6bafb53f4827da7cf80851549628a6858ae783 | |
parent | fc31840d4ed25b9b219c8c0ab2fb028ee51a67da (diff) | |
parent | 86b97ce1961c7d63749bd20de3f34dd10c24b865 (diff) | |
download | gitlab-ce-4a9affa7330f2099f6385d3d74150f93cfd008f1.tar.gz |
Merge branch 'feature/slack-notifications-on-ci' into 'master'
update ci configuration to send slack notifications on failure
Updates CI config file and adds a task to send notifications when a build fails on master or on any tag.
Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/12805
See merge request !2681
-rw-r--r-- | .gitlab-ci.yml | 41 | ||||
-rwxr-xr-x | scripts/notify_slack.sh | 13 |
2 files changed, 54 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8a729f957a2..498c7447ede 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,7 +24,12 @@ before_script: - bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}" - RAILS_ENV=test bundle exec rake db:drop db:create db:schema:load db:migrate +stages: +- test +- notifications + spec:feature: + stage: test script: - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:feature @@ -33,6 +38,7 @@ spec:feature: - mysql spec:api: + stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:api tags: @@ -40,6 +46,7 @@ spec:api: - mysql spec:models: + stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:models tags: @@ -47,6 +54,7 @@ spec:models: - mysql spec:lib: + stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:lib tags: @@ -54,6 +62,7 @@ spec:lib: - mysql spec:services: + stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:services tags: @@ -61,6 +70,7 @@ spec:services: - mysql spec:benchmark: + stage: test script: - RAILS_ENV=test bundle exec rake spec:benchmark tags: @@ -69,6 +79,7 @@ spec:benchmark: allow_failure: true spec:other: + stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:other tags: @@ -76,6 +87,7 @@ spec:other: - mysql spinach:project:half: + stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:half tags: @@ -83,6 +95,7 @@ spinach:project:half: - mysql spinach:project:rest: + stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:rest tags: @@ -90,6 +103,7 @@ spinach:project:rest: - mysql spinach:other: + stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:other tags: @@ -97,6 +111,7 @@ spinach:other: - mysql teaspoon: + stage: test script: - RAILS_ENV=test bundle exec teaspoon tags: @@ -104,6 +119,7 @@ teaspoon: - mysql rubocop: + stage: test script: - bundle exec rubocop tags: @@ -111,6 +127,7 @@ rubocop: - mysql brakeman: + stage: test script: - bundle exec rake brakeman tags: @@ -118,6 +135,7 @@ brakeman: - mysql flog: + stage: test script: - bundle exec rake flog tags: @@ -125,6 +143,7 @@ flog: - mysql flay: + stage: test script: - bundle exec rake flay tags: @@ -132,6 +151,7 @@ flay: - mysql bundler:audit: + stage: test script: - "bundle exec bundle-audit update" - "bundle exec bundle-audit check" @@ -143,6 +163,7 @@ bundler:audit: # Ruby 2.2 jobs spec:feature:ruby22: + stage: test image: ruby:2.2 only: - master @@ -158,6 +179,7 @@ spec:feature:ruby22: - mysql spec:api:ruby22: + stage: test image: ruby:2.2 only: - master @@ -172,6 +194,7 @@ spec:api:ruby22: - mysql spec:models:ruby22: + stage: test image: ruby:2.2 only: - master @@ -186,6 +209,7 @@ spec:models:ruby22: - mysql spec:lib:ruby22: + stage: test image: ruby:2.2 only: - master @@ -200,6 +224,7 @@ spec:lib:ruby22: - mysql spec:services:ruby22: + stage: test image: ruby:2.2 only: - master @@ -214,6 +239,7 @@ spec:services:ruby22: - mysql spec:benchmark:ruby22: + stage: test image: ruby:2.2 only: - master @@ -229,6 +255,7 @@ spec:benchmark:ruby22: allow_failure: true spec:other:ruby22: + stage: test image: ruby:2.2 only: - master @@ -243,6 +270,7 @@ spec:other:ruby22: - mysql spinach:project:half:ruby22: + stage: test image: ruby:2.2 only: - master @@ -257,6 +285,7 @@ spinach:project:half:ruby22: - mysql spinach:project:rest:ruby22: + stage: test image: ruby:2.2 only: - master @@ -271,6 +300,7 @@ spinach:project:rest:ruby22: - mysql spinach:other:ruby22: + stage: test image: ruby:2.2 only: - master @@ -284,3 +314,14 @@ spinach:other:ruby22: - ruby - mysql + +notify:slack: + stage: notifications + script: + - ./scripts/notify_slack.sh "#builds" "Build failed for master/tags!" + when: on_failure + only: + - master@gitlab-org/gitlab-ce + - tags@gitlab-org/gitlab-ce + - master@gitlab-org/gitlab-ee + - tags@gitlab-org/gitlab-ee
\ No newline at end of file diff --git a/scripts/notify_slack.sh b/scripts/notify_slack.sh new file mode 100755 index 00000000000..0a4239e132c --- /dev/null +++ b/scripts/notify_slack.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# Sends Slack notification ERROR_MSG to CHANNEL +# An env. variable CI_SLACK_WEBHOOK_URL needs to be set. + +CHANNEL=$1 +ERROR_MSG=$2 + +if [ -z "$CHANNEL" ] || [ -z "$ERROR_MSG" ] || [ -z "$CI_SLACK_WEBHOOK_URL" ]; then + echo "Missing argument(s) - Use: $0 channel message" + echo "and set CI_SLACK_WEBHOOK_URL environment variable." +else + curl -X POST --data-urlencode 'payload={"channel": "'"$CHANNEL"'", "username": "gitlab-ci", "text": "'"$ERROR_MSG"'", "icon_emoji": ":gitlab:"}' "$CI_SLACK_WEBHOOK_URL" +fi
\ No newline at end of file |