rake_fly 1.15.0 → 2.2.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +71 -22
  3. data/Rakefile +31 -5
  4. data/lib/rake_fly/task_sets/pipeline.rb +16 -15
  5. data/lib/rake_fly/tasks.rb +5 -4
  6. data/lib/rake_fly/tasks/authentication/login.rb +72 -0
  7. data/lib/rake_fly/tasks/pipeline/get.rb +33 -0
  8. data/lib/rake_fly/tasks/pipeline/push.rb +35 -0
  9. data/lib/rake_fly/tasks/pipeline/set.rb +44 -0
  10. data/lib/rake_fly/tasks/pipeline/unpause.rb +35 -0
  11. data/lib/rake_fly/version.rb +1 -1
  12. metadata +89 -46
  13. data/.circleci/config.yml +0 -56
  14. data/.circleci/gpg.private.enc +0 -0
  15. data/.envrc +0 -5
  16. data/.git-crypt/.gitattributes +0 -4
  17. data/.git-crypt/keys/default/0/41D2606F66C3FF28874362B61A16916844CE9D82.gpg +0 -0
  18. data/.git-crypt/keys/default/0/AAE932B730C2BA697FFDFAE05DA390873E38358B.gpg +0 -0
  19. data/.gitattributes +0 -1
  20. data/.gitignore +0 -32
  21. data/.rspec +0 -2
  22. data/.ruby-version +0 -1
  23. data/config/secrets/.unlocked +0 -1
  24. data/config/secrets/ci/encryption.passphrase +0 -1
  25. data/config/secrets/ci/gpg.private +0 -58
  26. data/config/secrets/ci/gpg.public +0 -31
  27. data/config/secrets/ci/ssh.private +0 -51
  28. data/config/secrets/ci/ssh.public +0 -1
  29. data/config/secrets/circle_ci/config.yaml +0 -2
  30. data/config/secrets/github/config.yaml +0 -2
  31. data/config/secrets/rubygems/credentials +0 -2
  32. data/go +0 -56
  33. data/lib/rake_fly/tasks/get_pipeline.rb +0 -31
  34. data/lib/rake_fly/tasks/push_pipeline.rb +0 -34
  35. data/lib/rake_fly/tasks/set_pipeline.rb +0 -42
  36. data/lib/rake_fly/tasks/unpause_pipeline.rb +0 -33
  37. data/rake_fly.gemspec +0 -43
  38. data/scripts/ci/common/configure-git.sh +0 -8
  39. data/scripts/ci/common/configure-rubygems.sh +0 -16
  40. data/scripts/ci/common/install-git-crypt.sh +0 -8
  41. data/scripts/ci/common/install-gpg-key.sh +0 -19
  42. data/scripts/ci/steps/prerelease.sh +0 -16
  43. data/scripts/ci/steps/release.sh +0 -18
  44. data/scripts/ci/steps/test.sh +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2b06d258a48bb2875556bec125400538920c1edf9e23e4a6718bfb7c689bb51
4
- data.tar.gz: 1b30f8b6e7bf9fca9bacb5ea67f3631da5308ee39c4478050fe1fbbc7db92399
3
+ metadata.gz: 82c67ea906461f3be457e179bc40ff830f143dd4c3c9e7de817704c5919f26db
4
+ data.tar.gz: 66000a2e914938cd6aa9124353150c1ee3a05479de15d514569255818700e9b2
5
5
  SHA512:
6
- metadata.gz: c2b733df686d0fcd146e3b9b1245a4857a2a6842ff9c4ecfba6068752534d7724bb485b9f5546e201610885a70a28c953bf35c0ad6e8d46dec254a20f49ba3fc
7
- data.tar.gz: 53e2230726f9575ebdef96e96524d172edaba94e76ac038f7349c29eeaa946d0d8b6d6022ed15eaebf35f5001e32a48e95c72ce06e1fb3e5e03cdf900e9be0fe
6
+ metadata.gz: d9b11f89a341914b885d53043270b62532efd6c3d65f5655e37f1e01d70ff6bdf5db0316067bde44323e85136c4616671d0982e48f3f5a1451e0fa8cf461abff
7
+ data.tar.gz: bb817431a4713fc705e2f75e86e52bfbab3d26c6d28e56e8ef811cb8a08342423eec7563af14fdb32f93e42e7d1eb90860be1db317f99fd73f6af89f12c24138
@@ -1,10 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rake_fly (1.15.0)
4
+ rake_fly (2.2.0.pre.1)
5
+ concourse.rb (= 0.3.0.pre.1)
5
6
  rake_dependencies (~> 2, < 3)
6
- rake_factory (>= 0.23, < 1)
7
- ruby_fly (>= 0.19)
7
+ rake_factory (>= 0.29, < 1)
8
+ ruby_fly (>= 0.23)
8
9
  semantic (~> 1.6.1)
9
10
 
10
11
  GEM
@@ -19,50 +20,92 @@ GEM
19
20
  addressable (2.7.0)
20
21
  public_suffix (>= 2.0.2, < 5.0)
21
22
  colored2 (3.1.2)
23
+ concourse.rb (0.3.0.pre.1)
24
+ dry-schema (~> 0.5)
25
+ excon (~> 0.72)
26
+ semantic (~> 1.5)
22
27
  concurrent-ruby (1.1.7)
23
28
  diff-lcs (1.4.4)
24
29
  docile (1.3.4)
30
+ dry-configurable (0.12.0)
31
+ concurrent-ruby (~> 1.0)
32
+ dry-core (~> 0.5, >= 0.5.0)
33
+ dry-container (0.7.2)
34
+ concurrent-ruby (~> 1.0)
35
+ dry-configurable (~> 0.1, >= 0.1.3)
36
+ dry-core (0.5.0)
37
+ concurrent-ruby (~> 1.0)
38
+ dry-equalizer (0.3.0)
39
+ dry-inflector (0.2.0)
40
+ dry-initializer (3.0.4)
41
+ dry-logic (1.1.0)
42
+ concurrent-ruby (~> 1.0)
43
+ dry-core (~> 0.5, >= 0.5)
44
+ dry-schema (0.6.0)
45
+ concurrent-ruby (~> 1.0)
46
+ dry-configurable (~> 0.8, >= 0.8.0)
47
+ dry-core (~> 0.4)
48
+ dry-equalizer (~> 0.2)
49
+ dry-initializer (~> 3.0)
50
+ dry-logic (~> 1.0)
51
+ dry-types (~> 1.0)
52
+ dry-types (1.4.0)
53
+ concurrent-ruby (~> 1.0)
54
+ dry-container (~> 0.3)
55
+ dry-core (~> 0.4, >= 0.4.4)
56
+ dry-equalizer (~> 0.3)
57
+ dry-inflector (~> 0.1, >= 0.1.2)
58
+ dry-logic (~> 1.0, >= 1.0.2)
25
59
  excon (0.78.1)
26
60
  fakefs (0.20.1)
27
- faraday (1.2.0)
61
+ faker (2.15.1)
62
+ i18n (>= 1.6, < 2)
63
+ faraday (1.3.0)
64
+ faraday-net_http (~> 1.0)
28
65
  multipart-post (>= 1.2, < 3)
29
66
  ruby2_keywords
67
+ faraday-net_http (1.0.0)
30
68
  gem-release (2.2.0)
31
69
  hamster (3.0.0)
32
70
  concurrent-ruby (~> 1.0)
33
- i18n (1.8.5)
71
+ i18n (1.8.7)
34
72
  concurrent-ruby (~> 1.0)
35
- lino (1.5.0)
73
+ jwt (2.2.2)
74
+ lino (1.7.0)
36
75
  hamster (~> 3.0)
37
76
  open4 (~> 1.3)
38
77
  minitar (0.9)
39
78
  minitest (5.14.2)
40
79
  multipart-post (2.1.1)
41
- octokit (4.19.0)
80
+ octokit (4.20.0)
42
81
  faraday (>= 0.9)
43
82
  sawyer (~> 0.8.0, >= 0.5.3)
44
83
  open4 (1.3.4)
84
+ openssl (2.2.0)
45
85
  public_suffix (4.0.6)
46
86
  rake (13.0.3)
47
- rake_circle_ci (0.7.0)
87
+ rake_circle_ci (0.9.0)
48
88
  colored2 (~> 3.1)
49
89
  excon (~> 0.72)
50
90
  rake_factory (~> 0.23)
51
91
  sshkey (~> 2.0)
52
- rake_dependencies (2.5.0)
92
+ rake_dependencies (2.9.0)
53
93
  hamster (~> 3.0)
54
94
  minitar (~> 0.9)
55
95
  rake_factory (~> 0.23)
56
96
  rubyzip (>= 1.3)
57
- rake_factory (0.27.0)
97
+ rake_factory (0.29.0)
58
98
  activesupport (>= 4)
59
99
  rake (~> 13.0)
60
- rake_github (0.5.0)
100
+ rake_github (0.7.0)
61
101
  colored2 (~> 3.1)
62
102
  octokit (~> 4.16)
63
103
  rake_factory (~> 0.23)
64
104
  sshkey (~> 2.0)
65
- rake_ssh (0.4.0)
105
+ rake_gpg (0.14.0)
106
+ rake_factory (>= 0.23, < 1)
107
+ ruby_gpg2 (>= 0.6, < 1)
108
+ rake_ssh (0.6.0)
66
109
  colored2 (~> 3.1)
67
110
  rake_factory (~> 0.23)
68
111
  sshkey (~> 2.0)
@@ -70,24 +113,26 @@ GEM
70
113
  rspec-core (~> 3.10.0)
71
114
  rspec-expectations (~> 3.10.0)
72
115
  rspec-mocks (~> 3.10.0)
73
- rspec-core (3.10.0)
116
+ rspec-core (3.10.1)
74
117
  rspec-support (~> 3.10.0)
75
- rspec-expectations (3.10.0)
118
+ rspec-expectations (3.10.1)
76
119
  diff-lcs (>= 1.2.0, < 2.0)
77
120
  rspec-support (~> 3.10.0)
78
- rspec-mocks (3.10.0)
121
+ rspec-mocks (3.10.1)
79
122
  diff-lcs (>= 1.2.0, < 2.0)
80
123
  rspec-support (~> 3.10.0)
81
- rspec-support (3.10.0)
124
+ rspec-support (3.10.1)
82
125
  ruby2_keywords (0.0.2)
83
- ruby_fly (0.19.0)
126
+ ruby_fly (0.23.0)
127
+ lino (>= 1.5)
128
+ ruby_gpg2 (0.8.0)
84
129
  lino (>= 1.5)
85
130
  rubyzip (2.3.0)
86
131
  sawyer (0.8.2)
87
132
  addressable (>= 2.3.5)
88
133
  faraday (> 0.8, < 2.0)
89
134
  semantic (1.6.1)
90
- simplecov (0.20.0)
135
+ simplecov (0.21.0)
91
136
  docile (~> 1.1)
92
137
  simplecov-html (~> 0.11)
93
138
  simplecov_json_formatter (~> 0.1)
@@ -106,14 +151,18 @@ DEPENDENCIES
106
151
  activesupport (>= 4)
107
152
  bundler (~> 2.1)
108
153
  fakefs (~> 0.18)
154
+ faker (~> 2.15)
109
155
  gem-release (~> 2.0)
156
+ jwt (~> 2.2)
157
+ openssl (~> 2.2)
110
158
  rake (~> 13.0)
111
- rake_circle_ci (~> 0.3)
159
+ rake_circle_ci (~> 0.9)
112
160
  rake_fly!
113
- rake_github (~> 0.3)
114
- rake_ssh (~> 0.2)
161
+ rake_github (~> 0.5)
162
+ rake_gpg (~> 0.12)
163
+ rake_ssh (~> 0.4)
115
164
  rspec (~> 3.9)
116
165
  simplecov (~> 0.16)
117
166
 
118
167
  BUNDLED WITH
119
- 2.2.3
168
+ 2.2.4
data/Rakefile CHANGED
@@ -2,17 +2,40 @@ require 'yaml'
2
2
  require 'rake_circle_ci'
3
3
  require 'rake_github'
4
4
  require 'rake_ssh'
5
+ require 'rake_gpg'
6
+ require 'securerandom'
5
7
  require 'rspec/core/rake_task'
6
8
 
7
9
  task :default => :spec
8
10
 
9
11
  RSpec::Core::RakeTask.new(:spec)
10
12
 
11
- RakeSSH.define_key_tasks(
12
- namespace: :deploy_key,
13
- path: 'config/secrets/ci/',
14
- comment: 'maintainers@infrablocks.io'
15
- )
13
+ namespace :encryption do
14
+ namespace :passphrase do
15
+ task :generate do
16
+ File.open('config/secrets/ci/encryption.passphrase', 'w') do |f|
17
+ f.write(SecureRandom.base64(36))
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ namespace :keys do
24
+ namespace :deploy do
25
+ RakeSSH.define_key_tasks(
26
+ path: 'config/secrets/ci/',
27
+ comment: 'maintainers@infrablocks.io')
28
+ end
29
+
30
+ namespace :gpg do
31
+ RakeGPG.define_generate_key_task(
32
+ output_directory: 'config/secrets/ci',
33
+ name_prefix: 'gpg',
34
+ owner_name: 'InfraBlocks Maintainers',
35
+ owner_email: 'maintainers@infrablocks.io',
36
+ owner_comment: 'rake_fly CI Key')
37
+ end
38
+ end
16
39
 
17
40
  RakeCircleCI.define_project_tasks(
18
41
  namespace: :circle_ci,
@@ -27,6 +50,7 @@ RakeCircleCI.define_project_tasks(
27
50
  File.read('config/secrets/ci/encryption.passphrase')
28
51
  .chomp
29
52
  }
53
+ t.checkout_keys = []
30
54
  t.ssh_keys = [
31
55
  {
32
56
  hostname: "github.com",
@@ -53,7 +77,9 @@ end
53
77
 
54
78
  namespace :pipeline do
55
79
  task :prepare => [
80
+ :'circle_ci:project:follow',
56
81
  :'circle_ci:env_vars:ensure',
82
+ :'circle_ci:checkout_keys:ensure',
57
83
  :'circle_ci:ssh_keys:ensure',
58
84
  :'github:deploy_keys:ensure'
59
85
  ]
@@ -1,8 +1,9 @@
1
1
  require 'rake_factory'
2
2
 
3
- require_relative '../tasks/get_pipeline'
4
- require_relative '../tasks/set_pipeline'
5
- require_relative '../tasks/unpause_pipeline'
3
+ require_relative '../tasks/pipeline/get'
4
+ require_relative '../tasks/pipeline/set'
5
+ require_relative '../tasks/pipeline/unpause'
6
+ require_relative '../tasks/pipeline/push'
6
7
 
7
8
  module RakeFly
8
9
  module TaskSets
@@ -18,26 +19,26 @@ module RakeFly
18
19
  parameter :var_files
19
20
  parameter :non_interactive
20
21
 
21
- parameter :get_pipeline_task_name, :default => :get_pipeline
22
- parameter :set_pipeline_task_name, :default => :set_pipeline
23
- parameter :unpause_pipeline_task_name, :default => :unpause_pipeline
24
- parameter :push_pipeline_task_name, :default => :push_pipeline
22
+ parameter :get_task_name, :default => :get
23
+ parameter :set_task_name, :default => :set
24
+ parameter :unpause_task_name, :default => :unpause
25
+ parameter :push_task_name, :default => :push
25
26
 
26
- task Tasks::GetPipeline,
27
+ task Tasks::Pipeline::Get,
27
28
  name: RakeFactory::DynamicValue.new { |ts|
28
- ts.get_pipeline_task_name
29
+ ts.get_task_name
29
30
  }
30
- task Tasks::SetPipeline,
31
+ task Tasks::Pipeline::Set,
31
32
  name: RakeFactory::DynamicValue.new { |ts|
32
- ts.set_pipeline_task_name
33
+ ts.set_task_name
33
34
  }
34
- task Tasks::UnpausePipeline,
35
+ task Tasks::Pipeline::Unpause,
35
36
  name: RakeFactory::DynamicValue.new { |ts|
36
- ts.unpause_pipeline_task_name
37
+ ts.unpause_task_name
37
38
  }
38
- task Tasks::PushPipeline,
39
+ task Tasks::Pipeline::Push,
39
40
  name: RakeFactory::DynamicValue.new { |ts|
40
- ts.push_pipeline_task_name
41
+ ts.push_task_name
41
42
  }
42
43
  end
43
44
  end
@@ -1,4 +1,5 @@
1
- require_relative 'tasks/get_pipeline'
2
- require_relative 'tasks/set_pipeline'
3
- require_relative 'tasks/unpause_pipeline'
4
- require_relative 'tasks/push_pipeline'
1
+ require_relative 'tasks/authentication/login'
2
+ require_relative 'tasks/pipeline/get'
3
+ require_relative 'tasks/pipeline/set'
4
+ require_relative 'tasks/pipeline/unpause'
5
+ require_relative 'tasks/pipeline/push'
@@ -0,0 +1,72 @@
1
+ require 'ruby_fly'
2
+ require 'rake_factory'
3
+ require 'concourse'
4
+
5
+ module RakeFly
6
+ module Tasks
7
+ module Authentication
8
+ class Login < RakeFactory::Task
9
+ class FlyBackend
10
+ def resolve_prerequisites(task)
11
+ [task.ensure_task_name]
12
+ end
13
+
14
+ def execute(_)
15
+
16
+ end
17
+ end
18
+
19
+ class ApiBackend
20
+ def resolve_prerequisites(_)
21
+ []
22
+ end
23
+
24
+ def execute(task)
25
+ client = Concourse::Client.new(
26
+ url: task.concourse_url)
27
+ token = client.for_skymarshal.create_token(
28
+ username: task.username,
29
+ password: task.password)
30
+
31
+ rc = RubyFly::RC.load(home: task.home_directory)
32
+ rc.add_or_update_target(task.target) do |target|
33
+ target.api = task.concourse_url
34
+ target.team = task.team
35
+ target.bearer_token = token.access_token
36
+ end
37
+ rc.write!
38
+ end
39
+ end
40
+
41
+ default_name :login
42
+ default_prerequisites RakeFactory::DynamicValue.new { |t|
43
+ t.backend.new.resolve_prerequisites(t)
44
+ }
45
+ default_description RakeFactory::DynamicValue.new { |t|
46
+ concourse_url = t.concourse_url || '<derived>'
47
+ target = t.target || '<derived>'
48
+
49
+ "Login to #{concourse_url} as target #{target}"
50
+ }
51
+
52
+ parameter :concourse_url, required: true
53
+ parameter :team, default: 'main'
54
+ parameter :target, required: true
55
+ parameter :username
56
+ parameter :password
57
+
58
+ parameter :backend, default: ApiBackend
59
+
60
+ parameter :home_directory,
61
+ default: RakeFactory::DynamicValue.new { |_| ENV['HOME'] }
62
+
63
+ parameter :ensure_task_name, :default => :'fly:ensure'
64
+
65
+ action do |t|
66
+ puts "Logging in to #{t.concourse_url} as target #{t.target}..."
67
+ t.backend.new.execute(t)
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,33 @@
1
+ require 'ruby_fly'
2
+ require 'rake_factory'
3
+
4
+ module RakeFly
5
+ module Tasks
6
+ module Pipeline
7
+ class Get < RakeFactory::Task
8
+ default_name :get
9
+ default_prerequisites RakeFactory::DynamicValue.new { |t|
10
+ [t.ensure_task_name]
11
+ }
12
+ default_description RakeFactory::DynamicValue.new { |t|
13
+ pipeline = t.pipeline || '<derived>'
14
+ target = t.target || '<derived>'
15
+
16
+ "Get pipeline #{pipeline} for target #{target}"
17
+ }
18
+
19
+ parameter :target, :required => true
20
+ parameter :pipeline, :required => true
21
+
22
+ parameter :ensure_task_name, :default => :'fly:ensure'
23
+
24
+ action do |t|
25
+ puts "Getting pipeline #{t.pipeline} for target #{t.target}..."
26
+ RubyFly.get_pipeline(
27
+ target: t.target,
28
+ pipeline: t.pipeline)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,35 @@
1
+ require 'ruby_fly'
2
+ require 'rake_factory'
3
+
4
+ module RakeFly
5
+ module Tasks
6
+ module Pipeline
7
+ class Push < RakeFactory::Task
8
+ default_name :push
9
+ default_description RakeFactory::DynamicValue.new { |t|
10
+ pipeline = t.pipeline || '<derived>'
11
+ target = t.target || '<derived>'
12
+
13
+ "Push pipeline #{pipeline} to target #{target}"
14
+ }
15
+
16
+ parameter :target, :required => true
17
+ parameter :pipeline, :required => true
18
+
19
+ parameter :get_task_name, :default => :get
20
+ parameter :set_task_name, :default => :set
21
+ parameter :unpause_task_name, :default => :unpause
22
+
23
+ action do |t, args|
24
+ [
25
+ t.application[t.set_task_name, t.scope],
26
+ t.application[t.get_task_name, t.scope],
27
+ t.application[t.unpause_task_name, t.scope]
28
+ ].each do |task|
29
+ task.invoke(*args)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end