ci_toolkit 1.3.21 → 1.4.3
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 +4 -4
- data/Gemfile.lock +2 -2
- data/lib/ci_toolkit/github_bot.rb +64 -0
- data/lib/ci_toolkit/github_pr.rb +6 -3
- data/lib/ci_toolkit.rb +1 -1
- metadata +3 -3
- data/lib/ci_toolkit/github_access.rb +0 -51
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 718ab9ac500f2eed43aa944fe68fc0f089de6ec29f10d5b427c185e15e57ac83
|
|
4
|
+
data.tar.gz: 3e058ae593103bb86286a154ce06527cbd4e0b40710e82e5ae8008c679a6443c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e01929ab9f0d623934879a9ef239a0cd6ef5190eca91e273956fec7b84f405c0283f2d5b85e91428b484b5e6fb626112827a3bb1651a01b3084de956f948a255
|
|
7
|
+
data.tar.gz: 70499365995b7bbb97ca304a451cf83b846592d6109aff6195e51623d0703dbf8e07906b440295f5a0d44ae62868207507d6fc87c63ced37f19f13c164b24e99
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
ci_toolkit (1.3
|
|
4
|
+
ci_toolkit (1.4.3)
|
|
5
5
|
faraday
|
|
6
6
|
faraday_middleware
|
|
7
7
|
jwt
|
|
@@ -46,7 +46,7 @@ GEM
|
|
|
46
46
|
octokit (4.21.0)
|
|
47
47
|
faraday (>= 0.9)
|
|
48
48
|
sawyer (~> 0.8.0, >= 0.5.3)
|
|
49
|
-
openssl (2.2
|
|
49
|
+
openssl (2.1.2)
|
|
50
50
|
ipaddr
|
|
51
51
|
parallel (1.21.0)
|
|
52
52
|
parser (3.0.2.0)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "octokit"
|
|
4
|
+
require "jwt"
|
|
5
|
+
|
|
6
|
+
module CiToolkit
|
|
7
|
+
# Utility class that provides an access token that can be used with the Github API
|
|
8
|
+
class GithubBot
|
|
9
|
+
# Provides a jwt token for authentication. Sores the private key and app id for the bot
|
|
10
|
+
class Credentials
|
|
11
|
+
attr_reader :app_id
|
|
12
|
+
|
|
13
|
+
def initialize(app_id = ENV["CRVSH_BOT_GITHUB_APP_ID"], private_key = ENV["CRVSH_BOT_GITHUB_APP_PRIVATE_KEY"])
|
|
14
|
+
@app_id = app_id.to_i
|
|
15
|
+
@private_key = private_key
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def jwt_token
|
|
19
|
+
return if @private_key.nil?
|
|
20
|
+
|
|
21
|
+
JWT.encode(
|
|
22
|
+
{
|
|
23
|
+
iat: Time.now.to_i,
|
|
24
|
+
exp: Time.now.to_i + (9 * 60),
|
|
25
|
+
iss: @app_id
|
|
26
|
+
},
|
|
27
|
+
OpenSSL::PKey::RSA.new(@private_key),
|
|
28
|
+
"RS256"
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
# stack = Faraday::RackBuilder.new do |builder|
|
|
33
|
+
# builder.response :logger
|
|
34
|
+
# builder.use Octokit::Response::RaiseError
|
|
35
|
+
# builder.adapter Faraday.default_adapter
|
|
36
|
+
# end
|
|
37
|
+
# Octokit.middleware = stack
|
|
38
|
+
|
|
39
|
+
def initialize(
|
|
40
|
+
credentials = CiToolkit::GithubBot::Credentials.new,
|
|
41
|
+
client = Octokit::Client.new(bearer_token: credentials.jwt_token, auto_paginate: true)
|
|
42
|
+
)
|
|
43
|
+
@app_id = credentials.app_id
|
|
44
|
+
@client = client
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def create_token
|
|
48
|
+
return unless (installation_id = find_app_installation)
|
|
49
|
+
|
|
50
|
+
@client.create_app_installation_access_token(
|
|
51
|
+
installation_id,
|
|
52
|
+
{ accept: Octokit::Preview::PREVIEW_TYPES[:integrations] }
|
|
53
|
+
)[:token]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
private
|
|
57
|
+
|
|
58
|
+
def find_app_installation
|
|
59
|
+
@client.find_app_installations(
|
|
60
|
+
{ accept: Octokit::Preview::PREVIEW_TYPES[:integrations] }
|
|
61
|
+
).select { |installation| @app_id.equal?(installation[:app_id]) }.first[:id]
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
data/lib/ci_toolkit/github_pr.rb
CHANGED
|
@@ -16,7 +16,7 @@ module CiToolkit
|
|
|
16
16
|
@commit_sha = env.git_commit
|
|
17
17
|
@_client = client
|
|
18
18
|
@build_types = build_types
|
|
19
|
-
@
|
|
19
|
+
@bot = CiToolkit::GithubBot.new
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def title
|
|
@@ -84,7 +84,10 @@ module CiToolkit
|
|
|
84
84
|
def build_types
|
|
85
85
|
types = []
|
|
86
86
|
@build_types.each do |type|
|
|
87
|
-
|
|
87
|
+
if comments.include?("#{type} build") || labels.include?("#{type} build")
|
|
88
|
+
comments.include?(type) || labels.include?(type)
|
|
89
|
+
types.push(type)
|
|
90
|
+
end
|
|
88
91
|
end
|
|
89
92
|
types
|
|
90
93
|
end
|
|
@@ -110,7 +113,7 @@ module CiToolkit
|
|
|
110
113
|
|
|
111
114
|
def client
|
|
112
115
|
@_client = Octokit::Client.new if @_client.nil?
|
|
113
|
-
@_client.access_token = @
|
|
116
|
+
@_client.access_token = @bot.create_token if @_client.access_token.nil?
|
|
114
117
|
|
|
115
118
|
@_client
|
|
116
119
|
end
|
data/lib/ci_toolkit.rb
CHANGED
|
@@ -4,7 +4,7 @@ require "ci_toolkit/bitrise_env"
|
|
|
4
4
|
require "ci_toolkit/build"
|
|
5
5
|
require "ci_toolkit/build_status"
|
|
6
6
|
require "ci_toolkit/duplicate_files_finder"
|
|
7
|
-
require "ci_toolkit/
|
|
7
|
+
require "ci_toolkit/github_bot"
|
|
8
8
|
require "ci_toolkit/github_pr"
|
|
9
9
|
require "ci_toolkit/git"
|
|
10
10
|
require "ci_toolkit/jira"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ci_toolkit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.3
|
|
4
|
+
version: 1.4.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Gero Keller
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-11-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -209,7 +209,7 @@ files:
|
|
|
209
209
|
- lib/ci_toolkit/build_status.rb
|
|
210
210
|
- lib/ci_toolkit/duplicate_files_finder.rb
|
|
211
211
|
- lib/ci_toolkit/git.rb
|
|
212
|
-
- lib/ci_toolkit/
|
|
212
|
+
- lib/ci_toolkit/github_bot.rb
|
|
213
213
|
- lib/ci_toolkit/github_pr.rb
|
|
214
214
|
- lib/ci_toolkit/jira.rb
|
|
215
215
|
- lib/ci_toolkit/pr_messenger.rb
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "octokit"
|
|
4
|
-
require "jwt"
|
|
5
|
-
|
|
6
|
-
module CiToolkit
|
|
7
|
-
# Utility class that provides an access token that can be used with the Github API
|
|
8
|
-
class GithubAccess
|
|
9
|
-
# stack = Faraday::RackBuilder.new do |builder|
|
|
10
|
-
# builder.response :logger
|
|
11
|
-
# builder.use Octokit::Response::RaiseError
|
|
12
|
-
# builder.adapter Faraday.default_adapter
|
|
13
|
-
# end
|
|
14
|
-
# Octokit.middleware = stack
|
|
15
|
-
|
|
16
|
-
def initialize(app_id = ENV["CRVSH_BOT_GITHUB_APP_ID"], private_key = ENV["CRVSH_BOT_GITHUB_APP_PRIVATE_KEY"])
|
|
17
|
-
@app_id = app_id.to_i
|
|
18
|
-
@private_key = private_key
|
|
19
|
-
@client = Octokit::Client.new(bearer_token: jwt_token, auto_paginate: true)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def create_token
|
|
23
|
-
return unless (installation_id = find_app_installation)
|
|
24
|
-
|
|
25
|
-
@client.create_app_installation_access_token(
|
|
26
|
-
installation_id,
|
|
27
|
-
{ accept: Octokit::Preview::PREVIEW_TYPES[:integrations] }
|
|
28
|
-
)[:token]
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
private
|
|
32
|
-
|
|
33
|
-
def find_app_installation
|
|
34
|
-
@client.find_app_installations(
|
|
35
|
-
{ accept: Octokit::Preview::PREVIEW_TYPES[:integrations] }
|
|
36
|
-
).select { |installation| installation[:app_id] == @app_id }.first[:id]
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def jwt_token
|
|
40
|
-
JWT.encode(
|
|
41
|
-
{
|
|
42
|
-
iat: Time.now.to_i,
|
|
43
|
-
exp: Time.now.to_i + (9 * 60),
|
|
44
|
-
iss: @app_id
|
|
45
|
-
},
|
|
46
|
-
OpenSSL::PKey::RSA.new(@private_key),
|
|
47
|
-
"RS256"
|
|
48
|
-
)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|