gct 0.5.5 → 0.5.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 95e191b1ed5ae2ce3b7cb3c7801ed0902d300ee77a19cfcc1ce455630a1f47b8
4
- data.tar.gz: 4c6d74e11b168ebe5a5629ff6ea647f23fb7c28a26442224ef05c27e3b83e7d6
3
+ metadata.gz: 4e318b5c37b33f5817c365674563b449e2621357cc69f89baf3d4e4e32938d62
4
+ data.tar.gz: 205fe7fae1b93d40edb9ca032f3e39cf5f616351e2ea84df7bef4f246bbc882d
5
5
  SHA512:
6
- metadata.gz: 3049ea6bc870721c728a226f8e07465ffe7b7d919a9a2aa1cfeab750d7f6aabf0eb6fd38a9b630962988a7acdb0beb0c973d90319d50ca7818ca16fb12deb351
7
- data.tar.gz: ab44e1b3569ec632f1da15c3d904eff2f50eab20104ac1219d6665e322d91fae4ac828e7331d21f149a10c376dcebdc164d915be7682e8bf49c7a3d746bb38aa
6
+ metadata.gz: 91b755107f0c6e1c72d1b6d00318e20b6b0af5dd85f1a1e8216f6c8b242921f107b1b0979aad893d95c09ba0883aef86f7aca8ef7a2e3bfeb4f4660cf783e634
7
+ data.tar.gz: 413d382f1fd3c33c1fa753011f484105123028440ac91af06427466c975636cf069103854fa82970418c7f5dbdb32c4433cd59d95aa93eb43c90979b0def09c1
@@ -94,8 +94,8 @@ module Gct
94
94
  end
95
95
 
96
96
  def auto_add_tag(tag)
97
- puts "current tag = #{tag}"
98
97
  tag_points = tag.to_s.split('.')
98
+ raise "tag is nil" if tag_points.length <= 0
99
99
  index = tag_points.length - 1
100
100
  need_add_point = tag_points[index].to_i + 1
101
101
  tag_points[index] = need_add_point == 10 ? 0 : need_add_point
@@ -74,11 +74,6 @@ module Gct
74
74
  raise "#{@project_name} #{@version} 版本已经打完tag了!!!".red
75
75
  end
76
76
  else
77
- keys = "(version, name, branch" + (@pre ? ", is_pre)" : ")")
78
- values = "('#{@version}', '#{@project_name}', '#{@branch}'" + (@pre ? ", 1)" : ")")
79
- db = Database::Data.new
80
- sql = "insert into project #{keys} values #{values}"
81
- res = db.query(sql)
82
77
  untagged_specs = analyze_dependencies
83
78
  priority_rank(untagged_specs)
84
79
  create_tag_by_priority()
@@ -115,7 +110,16 @@ module Gct
115
110
  raise "没有需要打tag的库".red if untagged_git_dependencies.count == 0
116
111
 
117
112
  spec_files = Parallel.map(untagged_git_dependencies, in_threads: 1) do |dep|
118
- project_name = "#{Constant.NameSpace}#{dep.name}"
113
+ # 取出组名
114
+ source = dep.external_source[:git]
115
+ left1 = "https://gi-dev.ccrgt.com/"
116
+ left2 = "http://gi-dev.ccrgt.com/"
117
+ right = "/"
118
+ source_regex = /(?<=#{left1}|#{left2}).*(?=#{right})/
119
+ group_name = source_regex.match(source).to_s
120
+ raise "gitlab中找不到#{dep.name}所在的group".red if group_name.nil? || group_name.empty?
121
+
122
+ project_name = "#{group_name}/#{dep.name}"
119
123
  branch = Constant.DefaultTagFromBranch
120
124
  if @pre
121
125
  branch = Constant.PreTagFromBranch
@@ -246,7 +250,9 @@ module Gct
246
250
  end
247
251
  end
248
252
  end
249
-
253
+ # 写入project
254
+ write_project
255
+ # 写入tag
250
256
  values = ""
251
257
  temp_spec_map.each do |key, value|
252
258
  values.concat("('#{@version}', '#{key}', '#{@project_name}', '#{value.tag}', '#{value.status}', #{value.priority}" + (@pre ? ", 1)," : "),"))
@@ -258,6 +264,14 @@ module Gct
258
264
  db.query(sql)
259
265
  end
260
266
 
267
+ def write_project
268
+ keys = "(version, name, branch" + (@pre ? ", is_pre)" : ")")
269
+ values = "('#{@version}', '#{@project_name}', '#{@branch}'" + (@pre ? ", 1)" : ")")
270
+ db = Database::Data.new
271
+ sql = "insert into project #{keys} values #{values}"
272
+ res = db.query(sql)
273
+ end
274
+
261
275
  # 按优先级打tag, 触发第一个优先级,其他的上一优先级打完之后自动触发
262
276
  def create_tag_by_priority()
263
277
  db = Database::Data.new
@@ -272,11 +286,8 @@ module Gct
272
286
  if row["tag_status"].eql?(SpecPublishStatus::WAITING) || row["tag_status"].eql?(SpecPublishStatus::CANCELED) || row["tag_status"].eql?(SpecPublishStatus::FAILED)
273
287
  status = SpecPublishStatus::PENDING
274
288
  name = row["pod_name"]
275
- puts "pod name is " + name
276
289
  vals.concat("when pod_name = '#{name}' then '#{status}' ")
277
- puts vals
278
290
  ins.concat("'#{name}',")
279
- puts ins
280
291
  system "gct update dependency #{name} tag_status #{status}"
281
292
  skip_tag = ""
282
293
  if row["is_tag"].to_i == 1
@@ -21,7 +21,7 @@ module Gct
21
21
 
22
22
  def run
23
23
  puts "init ci".green
24
- cp_path = Pathname.new(__FILE__).parent + 'gitlab-ci.rb'
24
+ cp_path = Pathname.new(__FILE__).parent + 'ios-ci.rb'
25
25
  system "cp #{cp_path} .gitlab-ci.yml"
26
26
  end
27
27
  end
@@ -0,0 +1,29 @@
1
+ stages:
2
+ - push
3
+ - failure
4
+
5
+ push_pod:
6
+ stage: push
7
+ script:
8
+ - echo "开始lint 和 push podspec"
9
+ - gct update dependency $CI_PROJECT_NAME "tag_status" "deploying"
10
+ - gct clean lint $CI_PROJECT_NAME
11
+ - gct repo update
12
+ - gct repo push $CI_PROJECT_NAME
13
+ - gct update dependency $CI_PROJECT_NAME "tag_version" $CI_COMMIT_REF_NAME
14
+ - gct update next
15
+ only:
16
+ - tags
17
+ tags:
18
+ - ios-third
19
+
20
+ on_failure:
21
+ stage: failure
22
+ script:
23
+ - gct robot finish false
24
+ - gct update dependency $CI_PROJECT_NAME "tag_status" "failed"
25
+ when: on_failure
26
+ only:
27
+ - tags
28
+ tags:
29
+ - ios-third
@@ -28,7 +28,17 @@ module Gct
28
28
  end
29
29
 
30
30
  def run
31
- message = " <font color=\"info\">podfile 更新完毕</font>"
31
+ db = Database::Data.new
32
+ sql = "select * from project where is_done = 1 order by create_time DESC limit 1"
33
+ res = db.query(sql)
34
+ message = "<font color=\"info\">podfile 更新完毕</font>"
35
+ if !res.nil? && res.count > 0
36
+ res.each do |row|
37
+ branch = row["branch"]
38
+ message = "<font color=\"info\">#{branch} podfile 更新完毕</font>"
39
+ end
40
+ end
41
+
32
42
  content = "#{message}"
33
43
  robot_send(content)
34
44
  end
@@ -37,7 +37,7 @@ module Gct
37
37
  if @name.nil?
38
38
  @name = @spec.name
39
39
  end
40
- @project_id = "#{Constant.NameSpace}#{@name}"
40
+ @project_id = "#{@group_name}/#{@name}"
41
41
  super
42
42
  end
43
43
 
@@ -80,7 +80,7 @@ module Gct
80
80
 
81
81
  def check_ci
82
82
  is_exist_ci = false
83
- res = Gitlab.tree("#{Constant.NameSpace}#{@name}")
83
+ res = Gitlab.tree("#{@group_name}/#{@name}")
84
84
  res.each do |g|
85
85
  if g["name"].eql?('.gitlab-ci.yml')
86
86
  is_exist_ci = true
@@ -94,10 +94,10 @@ module Gct
94
94
  puts "正在检查CI文件".green
95
95
  temp_local_file = TempLocalFile.new()
96
96
  path = File.expand_path("../../init", __FILE__)
97
- ci_content = temp_local_file.read_path_file(path, "gitlab-ci.rb")
97
+ ci_content = temp_local_file.read_path_file(path, "#{@group_name}-ci.rb")
98
98
  if check_ci
99
99
  # 检查 ci 文件是否有变化
100
- remote_content = file_contents("#{Constant.NameSpace}#{@name}", '.gitlab-ci.yml', @update_version_branch)
100
+ remote_content = file_contents("#{@group_name}/#{@name}", '.gitlab-ci.yml', @update_version_branch)
101
101
  remote_content.force_encoding('UTF-8')
102
102
  strip_remote_content = remote_content.gsub(/\s/,'')
103
103
  ci_content.force_encoding('UTF-8')
@@ -139,6 +139,14 @@ module Gct
139
139
  raise "在 #{Dir.pwd} 目录下找不到podspec文件".red if spec_file.nil?
140
140
  end
141
141
  @spec = Pod::Specification.from_file(full_path)
142
+ # 取出组名
143
+ source = @spec.source[:git]
144
+ left1 = "https://gi-dev.ccrgt.com/"
145
+ left2 = "http://gi-dev.ccrgt.com/"
146
+ right = "/"
147
+ source_regex = /(?<=#{left1}|#{left2}).*(?=#{right})/
148
+ @group_name = source_regex.match(source).to_s
149
+ raise "gitlab中找不到#{@spec.name}所在的group".red if @group_name.nil? || @group_name.empty?
142
150
  spec_file
143
151
  end
144
152
 
@@ -147,7 +155,7 @@ module Gct
147
155
  podspec_content = file_contents(@project_id, @file, @update_version_branch)
148
156
  version_regex = /.*version.*/
149
157
  version_match = version_regex.match(podspec_content).to_s
150
- tag_regex = /(?<=')\w.*(?=')/
158
+ tag_regex = /(?<="|')\w.*(?="|')/
151
159
  tag = tag_regex.match(version_match)
152
160
  @now_tag = tag
153
161
  @new_tag = @tag || auto_add_tag(tag.to_s)
@@ -173,13 +181,13 @@ module Gct
173
181
 
174
182
  def mr_to_master
175
183
  puts "正在创建MR请求将#{@update_version_branch}分支合并到#{@update_to_branch}分支!".green
176
- mr = Gitlab.create_merge_request("#{Constant.NameSpace}#{@name}", "mr", { source_branch: "#{@update_version_branch}", target_branch: "#{@update_to_branch}" })
184
+ mr = Gitlab.create_merge_request("#{@group_name}/#{@name}", "mr", { source_branch: "#{@update_version_branch}", target_branch: "#{@update_to_branch}" })
177
185
  @id = mr.iid
178
186
  puts mr.merge_status
179
187
  isEmptyMR = mr.diff_refs.base_sha.eql?(mr.diff_refs.head_sha)
180
188
  close_mr if isEmptyMR
181
189
  if mr.merge_status == 'cannot_be_merged' && !isEmptyMR
182
- raise "Merge有冲突,请前往 https://gi-dev.ccrgt.com/#{Constant.NameSpace}#{@name}/merge_requests/#{@id} 解决".red
190
+ raise "Merge有冲突,请前往 https://gi-dev.ccrgt.com/#{@group_name}/#{@name}/merge_requests/#{@id} 解决".red
183
191
  end
184
192
  isEmptyMR
185
193
  end
@@ -2,5 +2,5 @@ module Gct
2
2
  # freeze 冻结对象,将对象变成一个常量
3
3
  # unless 右边的代码块成立,才会运行左边的代码块
4
4
  # defined? 是用来判断本地变量是否存在,也可用来判断是否存在方法
5
- VERSION = "0.5.5".freeze unless defined? Gct::VERSION
5
+ VERSION = "0.5.6".freeze unless defined? Gct::VERSION
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - jieming
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-25 00:00:00.000000000 Z
11
+ date: 2020-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -176,7 +176,8 @@ files:
176
176
  - lib/gct/command/create/third.rb
177
177
  - lib/gct/command/init.rb
178
178
  - lib/gct/command/init/ci.rb
179
- - lib/gct/command/init/gitlab-ci.rb
179
+ - lib/gct/command/init/ios-ci.rb
180
+ - lib/gct/command/init/ios-thirdpart-ci.rb
180
181
  - lib/gct/command/init/unit.rb
181
182
  - lib/gct/command/op.rb
182
183
  - lib/gct/command/op/gems.rb