rake_fly 1.15.0 → 2.2.0.pre.1

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.
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