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.
- checksums.yaml +4 -4
- data/Gemfile.lock +71 -22
- data/Rakefile +31 -5
- data/lib/rake_fly/task_sets/pipeline.rb +16 -15
- data/lib/rake_fly/tasks.rb +5 -4
- data/lib/rake_fly/tasks/authentication/login.rb +72 -0
- data/lib/rake_fly/tasks/pipeline/get.rb +33 -0
- data/lib/rake_fly/tasks/pipeline/push.rb +35 -0
- data/lib/rake_fly/tasks/pipeline/set.rb +44 -0
- data/lib/rake_fly/tasks/pipeline/unpause.rb +35 -0
- data/lib/rake_fly/version.rb +1 -1
- metadata +89 -46
- data/.circleci/config.yml +0 -56
- data/.circleci/gpg.private.enc +0 -0
- data/.envrc +0 -5
- data/.git-crypt/.gitattributes +0 -4
- data/.git-crypt/keys/default/0/41D2606F66C3FF28874362B61A16916844CE9D82.gpg +0 -0
- data/.git-crypt/keys/default/0/AAE932B730C2BA697FFDFAE05DA390873E38358B.gpg +0 -0
- data/.gitattributes +0 -1
- data/.gitignore +0 -32
- data/.rspec +0 -2
- data/.ruby-version +0 -1
- data/config/secrets/.unlocked +0 -1
- data/config/secrets/ci/encryption.passphrase +0 -1
- data/config/secrets/ci/gpg.private +0 -58
- data/config/secrets/ci/gpg.public +0 -31
- data/config/secrets/ci/ssh.private +0 -51
- data/config/secrets/ci/ssh.public +0 -1
- data/config/secrets/circle_ci/config.yaml +0 -2
- data/config/secrets/github/config.yaml +0 -2
- data/config/secrets/rubygems/credentials +0 -2
- data/go +0 -56
- data/lib/rake_fly/tasks/get_pipeline.rb +0 -31
- data/lib/rake_fly/tasks/push_pipeline.rb +0 -34
- data/lib/rake_fly/tasks/set_pipeline.rb +0 -42
- data/lib/rake_fly/tasks/unpause_pipeline.rb +0 -33
- data/rake_fly.gemspec +0 -43
- data/scripts/ci/common/configure-git.sh +0 -8
- data/scripts/ci/common/configure-rubygems.sh +0 -16
- data/scripts/ci/common/install-git-crypt.sh +0 -8
- data/scripts/ci/common/install-gpg-key.sh +0 -19
- data/scripts/ci/steps/prerelease.sh +0 -16
- data/scripts/ci/steps/release.sh +0 -18
- data/scripts/ci/steps/test.sh +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82c67ea906461f3be457e179bc40ff830f143dd4c3c9e7de817704c5919f26db
|
4
|
+
data.tar.gz: 66000a2e914938cd6aa9124353150c1ee3a05479de15d514569255818700e9b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9b11f89a341914b885d53043270b62532efd6c3d65f5655e37f1e01d70ff6bdf5db0316067bde44323e85136c4616671d0982e48f3f5a1451e0fa8cf461abff
|
7
|
+
data.tar.gz: bb817431a4713fc705e2f75e86e52bfbab3d26c6d28e56e8ef811cb8a08342423eec7563af14fdb32f93e42e7d1eb90860be1db317f99fd73f6af89f12c24138
|
data/Gemfile.lock
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rake_fly (
|
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.
|
7
|
-
ruby_fly (>= 0.
|
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
|
-
|
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.
|
71
|
+
i18n (1.8.7)
|
34
72
|
concurrent-ruby (~> 1.0)
|
35
|
-
|
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.
|
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.
|
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.
|
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.
|
97
|
+
rake_factory (0.29.0)
|
58
98
|
activesupport (>= 4)
|
59
99
|
rake (~> 13.0)
|
60
|
-
rake_github (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
|
-
|
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.
|
116
|
+
rspec-core (3.10.1)
|
74
117
|
rspec-support (~> 3.10.0)
|
75
|
-
rspec-expectations (3.10.
|
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.
|
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.
|
124
|
+
rspec-support (3.10.1)
|
82
125
|
ruby2_keywords (0.0.2)
|
83
|
-
ruby_fly (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.
|
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.
|
159
|
+
rake_circle_ci (~> 0.9)
|
112
160
|
rake_fly!
|
113
|
-
rake_github (~> 0.
|
114
|
-
|
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.
|
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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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/
|
4
|
-
require_relative '../tasks/
|
5
|
-
require_relative '../tasks/
|
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 :
|
22
|
-
parameter :
|
23
|
-
parameter :
|
24
|
-
parameter :
|
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::
|
27
|
+
task Tasks::Pipeline::Get,
|
27
28
|
name: RakeFactory::DynamicValue.new { |ts|
|
28
|
-
ts.
|
29
|
+
ts.get_task_name
|
29
30
|
}
|
30
|
-
task Tasks::
|
31
|
+
task Tasks::Pipeline::Set,
|
31
32
|
name: RakeFactory::DynamicValue.new { |ts|
|
32
|
-
ts.
|
33
|
+
ts.set_task_name
|
33
34
|
}
|
34
|
-
task Tasks::
|
35
|
+
task Tasks::Pipeline::Unpause,
|
35
36
|
name: RakeFactory::DynamicValue.new { |ts|
|
36
|
-
ts.
|
37
|
+
ts.unpause_task_name
|
37
38
|
}
|
38
|
-
task Tasks::
|
39
|
+
task Tasks::Pipeline::Push,
|
39
40
|
name: RakeFactory::DynamicValue.new { |ts|
|
40
|
-
ts.
|
41
|
+
ts.push_task_name
|
41
42
|
}
|
42
43
|
end
|
43
44
|
end
|
data/lib/rake_fly/tasks.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
require_relative 'tasks/
|
2
|
-
require_relative 'tasks/
|
3
|
-
require_relative 'tasks/
|
4
|
-
require_relative 'tasks/
|
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
|