bugsnag-capistrano 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -13
- data/CHANGELOG.md +7 -0
- data/README.md +9 -1
- data/VERSION +1 -1
- data/lib/bugsnag-capistrano/deploy.rb +1 -0
- data/lib/bugsnag-capistrano/tasks/bugsnag-capistrano.rake +54 -2
- data/spec/rake_spec.rb +64 -0
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZGFkNTMxYTEwYjBiYmUxNDhkMTc2Y2YyNGIwYWI0NWFmNzhmYWI2Zg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 79c3760c59cce6a32240955ba0ffb0604c789135
|
4
|
+
data.tar.gz: 69b90256827c6e24a07f7a1e9491337a0c5e9cee
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
ZWIzNWU1YjY0ZGM0MTgwMTgwMTA2ZTBhMWNmZDc2YmU2ZmRjNzBlZDk5N2Fh
|
11
|
-
M2RlODI4YzY2YmY5YWIyOTg1NjE3MTZiZjU4OTlmNzVkNGQ4MmY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
Y2Q1NmYxZTNlM2Q3MzFiZWQwYmFmNWNjMzE3YTM0NjczOTk0MDFiOGQ0ZTdm
|
14
|
-
NTZiMjI2NjkwYzJhOTdiMTAyZTE1MTkwMWIxMWQxYzRjMDVhYmU2MzAwOWQ4
|
15
|
-
NTI5YzVlOTc2ZmVlOGRhM2Y2NmI2YTRkYzhmZGQwM2QwNzFiZGE=
|
6
|
+
metadata.gz: f7c991ec8c557f2d2e6ce823b2b9b24ec21daf4bf532a568b389f4824f81f64144402c09e49d854807314409d9777430ca5540c86aab5fcdeeb44bf280b568c0
|
7
|
+
data.tar.gz: 35c9f306c9abae72d6a3eb2c89102163b8f801c98e3f7d040a92dce882bab119cf1efa826891600d816c793bfbb440c049a2c5031464c321cfdb8538b0d93045
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -6,11 +6,19 @@ application with [Capistrano](https://github.com/capistrano/capistrano),
|
|
6
6
|
allowing to correlate deploys with new errors and increased error rates in
|
7
7
|
Bugsnag.
|
8
8
|
|
9
|
+
It also includes a Rake task for manually sending deploy notifications or
|
10
|
+
for projects not using Capistrano.
|
11
|
+
|
9
12
|
[Bugsnag](http://bugsnag.com) captures errors in real-time from your web,
|
10
13
|
mobile and desktop applications, helping you to understand and resolve them
|
11
14
|
as fast as possible. [Create a free account](http://bugsnag.com) to start
|
12
15
|
capturing exceptions from your applications.
|
13
16
|
|
17
|
+
## Getting started
|
18
|
+
|
19
|
+
* [Integrating with Capistrano](https://docs.bugsnag.com/api/deploy-tracking/capistrano/)
|
20
|
+
* [Integrating with Rake](https://docs.bugsnag.com/api/deploy-tracking/rake/)
|
21
|
+
|
14
22
|
## Contributing
|
15
23
|
|
16
24
|
All contributors are welcome! For information on how to build, test,
|
@@ -20,6 +28,6 @@ and release `bugsnag-capistrano`, see our
|
|
20
28
|
|
21
29
|
## License
|
22
30
|
|
23
|
-
The Bugsnag
|
31
|
+
The Bugsnag Capistrano library is free software released under the MIT License.
|
24
32
|
See [LICENSE.txt](https://github.com/bugsnag/bugsnag-capistrano/blob/master/LICENSE.txt)
|
25
33
|
for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0
|
1
|
+
1.1.0
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require "bugsnag"
|
1
|
+
require "bugsnag-capistrano/deploy"
|
2
2
|
|
3
3
|
namespace :bugsnag do
|
4
4
|
|
@@ -10,6 +10,7 @@ namespace :bugsnag do
|
|
10
10
|
revision = ENV["BUGSNAG_REVISION"]
|
11
11
|
repository = ENV["BUGSNAG_REPOSITORY"]
|
12
12
|
branch = ENV["BUGSNAG_BRANCH"]
|
13
|
+
endpoint = ENV["BUGSNAG_ENDPOINT"]
|
13
14
|
|
14
15
|
Rake::Task["load"].invoke unless api_key
|
15
16
|
|
@@ -19,10 +20,61 @@ namespace :bugsnag do
|
|
19
20
|
:app_version => app_version,
|
20
21
|
:revision => revision,
|
21
22
|
:repository => repository,
|
22
|
-
:branch => branch
|
23
|
+
:branch => branch,
|
24
|
+
:endpoint => endpoint,
|
23
25
|
})
|
24
26
|
end
|
25
27
|
|
28
|
+
namespace :heroku do
|
29
|
+
desc "Add a heroku deploy hook to notify Bugsnag of deploys"
|
30
|
+
task :add_deploy_hook => :load do
|
31
|
+
# Wrapper to run command safely even in bundler
|
32
|
+
run_command = lambda { |command|
|
33
|
+
defined?(Bundler.with_clean_env) ? Bundler.with_clean_env { `#{command}` } : `#{command}`
|
34
|
+
}
|
35
|
+
|
36
|
+
# Fetch heroku config settings
|
37
|
+
config_command = "heroku config --shell"
|
38
|
+
config_command += " --app #{ENV["HEROKU_APP"]}" if ENV["HEROKU_APP"]
|
39
|
+
heroku_env = run_command.call(config_command).split(/[\n\r]/).each_with_object({}) do |c, obj|
|
40
|
+
k,v = c.split("=")
|
41
|
+
obj[k] = (v.nil? || v.strip.empty?) ? nil : v
|
42
|
+
end
|
43
|
+
|
44
|
+
# Check for Bugsnag API key (required) using Bugsnag configuration only if available
|
45
|
+
begin
|
46
|
+
require 'bugsnag'
|
47
|
+
api_key = heroku_env["BUGSNAG_API_KEY"] || Bugsnag.configuration.api_key || ENV["BUGSNAG_API_KEY"]
|
48
|
+
rescue LoadError
|
49
|
+
api_key = heroku_env["BUGSNAG_API_KEY"] || ENV["BUGSNAG_API_KEY"]
|
50
|
+
end
|
51
|
+
|
52
|
+
unless api_key
|
53
|
+
puts "Error: No API key found, have you run 'heroku config:set BUGSNAG_API_KEY=your-api-key'?"
|
54
|
+
next
|
55
|
+
end
|
56
|
+
|
57
|
+
# Build the request, making use of deploy hook variables
|
58
|
+
# (https://devcenter.heroku.com/articles/deploy-hooks#customizing-messages)
|
59
|
+
params = {
|
60
|
+
:apiKey => api_key,
|
61
|
+
:branch => "master",
|
62
|
+
:revision => "{{head_long}}",
|
63
|
+
:releaseStage => heroku_env["RAILS_ENV"] || ENV["RAILS_ENV"] || "production"
|
64
|
+
}
|
65
|
+
repo = `git config --get remote.origin.url`.strip
|
66
|
+
params[:repository] = repo unless repo.empty?
|
67
|
+
|
68
|
+
# Add the hook
|
69
|
+
url = "https://notify.bugsnag.com/deploy?" + params.map {|k,v| "#{k}=#{v}"}.join("&")
|
70
|
+
command = "heroku addons:add deployhooks:http --url=\"#{url}\""
|
71
|
+
command += " --app #{ENV["HEROKU_APP"]}" if ENV["HEROKU_APP"]
|
72
|
+
|
73
|
+
puts "$ #{command}"
|
74
|
+
run_command.call(command)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
26
78
|
end
|
27
79
|
|
28
80
|
task :load do
|
data/spec/rake_spec.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'webmock/rspec'
|
2
|
+
require 'rspec/expectations'
|
3
|
+
require 'rspec/mocks'
|
4
|
+
|
5
|
+
require 'webrick'
|
6
|
+
|
7
|
+
describe "bugsnag rake", :always do
|
8
|
+
|
9
|
+
server = nil
|
10
|
+
queue = Queue.new
|
11
|
+
fixture_path = '../examples/rake'
|
12
|
+
exec_string = 'bundle exec rake bugsnag:deploy'
|
13
|
+
example_path = File.join(File.dirname(__FILE__), fixture_path)
|
14
|
+
|
15
|
+
before do
|
16
|
+
server = WEBrick::HTTPServer.new :Port => 0, :Logger => WEBrick::Log.new(STDOUT), :AccessLog => []
|
17
|
+
server.mount_proc '/deploy' do |req, res|
|
18
|
+
queue.push req.body
|
19
|
+
res.status = 200
|
20
|
+
res.body = "OK\n"
|
21
|
+
end
|
22
|
+
Thread.new{ server.start }
|
23
|
+
end
|
24
|
+
|
25
|
+
after do
|
26
|
+
server.stop
|
27
|
+
queue.clear
|
28
|
+
end
|
29
|
+
|
30
|
+
let(:request) { JSON.parse(queue.pop) }
|
31
|
+
|
32
|
+
it "sends a deploy notification to the set endpoint" do
|
33
|
+
ENV['BUGSNAG_ENDPOINT'] = "http://localhost:" + server.config[:Port].to_s + "/deploy"
|
34
|
+
ENV['BUGSNAG_API_KEY'] = "YOUR_API_KEY"
|
35
|
+
|
36
|
+
Dir.chdir(example_path) do
|
37
|
+
system(exec_string)
|
38
|
+
end
|
39
|
+
|
40
|
+
payload = request()
|
41
|
+
expect(payload["apiKey"]).to eq('YOUR_API_KEY')
|
42
|
+
end
|
43
|
+
|
44
|
+
it "allows modifications of deployment characteristics" do
|
45
|
+
ENV['BUGSNAG_ENDPOINT'] = "http://localhost:" + server.config[:Port].to_s + "/deploy"
|
46
|
+
ENV['BUGSNAG_API_KEY'] = "this is a test key"
|
47
|
+
ENV['BUGSNAG_RELEASE_STAGE'] = "test"
|
48
|
+
ENV['BUGSNAG_REVISION'] = "test"
|
49
|
+
ENV['BUGSNAG_APP_VERSION'] = "1"
|
50
|
+
ENV['BUGSNAG_REPOSITORY'] = "test@repo.com:test/test_repo.git"
|
51
|
+
|
52
|
+
Dir.chdir(example_path) do
|
53
|
+
system(exec_string)
|
54
|
+
end
|
55
|
+
|
56
|
+
payload = request()
|
57
|
+
expect(payload["apiKey"]).to eq('this is a test key')
|
58
|
+
expect(payload["releaseStage"]).to eq('test')
|
59
|
+
expect(payload["repository"]).to eq("test@repo.com:test/test_repo.git")
|
60
|
+
expect(payload["appVersion"]).to eq("1")
|
61
|
+
expect(payload["revision"]).to eq("test")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bugsnag-capistrano
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keegan Lowenstein
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2017-11-
|
14
|
+
date: 2017-11-23 00:00:00.000000000 Z
|
15
15
|
dependencies: []
|
16
16
|
description: Correlate Capistrano deploys with new errors and increased error rates
|
17
17
|
in Bugsnag
|
@@ -23,8 +23,8 @@ extra_rdoc_files:
|
|
23
23
|
- README.md
|
24
24
|
- CHANGELOG.md
|
25
25
|
files:
|
26
|
-
- .gitignore
|
27
|
-
- .travis.yml
|
26
|
+
- ".gitignore"
|
27
|
+
- ".travis.yml"
|
28
28
|
- CHANGELOG.md
|
29
29
|
- CONTRIBUTING.md
|
30
30
|
- Gemfile
|
@@ -42,6 +42,7 @@ files:
|
|
42
42
|
- lib/bugsnag-capistrano/tasks/bugsnag.cap
|
43
43
|
- spec/capistrano_spec.rb
|
44
44
|
- spec/deploy_spec.rb
|
45
|
+
- spec/rake_spec.rb
|
45
46
|
homepage: http://github.com/bugsnag/bugsnag-capistrano
|
46
47
|
licenses:
|
47
48
|
- MIT
|
@@ -52,17 +53,17 @@ require_paths:
|
|
52
53
|
- lib
|
53
54
|
required_ruby_version: !ruby/object:Gem::Requirement
|
54
55
|
requirements:
|
55
|
-
- -
|
56
|
+
- - ">="
|
56
57
|
- !ruby/object:Gem::Version
|
57
58
|
version: 1.9.2
|
58
59
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
60
|
requirements:
|
60
|
-
- -
|
61
|
+
- - ">="
|
61
62
|
- !ruby/object:Gem::Version
|
62
63
|
version: '0'
|
63
64
|
requirements: []
|
64
65
|
rubyforge_project:
|
65
|
-
rubygems_version: 2.6.
|
66
|
+
rubygems_version: 2.6.13
|
66
67
|
signing_key:
|
67
68
|
specification_version: 4
|
68
69
|
summary: Notify Bugsnag when deploying with Capistrano
|