ci_toolkit 1.6.2 → 1.6.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fcff525b13f81bed444cb020bd0b41da763c049a3fc701ab69667b95667c45f1
4
- data.tar.gz: 7838f0ab23174aef2eacf27438fa01359a35d0a39742d734372a25b18af239ad
3
+ metadata.gz: bf8748ff0d666c907fac0f8bb328531e6536c49b19cd39fd99662d8aea067d8a
4
+ data.tar.gz: 79caaeae3543c703d77c8f239c3b7f37e0d86aae44f78a22c542e7694855a11a
5
5
  SHA512:
6
- metadata.gz: 777b3ed09754c520fc539b29021f50f6b814b56a4cb2aee5d1cc4169b1840159aca5d16d6091677497dec6b7528c7ae1feb72cc1f306b6a43113513d27f63a7d
7
- data.tar.gz: 9db6afb245cd1f70fbb8fbef7b35d1198b0b5937ea70c7c8e78962d9001022443d787f5cd8a7227b1e9ea318729d720fd914b64cc1f30389ce834fbf5af4c45e
6
+ metadata.gz: 88c8227691bc19dac3d5b6c7b79a785067780d1021488035b355dcbd9f02c70250196db31410c6ff245187ab7fa1376dd98f4f07117c8a2aa208eaf60c93a261
7
+ data.tar.gz: fb4df2fe415536e4a61872a93f507da43e0378b47af051050e35b4b82fc10413c153ad065e87c6f17a3d40b2463a722f2de7a472062115b347b325d497267951
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ci_toolkit (1.6.2)
4
+ ci_toolkit (1.6.4)
5
5
  faraday
6
6
  faraday-multipart
7
7
  faraday_middleware
@@ -124,6 +124,7 @@ GEM
124
124
  unicode-display_width (2.4.2)
125
125
 
126
126
  PLATFORMS
127
+ aarch64-linux
127
128
  universal-darwin-20
128
129
  x86_64-darwin-21
129
130
  x86_64-darwin-22
data/README.md CHANGED
@@ -23,6 +23,13 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
23
23
 
24
24
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version in `ci_toolkit.gemspec`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
25
25
 
26
+ ## Docker Install
27
+ If you've docker already [installed](https://docs.docker.com/docker-for-mac/install/) you can build and run the image to get started.
28
+
29
+ ```shell
30
+ docker-compose run app sh
31
+ ```
32
+
26
33
  ## Contributing
27
34
 
28
35
  Bug reports and pull requests are welcome on GitHub at https://github.com/crvshlab/ci_toolkit. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/ci_toolkit/blob/master/CODE_OF_CONDUCT.md).
data/RELEASING.md ADDED
@@ -0,0 +1,7 @@
1
+ ### How to make a release
2
+
3
+ - Bump the version number in `Gemfile.lock` to the new version.
4
+ - Bump the version number in `ci_toolkit.gemspec` to the new version.
5
+ - `git commit -am "Version X.Y.Z."` (where X.Y.Z is the new version).
6
+ - `git tag -a vX.Y.X -m "Version X.Y.Z"` (where X.Y.Z is the new version).
7
+ - `git push && git push --tags`.
data/ci_toolkit.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "ci_toolkit"
5
- spec.version = "1.6.2"
5
+ spec.version = "1.6.4"
6
6
  spec.authors = ["Gero Keller"]
7
7
  spec.email = ["gero.f.keller@gmail.com"]
8
8
 
@@ -0,0 +1,8 @@
1
+ version: '3'
2
+ services:
3
+ app:
4
+ build:
5
+ context: .
6
+ dockerfile: ./.devcontainer/Dockerfile
7
+ volumes:
8
+ - .:/opt/ci_toolkit
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CiToolkit
4
+ # util class to get actual valid list of build types
5
+ class BuildTypes
6
+ # get actual valid list of build types
7
+ def get_build_types(build_types_arr, comments, labels)
8
+ types = []
9
+ build_types_arr.each do |type|
10
+ if comments.include?("#{type} build") || labels.include?("#{type} build") ||
11
+ comments.include?(type) || labels.include?(type)
12
+ types.push(type)
13
+ end
14
+ end
15
+ types
16
+ end
17
+ end
18
+ end
@@ -98,6 +98,10 @@ module CiToolkit
98
98
  CiToolkit::DvcsPr.api_not_implemented(self)
99
99
  end
100
100
 
101
+ def certificate_pinning_logic_modified?
102
+ CiToolkit::DvcsPr.api_not_implemented(self)
103
+ end
104
+
101
105
  def get_status_description(_context)
102
106
  CiToolkit::DvcsPr.api_not_implemented(self)
103
107
  end
@@ -18,6 +18,8 @@ module CiToolkit
18
18
  @_client = client
19
19
  @build_types = build_types
20
20
  @bot = CiToolkit::GithubBot.new
21
+ @changes_detector = GithubSpecificFilesChangesDetector.new
22
+ @build_types_getter = CiToolkit::BuildTypes.new
21
23
  end
22
24
 
23
25
  def title
@@ -83,14 +85,7 @@ module CiToolkit
83
85
  end
84
86
 
85
87
  def build_types
86
- types = []
87
- @build_types.each do |type|
88
- if comments.include?("#{type} build") || labels.include?("#{type} build") ||
89
- comments.include?(type) || labels.include?(type)
90
- types.push(type)
91
- end
92
- end
93
- types
88
+ @build_types_getter.get_build_types(@build_types, comments, labels)
94
89
  end
95
90
 
96
91
  def infrastructure_work?
@@ -106,8 +101,11 @@ module CiToolkit
106
101
  end
107
102
 
108
103
  def realm_module_modified?
109
- modified_files = files.select { |file| file[:filename]&.start_with? "cache/" }
110
- modified_files.length.positive?
104
+ @changes_detector.realm_module_modified(files)
105
+ end
106
+
107
+ def certificate_pinning_logic_modified?
108
+ @changes_detector.certificate_pinning_logic_modified(files)
111
109
  end
112
110
 
113
111
  def get_status_description(context)
@@ -126,4 +124,30 @@ module CiToolkit
126
124
  @_client
127
125
  end
128
126
  end
127
+
128
+ # util class to verify modifications in app files that may have been broken in the past
129
+ class GithubSpecificFilesChangesDetector
130
+ def realm_module_modified(files)
131
+ modified_files = files.select { |file| file[:filename]&.start_with? "cache/" }
132
+ modified_files.length.positive?
133
+ end
134
+
135
+ def certificate_pinning_logic_modified(files)
136
+ modified_files = files.select do |file|
137
+ contains_substring(file[:filename],
138
+ %w[HttpClientFactory SecurePreferences CertificatePinningConfiguration SSLPinner
139
+ CertificateDateChecker])
140
+ end
141
+ modified_files.length.positive?
142
+ end
143
+
144
+ private
145
+
146
+ def contains_substring(input_string, substrings)
147
+ return false if input_string.nil?
148
+
149
+ regex = Regexp.union(substrings.map { |s| Regexp.new(s, Regexp::IGNORECASE) })
150
+ !!(input_string =~ regex)
151
+ end
152
+ end
129
153
  end
@@ -20,6 +20,8 @@ module CiToolkit
20
20
  @_client = bot.client
21
21
  @build_types = build_types
22
22
  @bot = bot
23
+ @changes_detector = GitlabSpecificFilesChangesDetector.new
24
+ @build_types_getter = CiToolkit::BuildTypes.new
23
25
  end
24
26
 
25
27
  def title
@@ -86,14 +88,7 @@ module CiToolkit
86
88
  end
87
89
 
88
90
  def build_types
89
- types = []
90
- @build_types.each do |type|
91
- if comments.include?("#{type} build") || labels.include?("#{type} build") ||
92
- comments.include?(type) || labels.include?(type)
93
- types.push(type)
94
- end
95
- end
96
- types
91
+ @build_types_getter.get_build_types(@build_types, comments, labels)
97
92
  end
98
93
 
99
94
  def infrastructure_work?
@@ -109,8 +104,11 @@ module CiToolkit
109
104
  end
110
105
 
111
106
  def realm_module_modified?
112
- modified_files = files.select { |file| file&.old_path&.start_with? "cache/" }
113
- modified_files.length.positive?
107
+ @changes_detector.realm_module_modified(files)
108
+ end
109
+
110
+ def certificate_pinning_logic_modified?
111
+ @changes_detector.certificate_pinning_logic_modified(files)
114
112
  end
115
113
 
116
114
  def get_status_description(context)
@@ -127,4 +125,30 @@ module CiToolkit
127
125
  @_client
128
126
  end
129
127
  end
128
+
129
+ # util class to verify modifications in app files that may have been broken in the past
130
+ class GitlabSpecificFilesChangesDetector
131
+ def realm_module_modified(files)
132
+ modified_files = files.select { |file| file&.old_path&.start_with? "cache/" }
133
+ modified_files.length.positive?
134
+ end
135
+
136
+ def certificate_pinning_logic_modified(files)
137
+ modified_files = files.select do |file|
138
+ contains_substring(file&.old_path,
139
+ %w[HttpClientFactory SecurePreferences CertificatePinningConfiguration SSLPinner
140
+ CertificateDateChecker])
141
+ end
142
+ modified_files.length.positive?
143
+ end
144
+
145
+ private
146
+
147
+ def contains_substring(input_string, substrings)
148
+ return false if input_string.nil?
149
+
150
+ regex = Regexp.union(substrings.map { |s| Regexp.new(s, Regexp::IGNORECASE) })
151
+ !!(input_string =~ regex)
152
+ end
153
+ end
130
154
  end
@@ -55,6 +55,15 @@ module CiToolkit
55
55
  delete(@messenger_text.realm_modified_warning_title)
56
56
  end
57
57
 
58
+ def send_certificate_pinning_modified_android_warning
59
+ delete_certificate_pinning_modified_android_warning
60
+ send(@messenger_text.certificate_pinning_logic_modified_android_title)
61
+ end
62
+
63
+ def delete_certificate_pinning_modified_android_warning
64
+ delete(@messenger_text.certificate_pinning_logic_modified_android_title)
65
+ end
66
+
58
67
  def send_big_pr_warning
59
68
  delete_big_pr_warning
60
69
  send(@messenger_text.big_pr_warning_title)
@@ -45,6 +45,13 @@ module CiToolkit
45
45
  warning_with_message("Realm module modified. Did you remember to add migrations?")
46
46
  end
47
47
 
48
+ def certificate_pinning_logic_modified_android_title
49
+ warning_with_message("Detected modifications in Certificate pinning related files " \
50
+ "(HttpClientFactory / SecurePreferences / CertificatePinningConfiguration / " \
51
+ "SSLPinner / CertificateDateChecker). If you are doing temporary changes " \
52
+ "to pinning, do not merge this MR until you revert them!")
53
+ end
54
+
48
55
  def big_pr_warning_title
49
56
  warning_with_message("Big PR")
50
57
  end
@@ -3,10 +3,12 @@
3
3
  require "gitlab"
4
4
 
5
5
  module CiToolkit
6
- # Utility class that provides an faraday connection
6
+ # Utility class that provides a faraday connection
7
7
  class SeeTestBot
8
8
  attr_reader :faraday_conn
9
9
 
10
+ TIMEOUT = 60
11
+
10
12
  # Provides a base url, an endpoint and an access token that can be used to
11
13
  # interact with the SeeTest web service
12
14
  class Credentials
@@ -24,6 +26,8 @@ module CiToolkit
24
26
  def initialize(
25
27
  credentials = CiToolkit::SeeTestBot::Credentials.new,
26
28
  faraday_conn = Faraday.new(url: credentials.base_url) do |f|
29
+ f.options.timeout = TIMEOUT
30
+ f.options.open_timeout = TIMEOUT
27
31
  f.request :authorization, "Bearer", credentials.access_token
28
32
  f.request :multipart
29
33
  f.request :url_encoded
data/lib/ci_toolkit.rb CHANGED
@@ -18,6 +18,7 @@ require "ci_toolkit/jira"
18
18
  require "ci_toolkit/pr_messenger"
19
19
  require "ci_toolkit/pr_messenger_text"
20
20
  require "ci_toolkit/bitrise_client"
21
+ require "ci_toolkit/build_types"
21
22
 
22
23
  module CiToolkit
23
24
  class Error < StandardError; end
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.6.2
4
+ version: 1.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gero Keller
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-13 00:00:00.000000000 Z
11
+ date: 2024-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -226,16 +226,19 @@ files:
226
226
  - Gemfile.lock
227
227
  - LICENSE.txt
228
228
  - README.md
229
+ - RELEASING.md
229
230
  - Rakefile
230
231
  - bin/console
231
232
  - bin/setup
232
233
  - ci_toolkit.gemspec
234
+ - docker-compose.yml
233
235
  - duplicate_files_whitelist.txt
234
236
  - lib/ci_toolkit.rb
235
237
  - lib/ci_toolkit/bitrise_client.rb
236
238
  - lib/ci_toolkit/bitrise_env.rb
237
239
  - lib/ci_toolkit/build.rb
238
240
  - lib/ci_toolkit/build_status.rb
241
+ - lib/ci_toolkit/build_types.rb
239
242
  - lib/ci_toolkit/duplicate_files_finder.rb
240
243
  - lib/ci_toolkit/dvcs_pr.rb
241
244
  - lib/ci_toolkit/dvcs_pr_factory.rb
@@ -275,7 +278,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
278
  - !ruby/object:Gem::Version
276
279
  version: '0'
277
280
  requirements: []
278
- rubygems_version: 3.4.10
281
+ rubygems_version: 3.4.19
279
282
  signing_key:
280
283
  specification_version: 4
281
284
  summary: Set of CI utilities