rake_circle_ci 0.2.0.pre.6 → 0.2.0.pre.7

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: 04bdce401200ded9a9adade030c36e02c587bf5ad8007123b9ff4ae9752453a1
4
- data.tar.gz: d07cc829dae1a434ace0843e6a572999687f51f4ad83c51643eab7a5960c9ec5
3
+ metadata.gz: 06c5333f1bf1e2c377a49a35520cde980f93b73f4f0fd69f1bf1c292554f0f0f
4
+ data.tar.gz: f00b9d69ad3a4fac89af31c57e36de1b5ba046d56e5005c21be1626efa69c0ca
5
5
  SHA512:
6
- metadata.gz: b63193d597c295e45181d754a9ce9560c76c8d7022a7d7f19dda87214461baa3db00654cc4e3c062a72f1f28fa3be2105765f45a70995235c111043a8ca0cd7a
7
- data.tar.gz: dfe03eead38348b0ccb8430475f7b2eed2e54172814effcf8cbbc647eff5994683f5fa6460972543e0c9da0b0670c1f78688b04f681c66611fe2e077995e57b9
6
+ metadata.gz: b50b611ba364f53074999c14b4fd450d2af47be71655d12427bd31d01f86835e7397383d6cd6a58cb0232b3b178382404bc7dc781af754796be2b6feb756b184
7
+ data.tar.gz: 4ec02e53b1e894624e80605df819240b4c4efabcf68941b8808b0a6ed7ac6523449141f9ded5202b934ec2c4db321dd564852d5514fbe621230ea40b1fdb30bd
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rake_circle_ci (0.2.0.pre.6)
4
+ rake_circle_ci (0.2.0.pre.7)
5
5
  colored2 (~> 3.1)
6
6
  excon (~> 0.72)
7
7
  rake_factory (~> 0.23)
@@ -1,5 +1,6 @@
1
1
  require 'json'
2
2
  require 'excon'
3
+ require 'sshkey'
3
4
 
4
5
  module RakeCircleCI
5
6
  class Client
@@ -34,6 +35,17 @@ module RakeCircleCI
34
35
  end
35
36
  end
36
37
 
38
+ def create_ssh_key(private_key, opts = {})
39
+ body = {
40
+ fingerprint: SSHKey.new(private_key).sha1_fingerprint,
41
+ private_key: private_key,
42
+ }
43
+ body = body.merge(hostname: opts[:hostname]) if opts[:hostname]
44
+ body = JSON.dump(body)
45
+ assert_successful(
46
+ Excon.post(ssh_keys_url, body: body, headers: headers))
47
+ end
48
+
37
49
  private
38
50
 
39
51
  def headers
@@ -62,5 +74,10 @@ module RakeCircleCI
62
74
  def env_var_url(name)
63
75
  "#{@base_url}/v2/project/#{@project_slug}/envvar/#{name}"
64
76
  end
77
+
78
+ def ssh_keys_url
79
+ "#{@base_url}/v1.1/project/#{@project_slug}/ssh-key?" +
80
+ "circle-token=#{@api_token}"
81
+ end
65
82
  end
66
83
  end
@@ -0,0 +1,34 @@
1
+ require 'rake_factory'
2
+
3
+ require_relative '../../client'
4
+
5
+ module RakeCircleCI
6
+ module Tasks
7
+ module SSHKey
8
+ class Provision < RakeFactory::Task
9
+ default_name :provision
10
+ default_description RakeFactory::DynamicValue.new { |t|
11
+ "Provision SSH key on the #{t.project_slug} project"
12
+ }
13
+
14
+ parameter :project_slug, required: true
15
+ parameter :api_token, required: true
16
+ parameter :base_url, default: 'https://circleci.com/api'
17
+ parameter :private_key, required: true
18
+ parameter :hostname
19
+
20
+ action do |t|
21
+ client = Client.new(
22
+ base_url: t.base_url,
23
+ api_token: t.api_token,
24
+ project_slug: t.project_slug)
25
+
26
+ print "Provisioning SSH key to the '#{t.project_slug}' project... "
27
+ options = t.hostname && {hostname: t.hostname}
28
+ args = [t.private_key, options].compact
29
+ client.create_ssh_key(*args)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'ssh_key/provision'
2
+
3
+ module RakeCircleCI
4
+ module Tasks
5
+ module SSHKey
6
+ end
7
+ end
8
+ end
@@ -1,4 +1,5 @@
1
1
  require_relative 'tasks/environment_variables'
2
+ require_relative 'tasks/ssh_key'
2
3
 
3
4
  module RakeCircleCI
4
5
  module Tasks
@@ -1,3 +1,3 @@
1
1
  module RakeCircleCI
2
- VERSION = '0.2.0.pre.6'
2
+ VERSION = '0.2.0.pre.7'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake_circle_ci
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.pre.6
4
+ version: 0.2.0.pre.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Clemson
@@ -206,6 +206,8 @@ files:
206
206
  - lib/rake_circle_ci/tasks/environment_variables/destroy.rb
207
207
  - lib/rake_circle_ci/tasks/environment_variables/ensure.rb
208
208
  - lib/rake_circle_ci/tasks/environment_variables/provision.rb
209
+ - lib/rake_circle_ci/tasks/ssh_key.rb
210
+ - lib/rake_circle_ci/tasks/ssh_key/provision.rb
209
211
  - lib/rake_circle_ci/version.rb
210
212
  - rake_circle_ci.gemspec
211
213
  - scripts/ci/common/configure-git.sh