jenkins_tracker 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +19 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/MIT-LICENSE +22 -0
- data/README.md +48 -0
- data/Rakefile +1 -0
- data/bin/jenkins_tracker +9 -0
- data/jenkins_tracker.gemspec +25 -0
- data/lib/jenkins_tracker.rb +9 -0
- data/lib/jenkins_tracker/base.rb +22 -0
- data/lib/jenkins_tracker/cli.rb +31 -0
- data/lib/jenkins_tracker/tracker_client.rb +43 -0
- data/lib/jenkins_tracker/util.rb +32 -0
- data/lib/jenkins_tracker/version.rb +3 -0
- data/spec/fixtures/git_changelog.txt +20 -0
- data/spec/fixtures/job.json +105 -0
- data/spec/jenkins_tracker/base_spec.rb +20 -0
- data/spec/jenkins_tracker/tracker_client_spec.rb +13 -0
- data/spec/jenkins_tracker/util_spec.rb +35 -0
- data/spec/spec_helper.rb +19 -0
- data/spec/support/fixture_loader.rb +11 -0
- metadata +145 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/MIT-LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Prashant Nadarajan, Bitium, Inc.
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# JenkinsTracker
|
2
|
+
|
3
|
+
`jenkins_tracker` is a command line utility packaged as a [RubyGem](https://rubygems.org) that integrates [Jenkins](http://jenkins-ci.org/) build information with
|
4
|
+
the relevant [Pivotal Tracker](https://www.pivotaltracker.com) stories within a project.
|
5
|
+
|
6
|
+
It's ideally run as a Post Build Action in Jenkins.
|
7
|
+
|
8
|
+
This utility makes some very specific assumptions about your Jenkins environment:-
|
9
|
+
|
10
|
+
* Git as your SCM via the [Jenkins Git Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin).
|
11
|
+
|
12
|
+
* The Jenkins build changelog file is available at `$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_NUMBER/changelog.xml`.
|
13
|
+
|
14
|
+
* Ability to execute Ruby scripts.
|
15
|
+
|
16
|
+
|
17
|
+
The following are required for your Pivotal Tracker project:-
|
18
|
+
|
19
|
+
* [API access enabled](https://www.pivotaltracker.com/help/api) (enabled by default).
|
20
|
+
|
21
|
+
|
22
|
+
## Installation
|
23
|
+
|
24
|
+
Add this line to your application's Gemfile:
|
25
|
+
|
26
|
+
gem 'jenkins_tracker'
|
27
|
+
|
28
|
+
And then execute:
|
29
|
+
|
30
|
+
$ bundle
|
31
|
+
|
32
|
+
Or install it yourself as:
|
33
|
+
|
34
|
+
$ gem install jenkins_tracker
|
35
|
+
|
36
|
+
|
37
|
+
## Usage
|
38
|
+
|
39
|
+
TODO: Write usage instructions here
|
40
|
+
|
41
|
+
|
42
|
+
## Contributing
|
43
|
+
|
44
|
+
1. Fork it
|
45
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
46
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
47
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
48
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/jenkins_tracker
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'jenkins_tracker/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "jenkins_tracker"
|
8
|
+
gem.version = JenkinsTracker::VERSION
|
9
|
+
gem.authors = ["Prashant Nadarajan"]
|
10
|
+
gem.email = ["prashant.nadarajan@gmail.com"]
|
11
|
+
gem.description = %q{Integrate Jenkins build info with Pivotal Tracker project stories }
|
12
|
+
gem.summary = %q{Integrate Jenkins build info as notes to the relevant Pivotal Tracker stories based on post commit message syntax}
|
13
|
+
gem.homepage = "https://github.com/prashantrajan/jenkins_tracker"
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = %w(jenkins_tracker)
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
|
20
|
+
gem.add_runtime_dependency 'rest-client', '~> 1.6'
|
21
|
+
gem.add_runtime_dependency 'thor', '~> 0.15'
|
22
|
+
|
23
|
+
gem.add_development_dependency 'rake', '>= 0.8'
|
24
|
+
gem.add_development_dependency 'rspec', '~> 2.12'
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module JenkinsTracker
|
2
|
+
class Base
|
3
|
+
include Util
|
4
|
+
|
5
|
+
attr_reader :changelog, :tracker_client, :job_name, :build_url
|
6
|
+
|
7
|
+
def initialize(options = {})
|
8
|
+
@changelog = File.read(options[:changelog_file])
|
9
|
+
@tracker_client = TrackerClient.new(:token => options[:tracker_token])
|
10
|
+
@job_name = options[:job_name]
|
11
|
+
@build_url = options[:build_url]
|
12
|
+
end
|
13
|
+
|
14
|
+
def integrate_job_with_tracker(project_id)
|
15
|
+
parse_changelog(changelog).each do |change|
|
16
|
+
note = "*#{change.commit_message}* integrated in *#{job_name}* (#{build_url})"
|
17
|
+
tracker_client.add_note_to_story(project_id, change.story_id, note)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'thor'
|
2
|
+
|
3
|
+
module JenkinsTracker
|
4
|
+
class Cli < Thor
|
5
|
+
|
6
|
+
desc 'integrate', 'Integrate Jenkins build with Pivotal Tracker project stories'
|
7
|
+
method_option 'tracker-token', :required => true, :desc => 'Pivotal Tracker API Token'
|
8
|
+
method_option 'tracker-project-id', :required => true, :type => :numeric, :desc => 'Pivotal Tracker Project ID'
|
9
|
+
method_option 'job-name', :default => ENV['JOB_NAME'], :desc => 'Jenkins job name'
|
10
|
+
method_option 'build-url', :default => ENV['BUILD_URL'], :desc => 'Jenkins build URL'
|
11
|
+
method_option 'changelog-file', :desc => 'Absolute path to changelog file.', :default => "#{ENV['JENKINS_HOME']}/jobs/#{ENV['JOB_NAME']}/builds/#{ENV['BUILD_NUMBER']}/changelog.xml"
|
12
|
+
def integrate
|
13
|
+
job_name = options['job-name']
|
14
|
+
tracker_project_id = options['tracker-project-id']
|
15
|
+
|
16
|
+
begin
|
17
|
+
JenkinsTracker::Base.new(
|
18
|
+
:changelog_file => options['changelog-file'],
|
19
|
+
:tracker_token => options['tracker-token'],
|
20
|
+
:job_name => job_name,
|
21
|
+
:build_url => options['build-url']
|
22
|
+
).integrate_job_with_tracker(tracker_project_id)
|
23
|
+
|
24
|
+
say "Successfully integrated Jenkins Job (#{job_name}) with Pivotal Tracker Project (#{tracker_project_id})", :green
|
25
|
+
rescue
|
26
|
+
# do nothing
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module JenkinsTracker
|
2
|
+
class TrackerClient
|
3
|
+
|
4
|
+
attr_writer :use_ssl
|
5
|
+
attr_reader :token
|
6
|
+
|
7
|
+
def initialize(options = {})
|
8
|
+
@token = options[:token]
|
9
|
+
end
|
10
|
+
|
11
|
+
def connection(options = {})
|
12
|
+
@connection ||= RestClient::Resource.new(api_url, :headers => { 'X-TrackerToken' => token, 'Content-Type' => 'application/xml' })
|
13
|
+
end
|
14
|
+
|
15
|
+
def add_note_to_story(project_id, story_id, note)
|
16
|
+
connection["projects/#{project_id}/stories/#{story_id}/notes"].post("<note><text>#{note}</text></note>")
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def tracker_host
|
23
|
+
'www.pivotaltracker.com'
|
24
|
+
end
|
25
|
+
|
26
|
+
def api_path
|
27
|
+
'/services/v3'
|
28
|
+
end
|
29
|
+
|
30
|
+
def api_url
|
31
|
+
"#{protocol}://#{tracker_host}#{api_path}"
|
32
|
+
end
|
33
|
+
|
34
|
+
def use_ssl
|
35
|
+
@use_ssl || false
|
36
|
+
end
|
37
|
+
|
38
|
+
def protocol
|
39
|
+
use_ssl ? 'https' : 'http'
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module JenkinsTracker
|
2
|
+
module Util
|
3
|
+
|
4
|
+
def self.included(base)
|
5
|
+
base.extend ClassMethods
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
end
|
10
|
+
|
11
|
+
#def parse_json(str, options = {})
|
12
|
+
# JSON.parse(str, options)
|
13
|
+
#end
|
14
|
+
|
15
|
+
def parse_changelog(str)
|
16
|
+
results = []
|
17
|
+
|
18
|
+
str.scan(/(\[[#a-zA-Z0-9\s]+\])(.*)/) do |ids, msg|
|
19
|
+
parse_tracker_story_ids(ids).each do |id|
|
20
|
+
results << OpenStruct.new(:story_id => id, :commit_message => "#{ids}#{msg}".strip)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
results
|
25
|
+
end
|
26
|
+
|
27
|
+
def parse_tracker_story_ids(str)
|
28
|
+
str.strip.gsub(/[\[#\]]/, '').split(' ').map(&:to_i).reject { |i| i == 0 }
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Changes in branch origin/master, between c0d9a605c020d0ccaac2ef7f4a52607f0b1032ff and 05b96f9a60360525b5a17721e0ed107e53f42ede
|
2
|
+
commit 05b96f9a60360525b5a17721e0ed107e53f42ede
|
3
|
+
tree 90fae1497ff2e0eb19992993ac2a335561ef9e21
|
4
|
+
parent b1d0cda2f3766e5285cbe6f8c788d5d3c2d0aaf3
|
5
|
+
author Prashant Nadarajan <mrp@example.com> 1360758891 +0800
|
6
|
+
committer Prashant Nadarajan <mrp@example.com> 1360758902 +0800
|
7
|
+
|
8
|
+
[#123 #456] added more test
|
9
|
+
|
10
|
+
:100644 100644 7da3210b8da221718054af45ca5384a1b3c5a654 e57a7a9b044142080875d0b5b6548ea62f666143 M README.md
|
11
|
+
|
12
|
+
commit b1d0cda2f3766e5285cbe6f8c788d5d3c2d0aaf3
|
13
|
+
tree 5364d5d2ec4e082218ef7a1d779ac35a89647f3b
|
14
|
+
parent c0d9a605c020d0ccaac2ef7f4a52607f0b1032ff
|
15
|
+
author Prashant Nadarajan <mrp@example.com> 1360758738 +0800
|
16
|
+
committer Prashant Nadarajan <mrp@example.com> 1360758738 +0800
|
17
|
+
|
18
|
+
[Fixes #456 #789] added test 1 to readme
|
19
|
+
|
20
|
+
:100644 100644 3979ab174391acf45520c09801a8b6919fd9df95 7da3210b8da221718054af45ca5384a1b3c5a654 M README.md
|
@@ -0,0 +1,105 @@
|
|
1
|
+
{
|
2
|
+
"actions": [
|
3
|
+
{
|
4
|
+
"causes": [
|
5
|
+
{
|
6
|
+
"shortDescription": "Started by user Prashant Nadarajan",
|
7
|
+
"userId": "prashantrajan",
|
8
|
+
"userName": "Prashant Nadarajan"
|
9
|
+
}
|
10
|
+
]
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"buildsByBranchName": {
|
14
|
+
"origin/master": {
|
15
|
+
"buildNumber": 2,
|
16
|
+
"buildResult": null,
|
17
|
+
"revision": {
|
18
|
+
"SHA1": "05b96f9a60360525b5a17721e0ed107e53f42ede",
|
19
|
+
"branch": [
|
20
|
+
{
|
21
|
+
"SHA1": "05b96f9a60360525b5a17721e0ed107e53f42ede",
|
22
|
+
"name": "origin/master"
|
23
|
+
}
|
24
|
+
]
|
25
|
+
}
|
26
|
+
}
|
27
|
+
},
|
28
|
+
"lastBuiltRevision": {
|
29
|
+
"SHA1": "05b96f9a60360525b5a17721e0ed107e53f42ede",
|
30
|
+
"branch": [
|
31
|
+
{
|
32
|
+
"SHA1": "05b96f9a60360525b5a17721e0ed107e53f42ede",
|
33
|
+
"name": "origin/master"
|
34
|
+
}
|
35
|
+
]
|
36
|
+
},
|
37
|
+
"remoteUrls": ["ssh://git@github.com/prashantrajan/zz_test.git"],
|
38
|
+
"scmName": ""
|
39
|
+
},
|
40
|
+
{},
|
41
|
+
{}
|
42
|
+
],
|
43
|
+
"artifacts": [],
|
44
|
+
"building": false,
|
45
|
+
"description": null,
|
46
|
+
"duration": 1355,
|
47
|
+
"estimatedDuration": 1618,
|
48
|
+
"executor": null,
|
49
|
+
"fullDisplayName": "zz_test #2",
|
50
|
+
"id": "2013-02-13_04-37-49",
|
51
|
+
"keepLog": false, "number": 2,
|
52
|
+
"result": "SUCCESS",
|
53
|
+
"timestamp": 1360759069600,
|
54
|
+
"url": "http://jenkins.example.com/job/zz_test/2/",
|
55
|
+
"builtOn": "",
|
56
|
+
"changeSet": {
|
57
|
+
"items": [
|
58
|
+
{
|
59
|
+
"affectedPaths": ["README.md"],
|
60
|
+
"commitId": "b1d0cda2f3766e5285cbe6f8c788d5d3c2d0aaf3",
|
61
|
+
"timestamp": 1360758738000,
|
62
|
+
"author": {
|
63
|
+
"absoluteUrl": "http://jenkins.example.com/user/prashantrajan",
|
64
|
+
"fullName": "Prashant Nadarajan"
|
65
|
+
},
|
66
|
+
"comment": "[#44375023] added test 1 to readme\n",
|
67
|
+
"date": "2013-02-13 04:32:18 +0800",
|
68
|
+
"id": "b1d0cda2f3766e5285cbe6f8c788d5d3c2d0aaf3",
|
69
|
+
"msg": "[#44375023] added test 1 to readme",
|
70
|
+
"paths": [
|
71
|
+
{
|
72
|
+
"editType": "edit",
|
73
|
+
"file": "README.md"
|
74
|
+
}
|
75
|
+
]
|
76
|
+
},
|
77
|
+
{
|
78
|
+
"affectedPaths": ["README.md"],
|
79
|
+
"commitId": "05b96f9a60360525b5a17721e0ed107e53f42ede",
|
80
|
+
"timestamp": 1360758891000,
|
81
|
+
"author": {
|
82
|
+
"absoluteUrl": "http://jenkins.example.com/user/prashantrajan",
|
83
|
+
"fullName": "Prashant Nadarajan"
|
84
|
+
},
|
85
|
+
"comment": "[#44375023 #44375221] added more test\n",
|
86
|
+
"date": "2013-02-13 04:34:51 +0800",
|
87
|
+
"id": "05b96f9a60360525b5a17721e0ed107e53f42ede",
|
88
|
+
"msg": "[#44375023 #44375221] added more test",
|
89
|
+
"paths": [
|
90
|
+
{
|
91
|
+
"editType": "edit",
|
92
|
+
"file": "README.md"
|
93
|
+
}
|
94
|
+
]
|
95
|
+
}
|
96
|
+
],
|
97
|
+
"kind": null
|
98
|
+
},
|
99
|
+
"culprits": [
|
100
|
+
{
|
101
|
+
"absoluteUrl": "http://jenkins.example.com/user/prashantrajan",
|
102
|
+
"fullName": "Prashant Nadarajan"
|
103
|
+
}
|
104
|
+
]
|
105
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe JenkinsTracker::Base do
|
4
|
+
|
5
|
+
describe '#initialize' do
|
6
|
+
it 'does basic set up' do
|
7
|
+
obj = described_class.new(
|
8
|
+
:changelog_file => fixture_file_path('git_changelog.txt'),
|
9
|
+
:tracker_token => 'xxx',
|
10
|
+
:job_name => 'foo_job',
|
11
|
+
:build_url => 'http://jenkins.bitium/com/foo_job/3'
|
12
|
+
)
|
13
|
+
expect(obj.changelog).to eq( File.read(fixture_file_path('git_changelog.txt')) )
|
14
|
+
expect(obj.tracker_client.token).to eq('xxx')
|
15
|
+
expect(obj.job_name).to eq('foo_job')
|
16
|
+
expect(obj.build_url).to eq('http://jenkins.bitium/com/foo_job/3')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe JenkinsTracker::TrackerClient do
|
4
|
+
|
5
|
+
describe '#connection' do
|
6
|
+
it 'returns an instance of RestClient::Resource' do
|
7
|
+
tracker_client = described_class.new(:token => 'xxx')
|
8
|
+
expect(tracker_client.connection).to be_an_instance_of(RestClient::Resource)
|
9
|
+
expect(tracker_client.connection.to_s).to eq('http://www.pivotaltracker.com/services/v3')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
class UtilModuleTester
|
5
|
+
include JenkinsTracker::Util
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
describe JenkinsTracker::Util do
|
10
|
+
let!(:class_instance) { UtilModuleTester.new }
|
11
|
+
|
12
|
+
#describe '#parse_json' do
|
13
|
+
# let(:json_str) { load_fixture_as_str('job.json') }
|
14
|
+
#
|
15
|
+
# it 'returns a Ruby data structure representation of the JSON string' do
|
16
|
+
# results = class_instance.parse_json(json_str)
|
17
|
+
# expect(results['changeSet']['items'].size).to eq(2)
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
#end
|
21
|
+
|
22
|
+
describe '#parse_changelog' do
|
23
|
+
let(:git_changelog) { load_fixture_as_str('git_changelog.txt') }
|
24
|
+
|
25
|
+
it 'returns an array of struct objects' do
|
26
|
+
results = class_instance.parse_changelog(git_changelog)
|
27
|
+
expect(results.first.story_id).to eq(123)
|
28
|
+
expect(results.first.commit_message).to eq('[#123 #456] added more test')
|
29
|
+
|
30
|
+
expect(results.last.story_id).to eq(789)
|
31
|
+
expect(results.last.commit_message).to eq('[Fixes #456 #789] added test 1 to readme')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'jenkins_tracker'
|
2
|
+
|
3
|
+
PROJECT_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '../'))
|
4
|
+
Dir[ File.join(PROJECT_ROOT, 'spec', 'support/**/*.rb') ].each { |f| require f }
|
5
|
+
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
RSpec.configure do |config|
|
8
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
9
|
+
config.run_all_when_everything_filtered = true
|
10
|
+
config.filter_run :focus
|
11
|
+
|
12
|
+
# Run specs in random order to surface order dependencies. If you find an
|
13
|
+
# order dependency and want to debug it, you can fix the order by providing
|
14
|
+
# the seed, which is printed after each run.
|
15
|
+
# --seed 1234
|
16
|
+
config.order = 'random'
|
17
|
+
|
18
|
+
config.include FixtureLoader
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jenkins_tracker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Prashant Nadarajan
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-02-15 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rest-client
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.6'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.6'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: thor
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0.15'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0.15'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rake
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.8'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.8'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rspec
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '2.12'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '2.12'
|
78
|
+
description: ! 'Integrate Jenkins build info with Pivotal Tracker project stories '
|
79
|
+
email:
|
80
|
+
- prashant.nadarajan@gmail.com
|
81
|
+
executables:
|
82
|
+
- jenkins_tracker
|
83
|
+
extensions: []
|
84
|
+
extra_rdoc_files: []
|
85
|
+
files:
|
86
|
+
- .gitignore
|
87
|
+
- .rspec
|
88
|
+
- Gemfile
|
89
|
+
- MIT-LICENSE
|
90
|
+
- README.md
|
91
|
+
- Rakefile
|
92
|
+
- bin/jenkins_tracker
|
93
|
+
- jenkins_tracker.gemspec
|
94
|
+
- lib/jenkins_tracker.rb
|
95
|
+
- lib/jenkins_tracker/base.rb
|
96
|
+
- lib/jenkins_tracker/cli.rb
|
97
|
+
- lib/jenkins_tracker/tracker_client.rb
|
98
|
+
- lib/jenkins_tracker/util.rb
|
99
|
+
- lib/jenkins_tracker/version.rb
|
100
|
+
- spec/fixtures/git_changelog.txt
|
101
|
+
- spec/fixtures/job.json
|
102
|
+
- spec/jenkins_tracker/base_spec.rb
|
103
|
+
- spec/jenkins_tracker/tracker_client_spec.rb
|
104
|
+
- spec/jenkins_tracker/util_spec.rb
|
105
|
+
- spec/spec_helper.rb
|
106
|
+
- spec/support/fixture_loader.rb
|
107
|
+
homepage: https://github.com/prashantrajan/jenkins_tracker
|
108
|
+
licenses: []
|
109
|
+
post_install_message:
|
110
|
+
rdoc_options: []
|
111
|
+
require_paths:
|
112
|
+
- lib
|
113
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
115
|
+
requirements:
|
116
|
+
- - ! '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
segments:
|
120
|
+
- 0
|
121
|
+
hash: 1872917664060546366
|
122
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
|
+
none: false
|
124
|
+
requirements:
|
125
|
+
- - ! '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
segments:
|
129
|
+
- 0
|
130
|
+
hash: 1872917664060546366
|
131
|
+
requirements: []
|
132
|
+
rubyforge_project:
|
133
|
+
rubygems_version: 1.8.24
|
134
|
+
signing_key:
|
135
|
+
specification_version: 3
|
136
|
+
summary: Integrate Jenkins build info as notes to the relevant Pivotal Tracker stories
|
137
|
+
based on post commit message syntax
|
138
|
+
test_files:
|
139
|
+
- spec/fixtures/git_changelog.txt
|
140
|
+
- spec/fixtures/job.json
|
141
|
+
- spec/jenkins_tracker/base_spec.rb
|
142
|
+
- spec/jenkins_tracker/tracker_client_spec.rb
|
143
|
+
- spec/jenkins_tracker/util_spec.rb
|
144
|
+
- spec/spec_helper.rb
|
145
|
+
- spec/support/fixture_loader.rb
|