jenkins_tracker 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +4 -0
- data/README.md +18 -4
- data/Rakefile +7 -1
- data/lib/jenkins_tracker.rb +1 -0
- data/lib/jenkins_tracker/base.rb +2 -0
- data/lib/jenkins_tracker/cli.rb +2 -2
- data/lib/jenkins_tracker/exceptions.rb +10 -0
- data/lib/jenkins_tracker/version.rb +1 -1
- data/spec/jenkins_tracker/base_spec.rb +15 -0
- metadata +5 -3
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,17 +1,21 @@
|
|
1
1
|
# JenkinsTracker
|
2
2
|
|
3
|
+
[![Build Status](https://travis-ci.org/prashantrajan/jenkins_tracker.png?branch=master)](https://travis-ci.org/prashantrajan/jenkins_tracker)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/jenkins_tracker.png)](http://badge.fury.io/rb/jenkins_tracker)
|
5
|
+
|
3
6
|
`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
7
|
the relevant [Pivotal Tracker](https://www.pivotaltracker.com) stories within a project.
|
5
8
|
|
6
|
-
It's ideally run as a Post Build Action in Jenkins.
|
7
|
-
|
8
9
|
This utility makes some very specific assumptions about your Jenkins environment:-
|
9
10
|
|
10
11
|
* Git as your SCM via the [Jenkins Git Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin).
|
11
12
|
|
12
13
|
* The Jenkins build changelog file is available at `$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_NUMBER/changelog.xml`.
|
14
|
+
The changelog contents look like this [example](https://github.com/prashantrajan/jenkins_tracker/blob/master/spec/fixtures/git_changelog.txt).
|
13
15
|
|
14
|
-
* Ability to execute Ruby scripts.
|
16
|
+
* Ability to execute Ruby 1.9.x scripts.
|
17
|
+
|
18
|
+
* Environment variables exists for `$JENKINS_HOME`, `$JOB_NAME`, `$BUILD_NUMBER` & `$BUILD_URL`.
|
15
19
|
|
16
20
|
|
17
21
|
The following are required for your Pivotal Tracker project:-
|
@@ -36,7 +40,17 @@ Or install it yourself as:
|
|
36
40
|
|
37
41
|
## Usage
|
38
42
|
|
39
|
-
|
43
|
+
# Assuming environment variables for $JENKINS_HOME, $JOB_NAME, $BUILD_NUMBER & $BUILD_URL exists
|
44
|
+
$ bundle exec jenkins_tracker integrate --tracker-token ABC123456 --tracker-project-id 123456
|
45
|
+
# => Successfully integrated Jenkins Job ($JOB_NAME) with Pivotal Tracker Project (123456)
|
46
|
+
|
47
|
+
It's best to run this utility as a Post Build Action in Jenkins:
|
48
|
+
|
49
|
+
![Jenkins Post Build Action Screenshot](https://raw.github.com/prashantrajan/static_assets/master/jenkins_tracker/images/jenkins_post_build_action.jpg)
|
50
|
+
|
51
|
+
The integration will result in comments being added to the relevant Pivotal Tracker stories:
|
52
|
+
|
53
|
+
![Jenkins Post Build Action Screenshot](https://raw.github.com/prashantrajan/static_assets/master/jenkins_tracker/images/tracker_comment.jpg)
|
40
54
|
|
41
55
|
|
42
56
|
## Contributing
|
data/Rakefile
CHANGED
data/lib/jenkins_tracker.rb
CHANGED
data/lib/jenkins_tracker/base.rb
CHANGED
@@ -5,6 +5,8 @@ module JenkinsTracker
|
|
5
5
|
attr_reader :changelog, :tracker_client, :job_name, :build_url
|
6
6
|
|
7
7
|
def initialize(options = {})
|
8
|
+
raise FileNotFoundError, "Changelog file not found at: #{options[:changelog_file]}" unless File.file?(options[:changelog_file])
|
9
|
+
|
8
10
|
@changelog = File.read(options[:changelog_file])
|
9
11
|
@tracker_client = TrackerClient.new(:token => options[:tracker_token])
|
10
12
|
@job_name = options[:job_name]
|
data/lib/jenkins_tracker/cli.rb
CHANGED
@@ -22,8 +22,8 @@ module JenkinsTracker
|
|
22
22
|
).integrate_job_with_tracker(tracker_project_id)
|
23
23
|
|
24
24
|
say "Successfully integrated Jenkins Job (#{job_name}) with Pivotal Tracker Project (#{tracker_project_id})", :green
|
25
|
-
rescue
|
26
|
-
|
25
|
+
rescue FileNotFoundError => e
|
26
|
+
say e.message, :red
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -15,6 +15,21 @@ describe JenkinsTracker::Base do
|
|
15
15
|
expect(obj.job_name).to eq('foo_job')
|
16
16
|
expect(obj.build_url).to eq('http://jenkins.bitium/com/foo_job/3')
|
17
17
|
end
|
18
|
+
|
19
|
+
context 'when changelog file does not exist' do
|
20
|
+
it 'raises a FileNotFoundError' do
|
21
|
+
changelog_file = '/a/non-existent/file/path'
|
22
|
+
|
23
|
+
expect {
|
24
|
+
described_class.new(
|
25
|
+
:changelog_file => changelog_file,
|
26
|
+
:tracker_token => 'xxx',
|
27
|
+
:job_name => 'foo_job',
|
28
|
+
:build_url => 'http://jenkins.bitium/com/foo_job/3'
|
29
|
+
)
|
30
|
+
}.to raise_error(JenkinsTracker::FileNotFoundError, "Changelog file not found at: #{changelog_file}")
|
31
|
+
end
|
32
|
+
end
|
18
33
|
end
|
19
34
|
|
20
35
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jenkins_tracker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -85,6 +85,7 @@ extra_rdoc_files: []
|
|
85
85
|
files:
|
86
86
|
- .gitignore
|
87
87
|
- .rspec
|
88
|
+
- .travis.yml
|
88
89
|
- Gemfile
|
89
90
|
- MIT-LICENSE
|
90
91
|
- README.md
|
@@ -94,6 +95,7 @@ files:
|
|
94
95
|
- lib/jenkins_tracker.rb
|
95
96
|
- lib/jenkins_tracker/base.rb
|
96
97
|
- lib/jenkins_tracker/cli.rb
|
98
|
+
- lib/jenkins_tracker/exceptions.rb
|
97
99
|
- lib/jenkins_tracker/tracker_client.rb
|
98
100
|
- lib/jenkins_tracker/util.rb
|
99
101
|
- lib/jenkins_tracker/version.rb
|
@@ -118,7 +120,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
118
120
|
version: '0'
|
119
121
|
segments:
|
120
122
|
- 0
|
121
|
-
hash:
|
123
|
+
hash: 4101774404869784256
|
122
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
125
|
none: false
|
124
126
|
requirements:
|
@@ -127,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
129
|
version: '0'
|
128
130
|
segments:
|
129
131
|
- 0
|
130
|
-
hash:
|
132
|
+
hash: 4101774404869784256
|
131
133
|
requirements: []
|
132
134
|
rubyforge_project:
|
133
135
|
rubygems_version: 1.8.24
|