renuo-cli 2.0.0 → 3.0.0

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: ea41f1e1409107f56612a86c5ffac9270043c1a26de29daacd897389d9aeb021
4
- data.tar.gz: 0402adae259c529bb4121c20bb58918ab94df544c5686980d7e789d50f606669
3
+ metadata.gz: ea4e597c6888d4eb5472df3d1fdc496afe3ff1ab16ce2ce9f20602da6c2ccc40
4
+ data.tar.gz: 3fef697d445ab64c2d62c4adf62d5c4718e56c2243b64237bc3f9cf8e1255b06
5
5
  SHA512:
6
- metadata.gz: c279530144b65ab0d43c65bbd14e3f983bb6479fa0c4b55b04b9b28938668086db8a5767a7eff1e4b7d7190e6b29093b8903ceb32ab3e879cda7290298171707
7
- data.tar.gz: 80a86bc7b74a850eac17a8ea94626eecd831c4a7e1010e4c2a167e12425c5a190a52978d0c7c95e7404de717040aa05ce8dbcad83cbb1dea2c45cfc6749acfaa
6
+ metadata.gz: 8f57de9f499fd37447d94675a063e3e2f6eb76d94b7d47c182048036faa92d91b89877beb579683717990f872caba2c4adfddcfc0adc23b79e5e5ff9351584c9
7
+ data.tar.gz: 28f034598160faef73f8ae55c26f7c3dae0a772e0500498881e56a3ce4d83e32cefecbdb63a18c3205e27f860c42ad79ae248650f071e38b1db98c41d14d9c03
data/.gitignore CHANGED
@@ -101,4 +101,3 @@ build/
101
101
  /pkg/
102
102
  /spec/reports/
103
103
  /tmp/
104
- .rubocop-https---raw-githubusercontent-com-renuo-applications-setup-guide-master-templates--rubocop-yml
@@ -15,7 +15,7 @@ class ConfigureSemaphore
15
15
  FileUtils.mkdir_p(%w[.semaphore .semaphore/bin])
16
16
 
17
17
  write_or_warn('.semaphore/semaphore.yml', render('templates/semaphore/semaphore.yml.erb'))
18
- %w[master develop testing].each do |environment|
18
+ %w[main develop testing].each do |environment|
19
19
  @environment = environment
20
20
  write_or_warn(".semaphore/#{environment}-deploy.yml", render('templates/semaphore/semaphore-deploy.yml.erb'))
21
21
  end
@@ -38,7 +38,7 @@ class ConfigureSemaphore
38
38
  def create_semaphore_notification
39
39
  system("sem create notifications #{project_name} "\
40
40
  "--projects #{project_name} "\
41
- '--branches "master,develop,testing" '\
41
+ '--branches "main,develop,testing" '\
42
42
  "--slack-channels \"#project-#{project_name}\" "\
43
43
  '--slack-endpoint "https://hooks.slack.com/services/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"')
44
44
  end
@@ -8,7 +8,7 @@ class CreateAwsProject
8
8
  end
9
9
 
10
10
  def run
11
- %w[master develop testing].each do |branch|
11
+ %w[main develop testing].each do |branch|
12
12
  print_setup_commands branch
13
13
  end
14
14
  end
@@ -46,7 +46,7 @@ class CreateAwsProject
46
46
  @cloudfront_alias = {}
47
47
  return unless agree('Would you like to use an alias to call your assets/images on S3? (Default: no)')
48
48
 
49
- %i[master develop testing].each do |branch|
49
+ %i[main develop testing].each do |branch|
50
50
  cloudfront_alias_for branch
51
51
  end
52
52
  end
@@ -78,7 +78,7 @@ class CreateAwsProject
78
78
  $terminal.wrap_at = nil if $terminal
79
79
  puts aws_iam_setup(@aws_profile, aws_user(branch), @aws_app_group)
80
80
  puts aws_s3_setup(@aws_profile, aws_user(branch), @aws_region, @redmine_project)
81
- puts aws_s3_versioning_setup(@aws_profile, aws_user(branch)) if branch == 'master'
81
+ puts aws_s3_versioning_setup(@aws_profile, aws_user(branch)) if branch == 'main'
82
82
  cloudfront_setup(aws_user(branch), branch)
83
83
  $terminal.wrap_at = :auto if $terminal
84
84
  end
@@ -1,15 +1,11 @@
1
- require 'commander'
2
- require_relative './environments'
3
- require_relative './fetch_emails'
4
-
5
1
  class CreateHerokuApp
6
2
  ADMIN_EMAIL = 'admin@renuo.ch'.freeze
7
3
 
8
4
  def initialize; end
9
5
 
10
- def run(args)
6
+ def run(*args)
11
7
  project_name = args[0]
12
- abort('>> No project name given.') unless project_name
8
+ abort('>> Project name must be between 2 and 22 characters.') unless project_name&.length&.between?(2, 22)
13
9
  emails = FetchEmails.new.fetch_emails
14
10
 
15
11
  say "# Commands to setup your Heroku application\n".colorize :green
@@ -25,6 +21,7 @@ class CreateHerokuApp
25
21
  heroku_name = "#{project_name}-#{env}"
26
22
  say "heroku apps:create --region eu #{heroku_name}"
27
23
  say "heroku domains:add #{heroku_name}.renuoapp.ch --app #{heroku_name}"
24
+ say "heroku domains:add #{project_name}-#{MASTER}.renuoapp.ch --app #{heroku_name}" if env == MAIN
28
25
  say "heroku addons:create heroku-postgresql --app #{heroku_name}"
29
26
  say "heroku addons:create papertrail --app #{heroku_name}"
30
27
  say "heroku labs:enable runtime-dyno-metadata --app #{heroku_name}"
@@ -33,7 +30,7 @@ class CreateHerokuApp
33
30
  end
34
31
 
35
32
  def print_pipelines_commands(project_name)
36
- say "heroku pipelines:create #{project_name} --app #{project_name}-#{MASTER} -s production"
33
+ say "heroku pipelines:create #{project_name} --app #{project_name}-#{MAIN} -s production"
37
34
  say "heroku pipelines:add #{project_name} --app #{project_name}-#{DEVELOP} -s staging"
38
35
  say "heroku pipelines:add #{project_name} --app #{project_name}-#{TESTING} -s staging"
39
36
  say "\n"
@@ -1,4 +1,5 @@
1
+ MAIN = 'main'.freeze
1
2
  MASTER = 'master'.freeze
2
3
  DEVELOP = 'develop'.freeze
3
4
  TESTING = 'testing'.freeze
4
- ENVIRONMENTS = [MASTER, DEVELOP, TESTING].freeze
5
+ ENVIRONMENTS = [MAIN, DEVELOP, TESTING].freeze
@@ -8,8 +8,8 @@ class ReleaseProject
8
8
  validate_project_name
9
9
  validate_update_type
10
10
  validate_custom_version_format
11
- compare_develop_master
12
11
  checkout_project
12
+ compare_develop_main
13
13
  @version ||= calculate_version
14
14
  release
15
15
  ensure
@@ -49,22 +49,29 @@ class ReleaseProject
49
49
  abort('>> Invalid Version Number. Use format X.Y.Z for your version.')
50
50
  end
51
51
 
52
- def compare_develop_master
52
+ def compare_develop_main
53
53
  puts 'Please double-check what is going to be deployed.'
54
54
  open_comparison_page
55
55
  abort unless agree('Are you fine with those changes?')
56
56
  end
57
57
 
58
58
  def open_comparison_page
59
- system "open https://github.com/#{@project_name}/compare/master...develop"
59
+ system_command = case RbConfig::CONFIG['host_os']
60
+ when /mswin|mingw|cygwin/
61
+ 'start'
62
+ when /darwin/
63
+ 'open'
64
+ when /linux|bsd/
65
+ 'xdg-open'
66
+ end
67
+ system "#{system_command} https://github.com/#{@project_name}/compare/#{main_branch}...develop"
60
68
  end
61
69
 
62
70
  def checkout_project
63
- unless system("#{MOVE_TO_TMP_FOLDER} && gh repo clone #{@project_name} && " \
64
- "cd #{folder_name} && git checkout master && git pull origin master &&" \
65
- 'git checkout develop && git pull origin develop && git flow init -d')
66
- abort('>> Project not found on Github.')
67
- end
71
+ abort('>> Project not found on Github.') unless system("#{MOVE_TO_TMP_FOLDER} && gh repo clone #{@project_name}")
72
+
73
+ system(cmd_in_folder("git checkout #{main_branch} && git pull origin #{main_branch} &&" \
74
+ 'git checkout develop && git pull origin develop && git flow init -d'))
68
75
  end
69
76
 
70
77
  def calculate_version
@@ -78,7 +85,7 @@ class ReleaseProject
78
85
  if finish_release_branch
79
86
  puts ">> Project successfully released with version #{@version}."
80
87
  else
81
- abort('>> Unable to finish release and push to master. Cancelling release.')
88
+ abort(">> Unable to finish release and push to #{main_branch}. Cancelling release.")
82
89
  end
83
90
  end
84
91
 
@@ -135,7 +142,7 @@ class ReleaseProject
135
142
  def finish_release_branch
136
143
  system(cmd_in_folder("GIT_MERGE_AUTOEDIT=no git flow release finish -m #{@version} #{@version} && " \
137
144
  'git checkout develop && git push origin develop && ' \
138
- 'git checkout master && git push origin master --tags'))
145
+ "git checkout #{main_branch} && git push origin #{main_branch} --tags"))
139
146
  end
140
147
 
141
148
  def ask_for_final_confirmation
@@ -167,4 +174,8 @@ class ReleaseProject
167
174
  def cleanup
168
175
  system("rm -rf #{TMP_FOLDER_NAME}")
169
176
  end
177
+
178
+ def main_branch
179
+ @main_branch ||= system(cmd_in_folder('git checkout main && git show-ref refs/heads/main')) ? 'main' : 'master'
180
+ end
170
181
  end
@@ -5,22 +5,22 @@ do
5
5
  case $cache_group in
6
6
 
7
7
  rails)
8
- cache restore nvm-$SEMAPHORE_GIT_BRANCH-$(checksum .nvmrc),nvm-$SEMAPHORE_GIT_BRANCH,nvm-develop,nvm-master
9
- cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock),gems-$SEMAPHORE_GIT_BRANCH,gems-develop,gems-master
10
- cache restore yarn-cache-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock),yarn-cache-$SEMAPHORE_GIT_BRANCH,yarn-cache-develop,yarn-cache-master
11
- cache restore node-modules-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock),node-modules-$SEMAPHORE_GIT_BRANCH,node-modules-develop,node-modules-master
8
+ cache restore nvm-$SEMAPHORE_GIT_BRANCH-$(checksum .nvmrc),nvm-$SEMAPHORE_GIT_BRANCH,nvm-develop,nvm-main
9
+ cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock),gems-$SEMAPHORE_GIT_BRANCH,gems-develop,gems-main
10
+ cache restore yarn-cache-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock),yarn-cache-$SEMAPHORE_GIT_BRANCH,yarn-cache-develop,yarn-cache-main
11
+ cache restore node-modules-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock),node-modules-$SEMAPHORE_GIT_BRANCH,node-modules-develop,node-modules-main
12
12
  ;;
13
13
 
14
14
  python)
15
- cache restore requirements-$SEMAPHORE_GIT_BRANCH-$(checksum requirements.txt),requirements-$SEMAPHORE_GIT_BRANCH,requirements-develop,requirements-master
15
+ cache restore requirements-$SEMAPHORE_GIT_BRANCH-$(checksum requirements.txt),requirements-$SEMAPHORE_GIT_BRANCH,requirements-develop,requirements-main
16
16
  ;;
17
17
 
18
18
  assets)
19
- cache restore packs-$SEMAPHORE_GIT_BRANCH,packs-develop,packs-master
20
- cache restore packstest-$SEMAPHORE_GIT_BRANCH,packstest-develop,packstest-master
21
- cache restore assets-$SEMAPHORE_GIT_BRANCH,assets-develop,assets-master
22
- cache restore sprocketscache-$SEMAPHORE_GIT_BRANCH,sprocketscache-develop,sprocketscache-master
23
- cache restore webpackercache-$SEMAPHORE_GIT_BRANCH,webpackercache-develop,webpackercache-master
19
+ cache restore packs-$SEMAPHORE_GIT_BRANCH,packs-develop,packs-main
20
+ cache restore packstest-$SEMAPHORE_GIT_BRANCH,packstest-develop,packstest-main
21
+ cache restore assets-$SEMAPHORE_GIT_BRANCH,assets-develop,assets-main
22
+ cache restore sprocketscache-$SEMAPHORE_GIT_BRANCH,sprocketscache-develop,sprocketscache-main
23
+ cache restore webpackercache-$SEMAPHORE_GIT_BRANCH,webpackercache-develop,webpackercache-main
24
24
  ;;
25
25
 
26
26
  *)
@@ -22,5 +22,6 @@ blocks:
22
22
  - ssh-add ~/.ssh/id_rsa_semaphore_heroku
23
23
  - git config --global url.ssh://git@heroku.com/.insteadOf https://git.heroku.com/
24
24
  - git remote add heroku $HEROKU_REMOTE
25
- - git push heroku -f $SEMAPHORE_GIT_BRANCH:master
25
+ - git push heroku -f $SEMAPHORE_GIT_BRANCH:main
26
26
  - heroku run -x rails db:migrate
27
+ - heroku dyno:restart
@@ -9,7 +9,7 @@ auto_cancel:
9
9
  when: "true"
10
10
  fail_fast:
11
11
  cancel:
12
- when: "branch != 'master'"
12
+ when: "branch != 'main'"
13
13
 
14
14
  blocks:
15
15
  - name: cache
@@ -23,6 +23,7 @@ blocks:
23
23
  - name: cache
24
24
  commands:
25
25
  - checkout --use-cache
26
+ - gem update --system --no-document
26
27
  - source .semaphore/bin/cache_restore rails
27
28
  - bundle config set deployment 'true'
28
29
  - bundle config set path 'vendor/bundle'
@@ -43,14 +44,26 @@ blocks:
43
44
  prologue:
44
45
  commands:
45
46
  - checkout --use-cache
47
+ - gem update --system --no-document
46
48
  - source .semaphore/bin/cache_restore rails
47
- - bundle install --deployment --path vendor/bundle
49
+ - bundle config set deployment 'true'
50
+ - bundle config set path 'vendor/bundle'
51
+ - bundle install -j 4
48
52
  - nvm install
49
53
  - bin/yarn install --cache-folder ~/.cache/yarn
50
54
  jobs:
51
55
  - name: linting
52
56
  commands:
53
57
  - bin/fastcheck
58
+ epilogue:
59
+ on_fail:
60
+ commands:
61
+ - mkdir -p log
62
+ - mkdir -p tmp/screenshots
63
+ - mkdir -p coverage
64
+ - artifact push job --expire-in 2w log
65
+ - artifact push job --expire-in 2w tmp/screenshots
66
+ - artifact push job --expire-in 2w coverage
54
67
  - name: tests
55
68
  execution_time_limit:
56
69
  minutes: 10
@@ -66,8 +79,11 @@ blocks:
66
79
  prologue:
67
80
  commands:
68
81
  - checkout --use-cache
82
+ - gem update --system --no-document
69
83
  - source .semaphore/bin/cache_restore rails
70
- - bundle install --deployment --path vendor/bundle
84
+ - bundle config set deployment 'true'
85
+ - bundle config set path 'vendor/bundle'
86
+ - bundle install -j 4
71
87
  - nvm install
72
88
  - bin/yarn install --cache-folder ~/.cache/yarn
73
89
  - sem-service start postgres
@@ -81,10 +97,10 @@ promotions:
81
97
  pipeline_file: develop-deploy.yml
82
98
  auto_promote:
83
99
  when: "result = 'passed' and branch = 'develop'"
84
- - name: master
85
- pipeline_file: master-deploy.yml
100
+ - name: main
101
+ pipeline_file: main-deploy.yml
86
102
  auto_promote:
87
- when: "result = 'passed' and branch = 'master'"
103
+ when: "result = 'passed' and branch = 'main'"
88
104
  - name: testing
89
105
  pipeline_file: testing-deploy.yml
90
106
  auto_promote:
@@ -1,6 +1,6 @@
1
1
  module Renuo
2
2
  module Cli
3
- VERSION = '2.0.0'.freeze
3
+ VERSION = '3.0.0'.freeze
4
4
  NAME = 'renuo-cli'.freeze
5
5
  end
6
6
  end
data/lib/renuo/cli.rb CHANGED
@@ -38,7 +38,6 @@ module Renuo
38
38
  abort 'Nice! I updated myself. 🤩 Now you can run the command again.'
39
39
  end
40
40
  abort('Good. Just do it yourself then...😒')
41
- exit
42
41
  end
43
42
 
44
43
  command 'display-name'.to_sym do |c|
@@ -121,10 +120,10 @@ module Renuo
121
120
  - whether you want to setup CloudFront to deliver assets via S3
122
121
 
123
122
  The generated commands do the following:
124
- - create an IAM user for each environment (master, develop, testing) and add it to the renuo apps group.
123
+ - create an IAM user for each environment (main, develop, testing) and add it to the renuo apps group.
125
124
  - create S3 buckets for each user who owns it
126
125
  - tag the buckets
127
- - enable versioning for master buckets
126
+ - enable versioning for main buckets
128
127
  (- set up a CloudFront distribution for each environment with the default config or plus alias if configured)
129
128
  DESCRIPTION
130
129
  c.example 'Setup a project (you will be asked for details)', 'renuo create-aws-project'
@@ -148,8 +147,8 @@ module Renuo
148
147
 
149
148
  command 'release' do |c|
150
149
  c.syntax = 'renuo release'
151
- c.summary = 'Release a projects state of develop (on github) to master in one command.'
152
- c.description = 'Creates a new release version of a project on master as either a Major, Minor, '\
150
+ c.summary = 'Release a projects state of develop (on github) to main in one command.'
151
+ c.description = 'Creates a new release version of a project on main as either a Major, Minor, '\
153
152
  'Patch or Custom release based on the current state of develop on Github'
154
153
  c.example 'renuo release my-project minor', 'release a minor release of my-project'
155
154
  c.example 'renuo release my-project custom 2.5.0', 'release my-project as release 2.5.0'
data/renuo-cli.gemspec CHANGED
@@ -28,6 +28,7 @@ Gem::Specification.new do |spec|
28
28
 
29
29
  spec.add_development_dependency 'aruba', '~> 0.14.5'
30
30
  spec.add_development_dependency 'bundler', '~> 2.0'
31
+ spec.add_development_dependency 'byebug'
31
32
  spec.add_development_dependency 'cucumber', '~> 3.1'
32
33
  spec.add_development_dependency 'dotenv', '~> 2.7.2'
33
34
  spec.add_development_dependency 'mdl', '~> 0.4.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: renuo-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Renuo AG
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-01 00:00:00.000000000 Z
11
+ date: 2022-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeresource
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '2.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: byebug
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: cucumber
127
141
  requirement: !ruby/object:Gem::Requirement