trent 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +31 -1
- data/lib/travis/travis.rb +66 -0
- data/lib/trent.rb +13 -1
- metadata +23 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c24028242dbee5242968caf0debba171505838ed9ea679f67c1a45080bba48d
|
4
|
+
data.tar.gz: 4e08149c17144b39350bfce96733a7efe0f53d77b66383700bf81a743a7b390d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7b9184aae962c908747e33a35482d8c7f470c52dd5fd9ea9f249fc0f0d6fca2edf4e863d670fa9e116691f56d94d4dd33a0513671e3bd730ca26c712318798c
|
7
|
+
data.tar.gz: dab47c51d9b65bc25753d91b2ad6507e893809f50a7e16e4844f9a22c651798a5387425cea9c8139cf9a9268c0933c4ee615dd3f2e28ecee792cbe6322956843
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
### [0.4.0] 2019-03-07
|
2
|
+
|
3
|
+
### Added
|
4
|
+
- Add small set of utility functions for Travis-CI. Specifically determining if the previous branch build for a pull request was successful or not. [Discussion](https://github.com/levibostian/Trent/issues/22)
|
5
|
+
|
1
6
|
### [0.3.0] 2018-11-27
|
2
7
|
|
3
8
|
### Added
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# Trent
|
6
6
|
|
7
|
-
Run and debug bash commands on Travis-CI much easier.
|
7
|
+
Run and debug bash commands on Travis-CI much easier. Make writing commands to run on your CI not painful.
|
8
8
|
|
9
9
|
...Yes, Trent is open to working with more then Travis-CI. At this time, Travis is what I use so it's what's supported. Make a pull request to add more.
|
10
10
|
|
@@ -148,6 +148,34 @@ ci.config_github('wfoweifwoeifjweoijwefowefweoif')
|
|
148
148
|
ci.github.comment("Tests pass!") # Send comment to pull request for the Travis build. The pull request information is automatically retrieved from the Travis virtual machine the build is running on.
|
149
149
|
```
|
150
150
|
|
151
|
+
# Travis
|
152
|
+
|
153
|
+
Trent comes with some handy commands that allow you to work with Travis, itself, easily. Here are some things you can do with it:
|
154
|
+
|
155
|
+
### Skip rest of Trent commands if previous branch build failed and on a pull request
|
156
|
+
|
157
|
+
When I am working on a project and I get it done, I tend to push up my branch to GitHub and then make a pull request right away to indicate it is complete.
|
158
|
+
|
159
|
+
The problem is, if my branch build fails, the pull request build on Travis will still happen (and most likely fail if configured similar to my push commands). I would rather have Travis skip running some commands on a pull request build if the previous branch build failed.
|
160
|
+
|
161
|
+
```ruby
|
162
|
+
require 'trent'
|
163
|
+
|
164
|
+
ci = Trent.new()
|
165
|
+
# Set Travis CI API key to authenticate user account.
|
166
|
+
# Log into travis-ci.com or travis-ci.org (depending on where your repo is located), and browse to your profile page: https://travis-ci.com/account/preferences Copy the API key shown.
|
167
|
+
# I like to store this API key in an environment variable.
|
168
|
+
# Also indicate if this is a private repo or not.
|
169
|
+
ci.config_travis(:api_key => ENV["TRAVIS_API_KEY"], :private_repo => true)
|
170
|
+
|
171
|
+
if TravisCI.pull_request? && ci.travis.branch_build_successful?
|
172
|
+
# Do something if we are in a pull request and the most recent branch build was successful.
|
173
|
+
end
|
174
|
+
|
175
|
+
# Or, fail is Trent figures out we are in a pull request and the most recent branch build was not successful.
|
176
|
+
ci.travis.fail_if_pr_branch_build_failed()
|
177
|
+
```
|
178
|
+
|
151
179
|
# Docs
|
152
180
|
|
153
181
|
Trent documentation is hosted [here](https://www.rubydoc.info/gems/trent/0.1.0).
|
@@ -170,6 +198,8 @@ ci = Trent.new(:color => :green)
|
|
170
198
|
|
171
199
|
Trent is open for pull requests. Check out the [list of issues](https://github.com/levibostian/trent/issues) for tasks I am planning on working on. Check them out if you wish to contribute in that way.
|
172
200
|
|
201
|
+
At this time, Trent is a random collection of random tasks that I have found a use case for while working with CI servers. I see Trent being more of a core system that can run a series of plugins for you. I want to think of it as "The [Danger](https://danger.systems/) of creating scripts for CI servers" (aka: a convenience tool to help you write scripts quickly and painless with less bugs).
|
202
|
+
|
173
203
|
**Want to add features to Trent?** Before you decide to take a bunch of time and add functionality to the library, please, [create an issue](https://github.com/levibostian/trent/issues/new) stating what you wish to add. This might save you some time in case your purpose does not fit well in the use cases of Trent.
|
174
204
|
|
175
205
|
### Building Trent
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'travis'
|
4
|
+
require 'travis/pro' # For private repos
|
5
|
+
require_relative '../log'
|
6
|
+
|
7
|
+
# Functions to run on Travis
|
8
|
+
class TravisCI
|
9
|
+
def initialize(params = {})
|
10
|
+
Log.fatal('Cannot run commands against Travis when not running on a Travis server') unless TravisCI.running_on_travis?
|
11
|
+
|
12
|
+
@private = params.fetch(:private_repo, false)
|
13
|
+
@travis_token = params.fetch(:api_key)
|
14
|
+
|
15
|
+
authenticate
|
16
|
+
end
|
17
|
+
|
18
|
+
# If currently running on a Travis CI machine
|
19
|
+
def self.running_on_travis?
|
20
|
+
ENV['HAS_JOSH_K_SEAL_OF_APPROVAL']
|
21
|
+
end
|
22
|
+
|
23
|
+
# If CI job running on a pull request
|
24
|
+
def self.pull_request?
|
25
|
+
ENV['TRAVIS_PULL_REQUEST'].to_s == 'true'
|
26
|
+
end
|
27
|
+
|
28
|
+
# If the current job is a pull request, this will determine if the previous build for the current branch was successful or not.
|
29
|
+
# Note: An exception will be thrown if not in a pull request.
|
30
|
+
def branch_build_successful?
|
31
|
+
Log.fatal('Cannot determine if branch build was successful if not running on a pull request') unless TravisCI.pull_request?
|
32
|
+
|
33
|
+
travis_repo = repo
|
34
|
+
original_branch = ENV['TRAVIS_PULL_REQUEST_BRANCH']
|
35
|
+
|
36
|
+
travis_repo.branch(original_branch).green?
|
37
|
+
end
|
38
|
+
|
39
|
+
# Get repository from Travis
|
40
|
+
def repo
|
41
|
+
if @private
|
42
|
+
Travis::Pro::Repository.find(ENV['TRAVIS_REPO_SLUG'])
|
43
|
+
else
|
44
|
+
Travis::Repository.find(ENV['TRAVIS_REPO_SLUG'])
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# If the previous build on current branch failed on Travis, skip this build too.
|
49
|
+
def fail_if_pr_branch_build_failed
|
50
|
+
return unless TravisCI.pull_request?
|
51
|
+
|
52
|
+
Log.warning('Checking if previous build for this branch was successful on Travis...')
|
53
|
+
|
54
|
+
Log.fatal('Skipping running command because previous build for branch failed.') unless branch_build_successful?
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def authenticate
|
60
|
+
if @private
|
61
|
+
Travis::Pro.access_token = @travis_token
|
62
|
+
else
|
63
|
+
Travis.access_token = @travis_token
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/trent.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'command/ssh/ssh'
|
4
4
|
require 'github/github'
|
5
|
+
require 'travis/travis'
|
5
6
|
require 'command/sh/sh'
|
6
7
|
require 'colorize'
|
7
8
|
require_relative './log'
|
@@ -14,7 +15,7 @@ class Trent
|
|
14
15
|
# local - Run Trent locally on your own machine instead of a CI server.
|
15
16
|
def initialize(params = {})
|
16
17
|
running_local = params.fetch(:local, false)
|
17
|
-
Log.fatal('Trent is designed to run on Travis-CI builds. Run it on Travis-CI.') unless
|
18
|
+
Log.fatal('Trent is designed to run on Travis-CI builds. Run it on Travis-CI.') unless TravisCI.running_on_travis? || running_local
|
18
19
|
|
19
20
|
@color = params.fetch(:color, :blue)
|
20
21
|
@sh = Sh.new
|
@@ -32,6 +33,11 @@ class Trent
|
|
32
33
|
@github = GitHub.new(api_key)
|
33
34
|
end
|
34
35
|
|
36
|
+
# Configure how to communicate with Travis
|
37
|
+
def config_travis(api_key, private_repo)
|
38
|
+
@travis = TravisCI.new(api_key: api_key, private_repo: private_repo)
|
39
|
+
end
|
40
|
+
|
35
41
|
# While working with bash commands, some commands are not added to the path. That's annoying.
|
36
42
|
# Convenient method to assign a command to a path for replacing.
|
37
43
|
# Example:
|
@@ -65,6 +71,12 @@ class Trent
|
|
65
71
|
result
|
66
72
|
end
|
67
73
|
|
74
|
+
# Get instance of GitHub class to run commands against GitHub
|
75
|
+
def travis
|
76
|
+
Log.fatal('You did not configure Travis yet.') unless @travis
|
77
|
+
@travis
|
78
|
+
end
|
79
|
+
|
68
80
|
# Get instance of GitHub class to run commands against GitHub
|
69
81
|
def github
|
70
82
|
Log.fatal('You did not configure GitHub yet.') unless @github
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Levi Bostian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -50,6 +50,26 @@ dependencies:
|
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: 5.0.2
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: travis
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.8'
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.8.2
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.8'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 1.8.2
|
53
73
|
- !ruby/object:Gem::Dependency
|
54
74
|
name: rubocop
|
55
75
|
requirement: !ruby/object:Gem::Requirement
|
@@ -149,6 +169,7 @@ files:
|
|
149
169
|
- lib/command/ssh/ssh.rb
|
150
170
|
- lib/github/github.rb
|
151
171
|
- lib/log.rb
|
172
|
+
- lib/travis/travis.rb
|
152
173
|
- lib/trent.rb
|
153
174
|
homepage: http://github.com/levibostian/trent
|
154
175
|
licenses:
|