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

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