ci_toolkit 1.5.22 → 1.5.23

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: 659ab6668b76e08f2df9bdad69f510b72af0a3c84c911a181accdc0cbfdedb18
4
- data.tar.gz: 828fee99088355562ba0cd0607909759be93bb6ef834fcd8d0225391aa405509
3
+ metadata.gz: daf8706f40db455565b6b237d4dfcf563239516fdff0cdc79ccc109923f42f5c
4
+ data.tar.gz: 9c042f0747d5ca6cfbaae07d728275555d7491e211e2c81e13c962b4b352bfb8
5
5
  SHA512:
6
- metadata.gz: d2e976214a79a78ada20daa29b1e76b5e755e7ed6e90ea47075e42a2b652f39e87f3e25cbd060f59afcbdb8d3bc528cdd393aeef066bd222aeda8730e5218c60
7
- data.tar.gz: 691b4025c6d27609d284fef5e947b290a549db505484d26fa16c4966acaf5983695b376b2be178818b2f380a32eb7cae328aa2f9a4030562e95a846733b5a23f
6
+ metadata.gz: 708160a8dbfbbb60740a98225b53c2935f01e5db6ae94b91c091b0f18ccda14c080626c1260299cde74005b2ea366b548c6dd08b14314d58ba964b98f0f2e9a2
7
+ data.tar.gz: 71721b7bab9067e2a3ba7bb4751481e2093a9b47abeb7a135c5371f84ff1ea95b414ae9437e3409ccd93a0db8fd5b02b1cde72863577bb92f3acea4baa393d99
@@ -1,5 +1,5 @@
1
1
  # [Choice] Ruby version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.0, 2, 2.7, 2.6, 3-bullseye, 3.0-bullseye, 2-bullseye, 2.7-bullseye, 2.6-bullseye, 3-buster, 3.0-buster, 2-buster, 2.7-buster, 2.6-buster
2
- ARG VARIANT=2-bullseye
2
+ ARG VARIANT=3-bullseye
3
3
  FROM mcr.microsoft.com/vscode/devcontainers/ruby:0-${VARIANT}
4
4
 
5
5
  # [Choice] Node.js version: none, lts/*, 16, 14, 12, 10
data/.rubocop.yml CHANGED
@@ -2,7 +2,7 @@ require: rubocop-rspec
2
2
 
3
3
  AllCops:
4
4
  NewCops: enable
5
- TargetRubyVersion: 2.6
5
+ TargetRubyVersion: 3.2
6
6
 
7
7
  Style/StringLiterals:
8
8
  Enabled: true
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ci_toolkit (1.5.22)
4
+ ci_toolkit (1.5.23)
5
5
  faraday
6
6
  faraday-multipart
7
7
  faraday_middleware
@@ -60,13 +60,13 @@ GEM
60
60
  sawyer (~> 0.8.0, >= 0.5.3)
61
61
  openssl (2.2.1)
62
62
  ipaddr
63
- parallel (1.21.0)
64
- parser (3.0.2.0)
63
+ parallel (1.23.0)
64
+ parser (3.2.2.1)
65
65
  ast (~> 2.4.1)
66
66
  public_suffix (4.0.6)
67
- rainbow (3.0.0)
67
+ rainbow (3.1.1)
68
68
  rake (13.0.6)
69
- regexp_parser (2.1.1)
69
+ regexp_parser (2.8.0)
70
70
  rexml (3.2.5)
71
71
  rspec (3.10.0)
72
72
  rspec-core (~> 3.10.0)
@@ -81,22 +81,23 @@ GEM
81
81
  diff-lcs (>= 1.2.0, < 2.0)
82
82
  rspec-support (~> 3.10.0)
83
83
  rspec-support (3.10.2)
84
- rubocop (1.21.0)
84
+ rubocop (1.51.0)
85
+ json (~> 2.3)
85
86
  parallel (~> 1.10)
86
- parser (>= 3.0.0.0)
87
+ parser (>= 3.2.0.0)
87
88
  rainbow (>= 2.2.2, < 4.0)
88
89
  regexp_parser (>= 1.8, < 3.0)
89
- rexml
90
- rubocop-ast (>= 1.9.1, < 2.0)
90
+ rexml (>= 3.2.5, < 4.0)
91
+ rubocop-ast (>= 1.28.0, < 2.0)
91
92
  ruby-progressbar (~> 1.7)
92
- unicode-display_width (>= 1.4.0, < 3.0)
93
- rubocop-ast (1.11.0)
94
- parser (>= 3.0.1.1)
93
+ unicode-display_width (>= 2.4.0, < 3.0)
94
+ rubocop-ast (1.28.1)
95
+ parser (>= 3.2.1.0)
95
96
  rubocop-rake (0.6.0)
96
97
  rubocop (~> 1.0)
97
98
  rubocop-rspec (2.5.0)
98
99
  rubocop (~> 1.19)
99
- ruby-progressbar (1.11.0)
100
+ ruby-progressbar (1.13.0)
100
101
  ruby2_keywords (0.0.5)
101
102
  sawyer (0.8.2)
102
103
  addressable (>= 2.3.5)
data/Rakefile CHANGED
@@ -6,3 +6,7 @@ require "rubocop/rake_task"
6
6
  RuboCop::RakeTask.new
7
7
 
8
8
  task default: :rubocop
9
+
10
+ task :rubocop do
11
+ sh "rubocop -A"
12
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "ci_toolkit"
5
+ spec.version = "1.5.23"
6
+ spec.authors = ["Gero Keller"]
7
+ spec.email = ["gero.f.keller@gmail.com"]
8
+
9
+ spec.summary = "Set of CI utilities"
10
+ spec.description = "Set of tools making it easier to interact between Github PRs and Bitrise CI"
11
+ spec.homepage = "https://github.com/crvshlab/ci_toolkit"
12
+ spec.license = "MIT"
13
+ spec.required_ruby_version = ">= 3.2"
14
+
15
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = "https://github.com/crvshlab/ci_toolkit"
19
+ spec.metadata["changelog_uri"] = "https://github.com/crvshlab/ci_toolkit/CHANGELOG.md"
20
+
21
+ # Specify which files should be added to the gem when it is released.
22
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
24
+ `git ls-files -z`.split("\x0").reject do |f|
25
+ (f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
26
+ end
27
+ end
28
+ spec.bindir = "exe"
29
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ["lib"]
31
+
32
+ # rubocop:disable Gemspec/DevelopmentDependencies
33
+ spec.add_dependency "faraday"
34
+ spec.add_dependency "faraday_middleware"
35
+ spec.add_dependency "faraday-multipart"
36
+ spec.add_dependency "gitlab"
37
+ spec.add_dependency "jwt"
38
+ spec.add_dependency "octokit"
39
+ spec.add_dependency "openssl"
40
+ spec.add_dependency "time"
41
+
42
+ spec.add_development_dependency "rspec", "~> 3.2"
43
+ spec.add_development_dependency "rubocop", "~> 1.7"
44
+ spec.add_development_dependency "rubocop-rake"
45
+ spec.add_development_dependency "rubocop-rspec"
46
+ spec.add_development_dependency "simplecov"
47
+ spec.add_development_dependency "simplecov-json"
48
+ spec.metadata["rubygems_mfa_required"] = "true"
49
+ # rubocop:enable Gemspec/DevelopmentDependencies
50
+ end
@@ -11,10 +11,10 @@ module CiToolkit
11
11
 
12
12
  # noinspection Metrics/ParameterLists
13
13
  def initialize(options = {
14
- build_number: ENV["BITRISE_BUILD_NUMBER"],
15
- token: ENV["BITRISE_TOKEN"],
16
- app_slug: ENV["BITRISE_APP_SLUG"],
17
- build_slug: ENV["BITRISE_BUILD_SLUG"]
14
+ build_number: ENV.fetch("BITRISE_BUILD_NUMBER", nil),
15
+ token: ENV.fetch("BITRISE_TOKEN", nil),
16
+ app_slug: ENV.fetch("BITRISE_APP_SLUG", nil),
17
+ build_slug: ENV.fetch("BITRISE_BUILD_SLUG", nil)
18
18
  },
19
19
  faraday = nil)
20
20
  @build_number = options[:build_number].to_i
@@ -42,7 +42,7 @@ module CiToolkit
42
42
  @connection.post("/#{API_VERSION}/apps/#{@app_slug}/builds", {
43
43
  hook_info: { type: "bitrise" },
44
44
  build_params: {
45
- branch: branch,
45
+ branch:,
46
46
  branch_dest: "develop",
47
47
  pull_request_id: pull_request,
48
48
  workflow_id: workflow,
@@ -63,7 +63,7 @@ module CiToolkit
63
63
 
64
64
  def find_pull_request_builds(pull_request, branch, commit = nil)
65
65
  response = @connection.get("/#{API_VERSION}/apps/#{@app_slug}/builds", {
66
- branch: branch,
66
+ branch:,
67
67
  pull_request_id: pull_request.to_i,
68
68
  status: 0 # status: 0 == not finished
69
69
  })
@@ -13,17 +13,17 @@ module CiToolkit
13
13
  :repository_slug
14
14
 
15
15
  def initialize(options = {
16
- build_number: ENV["BITRISE_BUILD_NUMBER"],
17
- build_url: ENV["BITRISE_BUILD_URL"],
18
- pull_request_number: ENV["BITRISE_PULL_REQUEST"],
16
+ build_number: ENV.fetch("BITRISE_BUILD_NUMBER", nil),
17
+ build_url: ENV.fetch("BITRISE_BUILD_URL", nil),
18
+ pull_request_number: ENV.fetch("BITRISE_PULL_REQUEST", nil),
19
19
  build_from_cron_job: !ENV["BITRISE_SCHEDULED_BUILD"].nil?,
20
20
  repository_owner: ENV["BITRISEIO_GIT_REPOSITORY_OWNER"] || "crvshlab",
21
- repository_slug: ENV["BITRISEIO_GIT_REPOSITORY_SLUG"],
22
- app_url: ENV["BITRISE_APP_URL"],
23
- app_slug: ENV["BITRISE_APP_SLUG"],
24
- git_branch: ENV["BITRISE_GIT_BRANCH"],
25
- git_commit: ENV["BITRISE_GIT_COMMIT"],
26
- api_token: ENV["BITRISE_TOKEN"]
21
+ repository_slug: ENV.fetch("BITRISEIO_GIT_REPOSITORY_SLUG", nil),
22
+ app_url: ENV.fetch("BITRISE_APP_URL", nil),
23
+ app_slug: ENV.fetch("BITRISE_APP_SLUG", nil),
24
+ git_branch: ENV.fetch("BITRISE_GIT_BRANCH", nil),
25
+ git_commit: ENV.fetch("BITRISE_GIT_COMMIT", nil),
26
+ api_token: ENV.fetch("BITRISE_TOKEN", nil)
27
27
  })
28
28
  @build_number = options[:build_number]
29
29
  @build_url = options[:build_url]
@@ -107,13 +107,13 @@ module CiToolkit
107
107
  # values for the two services are different
108
108
  # It uses the ENV["DVCS_SERVICE"] to decide which DVCS to use.
109
109
  class DvcsPrUtil
110
- def self.status_state_error(service = ENV["DVCS_SERVICE"])
110
+ def self.status_state_error(service = ENV.fetch("DVCS_SERVICE", nil))
111
111
  status = "error"
112
112
  status = "failed" if service == "gitlab"
113
113
  status
114
114
  end
115
115
 
116
- def self.status_state_pending(service = ENV["DVCS_SERVICE"])
116
+ def self.status_state_pending(service = ENV.fetch("DVCS_SERVICE", nil))
117
117
  status = "pending"
118
118
  status = "running" if service == "gitlab"
119
119
  status
@@ -12,7 +12,7 @@ module CiToolkit
12
12
  private_constant :SERVICES
13
13
 
14
14
  def self.create(bitrise_env = CiToolkit::BitriseEnv.new)
15
- service = ENV["DVCS_SERVICE"]
15
+ service = ENV.fetch("DVCS_SERVICE", nil)
16
16
  (SERVICES[service.to_s.downcase] || CiToolkit::DvcsPr).new bitrise_env
17
17
  end
18
18
  end
@@ -10,7 +10,8 @@ module CiToolkit
10
10
  class Credentials
11
11
  attr_reader :app_id
12
12
 
13
- def initialize(app_id = ENV["CRVSH_BOT_GITHUB_APP_ID"], private_key = ENV["CRVSH_BOT_GITHUB_APP_PRIVATE_KEY"])
13
+ def initialize(app_id = ENV.fetch("CRVSH_BOT_GITHUB_APP_ID", nil),
14
+ private_key = ENV.fetch("CRVSH_BOT_GITHUB_APP_PRIVATE_KEY", nil))
14
15
  @app_id = app_id.to_i
15
16
  @private_key = private_key
16
17
  end
@@ -71,7 +71,7 @@ module CiToolkit
71
71
  @repo_slug,
72
72
  @commit_sha,
73
73
  state,
74
- { context: context, target_url: target_url, description: description }
74
+ { context:, target_url:, description: }
75
75
  )
76
76
  end
77
77
 
@@ -12,8 +12,8 @@ module CiToolkit
12
12
  attr_reader :endpoint, :project_access_token
13
13
 
14
14
  def initialize(
15
- endpoint = ENV["GITLAB_API_URL"],
16
- project_access_token = ENV["GITLAB_PROJECT_ACCESS_TOKEN"]
15
+ endpoint = ENV.fetch("GITLAB_API_URL", nil),
16
+ project_access_token = ENV.fetch("GITLAB_PROJECT_ACCESS_TOKEN", nil)
17
17
  )
18
18
  @endpoint = endpoint
19
19
  @project_access_token = project_access_token
@@ -73,7 +73,7 @@ module CiToolkit
73
73
  @repo_slug,
74
74
  @commit_sha,
75
75
  state,
76
- { name: context, target_url: target_url, description: description }
76
+ { name: context, target_url:, description: }
77
77
  )
78
78
  end
79
79
 
@@ -23,10 +23,10 @@ module CiToolkit
23
23
  file_name:
24
24
  )
25
25
  release_details = {
26
- name: name,
27
- tag_name: tag_name,
26
+ name:,
27
+ tag_name:,
28
28
  ref: last_git_commit,
29
- description: description,
29
+ description:,
30
30
  assets: { links: [get_assets_details(project_id, tag_name, file_name)] }
31
31
  }
32
32
 
@@ -8,7 +8,7 @@ module CiToolkit
8
8
  def initialize(
9
9
  github_pr = CiToolkit::DvcsPrFactory.create(CiToolkit::BitriseEnv.new),
10
10
  git = CiToolkit::Git.new,
11
- ticket_regex_keys = ENV["SUPPORTED_JIRA_PROJECT_KEYS_REGEX"]
11
+ ticket_regex_keys = ENV.fetch("SUPPORTED_JIRA_PROJECT_KEYS_REGEX", nil)
12
12
  )
13
13
  @ticket_regex_keys = ticket_regex_keys
14
14
  @ticket = parse_ticket(github_pr.nil? ? "" : github_pr.title) || parse_ticket(git.nil? ? "" : git.branch)
@@ -13,8 +13,8 @@ module CiToolkit
13
13
  attr_reader :base_url, :access_token
14
14
 
15
15
  def initialize(
16
- base_url = ENV["SEETEST_BASE_URL"],
17
- access_token = ENV["SEETEST_ACCESS_TOKEN"]
16
+ base_url = ENV.fetch("SEETEST_BASE_URL", nil),
17
+ access_token = ENV.fetch("SEETEST_ACCESS_TOKEN", nil)
18
18
  )
19
19
  @base_url = base_url
20
20
  @access_token = access_token
@@ -27,7 +27,7 @@ module CiToolkit
27
27
  f.request :authorization, "Bearer", credentials.access_token
28
28
  f.request :multipart
29
29
  f.request :url_encoded
30
- f.response :json, parser_options: { object_class: OpenStruct }
30
+ f.response :json
31
31
  f.adapter :net_http # A MUST for file upload to work with Faraday::Multipart::FilePart
32
32
  end
33
33
  )
@@ -35,16 +35,16 @@ module CiToolkit
35
35
  ).body
36
36
 
37
37
  # Application already exists. Replace it.
38
- if response.status == SUCCESS && response.data.created == "false"
38
+ if response[:status] == SUCCESS && response[:data][:created] == "false"
39
39
  response = replace_existing_application(
40
- response.data.id,
40
+ response[:data][:id],
41
41
  project_name,
42
42
  unique_name,
43
43
  full_path_to_file,
44
44
  content_type
45
45
  )
46
46
  # Application with unique name already exist. Replace it.
47
- elsif response.status == ERROR && !response.data.nil? && !response.data.uniqueName.nil?
47
+ elsif response[:status] == ERROR && !response[:data].nil? && !response[:data][:uniqueName].nil?
48
48
  response = replace_existing_application_by_unique_name(
49
49
  project_name,
50
50
  unique_name,
@@ -53,12 +53,12 @@ module CiToolkit
53
53
  )
54
54
  end
55
55
 
56
- unless response.status == SUCCESS
56
+ unless response[:status] == SUCCESS
57
57
  raise StandardError,
58
- "Upload response from Seetest returned an error. Response body is: '#{response.marshal_dump}'"
58
+ "Upload response from Seetest returned an error. Response body is: '#{response}'"
59
59
  end
60
60
 
61
- response.status
61
+ response[:status]
62
62
  end
63
63
  # rubocop:enable Metrics/AbcSize Metrics/MethodLength
64
64
  # rubocop:enable Metrics/MethodLength
@@ -74,7 +74,7 @@ module CiToolkit
74
74
  )
75
75
  response = faraday_delete_application(application_id)
76
76
 
77
- if response.status == SUCCESS && response.code == OKAY
77
+ if response[:status] == SUCCESS && response[:code] == OKAY
78
78
  response = faraday_upload_file_with_error_handling(project_name, unique_name, full_path_to_file, content_type)
79
79
  end
80
80
  response
@@ -83,11 +83,11 @@ module CiToolkit
83
83
  def replace_existing_application_by_unique_name(project_name, unique_name, full_path_to_file, content_type)
84
84
  application_info_response = faraday_get_application_info(unique_name)
85
85
  application_info_response.each do |app_response|
86
- next unless app_response.uniqueName == unique_name
86
+ next unless app_response[:uniqueName] == unique_name
87
87
 
88
- response = replace_existing_application(app_response.id, project_name, unique_name, full_path_to_file,
88
+ response = replace_existing_application(app_response[:id], project_name, unique_name, full_path_to_file,
89
89
  content_type)
90
- return response if response.status == SUCCESS
90
+ return response if response[:status] == SUCCESS
91
91
  end
92
92
  end
93
93
 
@@ -98,9 +98,9 @@ module CiToolkit
98
98
  content_type
99
99
  )
100
100
  response = faraday_upload(project_name, unique_name, full_path_to_file, content_type).body
101
- unless response.status == SUCCESS && response.data.created == "true"
101
+ unless response[:status] == SUCCESS && response[:data][:created] == "true"
102
102
  raise StandardError,
103
- "Upload response from Seetest returned an error. Response body is: '#{response.marshal_dump}'"
103
+ "Upload response from Seetest returned an error. Response body is: '#{response}'"
104
104
  end
105
105
 
106
106
  response
@@ -114,7 +114,7 @@ module CiToolkit
114
114
  )
115
115
  file = Faraday::Multipart::FilePart.new(full_path_to_file, content_type)
116
116
  params = {
117
- file: file,
117
+ file:,
118
118
  uniqueName: unique_name,
119
119
  project: project_name
120
120
  }
@@ -126,7 +126,7 @@ module CiToolkit
126
126
  response = @faraday_conn.get("/api/#{API_VERSION}/applications", params).body
127
127
  if response.empty?
128
128
  raise StandardError,
129
- "Get application info for uniqueName: #{unique_name} from Seetest returned an error. "\
129
+ "Get application info for uniqueName: #{unique_name} from Seetest returned an error. " \
130
130
  "Response body is: '#{response}'"
131
131
  end
132
132
  response
@@ -134,10 +134,10 @@ module CiToolkit
134
134
 
135
135
  def faraday_delete_application(application_id)
136
136
  response = @faraday_conn.post("/api/#{API_VERSION}/applications/#{application_id}/delete").body
137
- unless response.status == SUCCESS && response.code == OKAY
137
+ unless response[:status] == SUCCESS && response[:code] == OKAY
138
138
  raise StandardError,
139
- "Delete application id: #{application_id} from Seetest returned an error. "\
140
- "Response body is: '#{response.marshal_dump}'"
139
+ "Delete application id: #{application_id} from Seetest returned an error. " \
140
+ "Response body is: '#{response}'"
141
141
  end
142
142
  response
143
143
  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.5.22
4
+ version: 1.5.23
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-04-19 00:00:00.000000000 Z
11
+ date: 2023-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -229,6 +229,7 @@ files:
229
229
  - Rakefile
230
230
  - bin/console
231
231
  - bin/setup
232
+ - ci_toolkit.gemspec
232
233
  - duplicate_files_whitelist.txt
233
234
  - lib/ci_toolkit.rb
234
235
  - lib/ci_toolkit/bitrise_client.rb
@@ -258,6 +259,7 @@ metadata:
258
259
  homepage_uri: https://github.com/crvshlab/ci_toolkit
259
260
  source_code_uri: https://github.com/crvshlab/ci_toolkit
260
261
  changelog_uri: https://github.com/crvshlab/ci_toolkit/CHANGELOG.md
262
+ rubygems_mfa_required: 'true'
261
263
  post_install_message:
262
264
  rdoc_options: []
263
265
  require_paths:
@@ -266,14 +268,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
266
268
  requirements:
267
269
  - - ">="
268
270
  - !ruby/object:Gem::Version
269
- version: 2.6.0
271
+ version: '3.2'
270
272
  required_rubygems_version: !ruby/object:Gem::Requirement
271
273
  requirements:
272
274
  - - ">="
273
275
  - !ruby/object:Gem::Version
274
276
  version: '0'
275
277
  requirements: []
276
- rubygems_version: 3.0.3.1
278
+ rubygems_version: 3.4.10
277
279
  signing_key:
278
280
  specification_version: 4
279
281
  summary: Set of CI utilities