travis 1.6.17.travis.588.5 → 1.6.17.travis.589.5
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 +8 -8
- data/README.md +15 -0
- data/lib/travis/client/repository.rb +5 -21
- data/lib/travis/tools/github.rb +27 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NWI2MjQ5MDBmNmZlZTQ1OTlkODQxMjNmYTZlZmUxZTIxZTc2MDgzNw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZmJkYTgzNzQ0MTA5YmJmODg1MTU3YjNkMzljZGZmZDk4YTAyODZlMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NWQwODIyNGJkMWFhMDM5ZjdkYTFmYjc4MDc0OWE3OWQxYTc3NzM4YjA4MDZk
|
10
|
+
YTEzNzZmNjA0NDkwZDlkNjFiNGI5Yjc0YzVkMTMzNmI3ZDU4ZTc1MWM0NTcx
|
11
|
+
ODk5MWNiZDM2N2QzYzIyMmVkZTMyYWUzZjJmZjc1MGRlNDNjN2M=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTM5ZDA4OGM0NGQyZDZkMWJjZDZmYjQ0YmM0NzZiNzdkZDM4N2I2YzcxMmFk
|
14
|
+
YjRkMzU5ZDljNDU2ODQ5ZmNmZmIwYjZkZjlkNjUzNzU2ZWI3MjYxNjdlY2Y0
|
15
|
+
YzI4N2YxMGI5M2I2NTJiNDAyMzIwODg2N2JjNzg2ODkyYzFjYTk=
|
data/README.md
CHANGED
@@ -1090,6 +1090,7 @@ Or a job:
|
|
1090
1090
|
-u, --upload FILE upload key from given file
|
1091
1091
|
-s, --stdin upload key read from stdin
|
1092
1092
|
-c, --check set exit code depending on key existing
|
1093
|
+
-g, --generate generate SSH key and set up for given GitHub user
|
1093
1094
|
|
1094
1095
|
*This feature is for [Pro and Enterprise](#pro-and-enterprise) only.*
|
1095
1096
|
|
@@ -1112,6 +1113,20 @@ And to remove it again:
|
|
1112
1113
|
removing ssh key for travis-pro/test-project
|
1113
1114
|
No custom SSH key installed.
|
1114
1115
|
|
1116
|
+
You can also have it generate a key for a given GitHub user (for instance, for a dedicated CI user that only has read access). The public key will automatically be added to GitHub and the private key to Travis CI:
|
1117
|
+
|
1118
|
+
$ travis sshkey --generate
|
1119
|
+
We need the GitHub login for the account you want to add the key to.
|
1120
|
+
This information will not be sent to Travis CI, only to api.github.com.
|
1121
|
+
The password will not be displayed.
|
1122
|
+
|
1123
|
+
Username: travisbot
|
1124
|
+
Password for travisbot: **************
|
1125
|
+
|
1126
|
+
Generating RSA key.
|
1127
|
+
Uploading public key to GitHub.
|
1128
|
+
Uploading private key to Travis CI.
|
1129
|
+
|
1115
1130
|
#### `status`
|
1116
1131
|
|
1117
1132
|
Usage: travis status [options]
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'travis/client'
|
2
|
-
require '
|
3
|
-
require 'base64'
|
2
|
+
require 'travis/tools/ssl_key'
|
4
3
|
|
5
4
|
module Travis
|
6
5
|
module Client
|
@@ -17,32 +16,17 @@ module Travis
|
|
17
16
|
Base64.encode64(encrypted).gsub(/\s+/, "")
|
18
17
|
end
|
19
18
|
|
20
|
-
def
|
21
|
-
|
19
|
+
def to_rsa
|
20
|
+
Tools::SSLKey.public_rsa_key(to_s)
|
22
21
|
end
|
23
22
|
|
24
|
-
def
|
25
|
-
|
26
|
-
rescue OpenSSL::PKey::RSAError
|
27
|
-
public_key = to_s.gsub('RSA PUBLIC KEY', 'PUBLIC KEY')
|
28
|
-
@to_rsa = OpenSSL::PKey::RSA.new(public_key)
|
23
|
+
def to_ssh
|
24
|
+
Tools::SSLKey.rsa_ssh(to_rsa)
|
29
25
|
end
|
30
26
|
|
31
27
|
def ==(other)
|
32
28
|
other.to_s == self
|
33
29
|
end
|
34
|
-
|
35
|
-
private
|
36
|
-
|
37
|
-
def sized_bytes(value)
|
38
|
-
bytes = to_byte_array(value.to_i)
|
39
|
-
[bytes.size, *bytes].pack('NC*')
|
40
|
-
end
|
41
|
-
|
42
|
-
def to_byte_array(num, *significant)
|
43
|
-
return significant if num.between?(-1, 0) and significant[0][7] == num[7]
|
44
|
-
to_byte_array(*num.divmod(256)) + significant
|
45
|
-
end
|
46
30
|
end
|
47
31
|
|
48
32
|
include States
|
data/lib/travis/tools/github.rb
CHANGED
@@ -36,6 +36,14 @@ module Travis
|
|
36
36
|
each_token { |t| break yield(t) }
|
37
37
|
end
|
38
38
|
|
39
|
+
def with_basic_auth(&block)
|
40
|
+
user, password = ask_credentials
|
41
|
+
basic_auth(user, password, true) do |gh|
|
42
|
+
gh['user'] # so otp kicks in
|
43
|
+
yield gh
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
39
47
|
def each_token
|
40
48
|
require 'gh' unless defined? GH
|
41
49
|
possible_tokens { |t| yield(t) if acceptable?(t) }
|
@@ -68,15 +76,20 @@ module Travis
|
|
68
76
|
end
|
69
77
|
|
70
78
|
if manual_login
|
71
|
-
|
72
|
-
user = github_login || ask_login.call
|
73
|
-
password = ask_password.arity == 0 ? ask_password.call : ask_password.call(user)
|
79
|
+
user, password = ask_credentials
|
74
80
|
yield login(user, password, true)
|
75
81
|
end
|
76
82
|
|
77
83
|
after_tokens.call
|
78
84
|
end
|
79
85
|
|
86
|
+
def ask_credentials
|
87
|
+
login_header.call if login_header
|
88
|
+
user = github_login || ask_login.call
|
89
|
+
password = ask_password.arity == 0 ? ask_password.call : ask_password.call(user)
|
90
|
+
[user, password]
|
91
|
+
end
|
92
|
+
|
80
93
|
def possible_logins(&block)
|
81
94
|
netrc_logins(&block)
|
82
95
|
hub_logins(&block)
|
@@ -191,22 +204,27 @@ module Travis
|
|
191
204
|
api_url[%r{^(?:https?://)?([^/]+)}, 1]
|
192
205
|
end
|
193
206
|
|
194
|
-
def
|
207
|
+
def basic_auth(user, password, die = true, otp = nil, &block)
|
195
208
|
opt = { :username => user, :password => password }
|
196
209
|
opt[:headers] = { "X-GitHub-OTP" => otp } if otp
|
197
|
-
|
198
|
-
reply = gh.post('/authorizations', :scopes => scopes, :note => note)
|
199
|
-
self.callback = proc { gh.delete reply['_links']['self']['href'] } if drop_token
|
200
|
-
reply['token']
|
210
|
+
yield GH.with(opt)
|
201
211
|
rescue GH::Error => error
|
202
212
|
if error.info[:response_status] == 401 and error.info[:response_headers]['x-github-otp'].to_s =~ /required/
|
203
213
|
otp = ask_otp.arity == 0 ? ask_otp.call : ask_otp.call(user)
|
204
|
-
|
214
|
+
basic_auth(user, password, die, otp, &block)
|
205
215
|
elsif die
|
206
216
|
raise gh_error(error)
|
207
217
|
end
|
208
218
|
end
|
209
219
|
|
220
|
+
def login(user, password, die = true, otp = nil)
|
221
|
+
basic_auth(user, password, die, otp) do |gh|
|
222
|
+
reply = gh.post('/authorizations', :scopes => scopes, :note => note)
|
223
|
+
self.callback = proc { gh.delete reply['_links']['self']['href'] } if drop_token
|
224
|
+
reply['token']
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
210
228
|
def acceptable?(token)
|
211
229
|
return true unless check_token
|
212
230
|
gh = GH.with(:token => token)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: travis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.17.travis.
|
4
|
+
version: 1.6.17.travis.589.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konstantin Haase
|
@@ -39,7 +39,7 @@ authors:
|
|
39
39
|
autorequire:
|
40
40
|
bindir: bin
|
41
41
|
cert_chain: []
|
42
|
-
date: 2014-07-
|
42
|
+
date: 2014-07-24 00:00:00.000000000 Z
|
43
43
|
dependencies:
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: faraday
|