mina-circle 1.1.1 → 1.2.0
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 +4 -4
- data/lib/mina-circle.rb +1 -0
- data/lib/mina-circle/circle_ci.rb +62 -0
- data/lib/mina-circle/helpers.rb +7 -19
- data/lib/mina-circle/tasks.rb +0 -5
- data/lib/mina-circle/version.rb +1 -1
- metadata +84 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50e60356adc20c3e4b3ad9065ada8a663fcbe006
|
4
|
+
data.tar.gz: b2ec033ee11e236f4d400e9593f18b9c1fe715f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4323a7ad1e8947c93e06d19506ad9a71de6690f6d29265cf2f373127c99a5beb4ce280ed3c3144d034fbee1c62131d1c698b4515c3201b3bcc5bcf68127edc8d
|
7
|
+
data.tar.gz: fac5ca660bb3c8fcf7a8c629321164837a507ab6e2bd162b6f48e7eea4641a57e9b59f3bd4f0179953c016455d09e5e4a46e15930267dba1c9599b5a27e8fc49
|
data/lib/mina-circle.rb
CHANGED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
class CircleCI
|
4
|
+
BASE_URI = 'https://circleci.com/api/v1'
|
5
|
+
attr_accessor :organization, :project, :branch
|
6
|
+
def initialize(organization, project, branch = 'master')
|
7
|
+
@organization = organization
|
8
|
+
@project = project
|
9
|
+
@branch = branch
|
10
|
+
end
|
11
|
+
|
12
|
+
def builds
|
13
|
+
get("tree/#{branch}").collect { |build_hash| Build.new(build_hash) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def artifacts(build)
|
17
|
+
get("#{build.build_num}/artifacts").collect { |artifact_hash| Artifact.new(artifact_hash) }
|
18
|
+
end
|
19
|
+
|
20
|
+
def get(path)
|
21
|
+
url = build_url path
|
22
|
+
JSON.parse(open(url).read)
|
23
|
+
rescue OpenURI::HTTPError
|
24
|
+
[]
|
25
|
+
end
|
26
|
+
|
27
|
+
def build_url(path)
|
28
|
+
url = "#{BASE_URI}/project/#{organization}/#{project}/#{path}"
|
29
|
+
url << "?circle-token=#{CircleCI.token}" if CircleCI.token
|
30
|
+
url
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.token
|
34
|
+
@@token ||= get_token
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.get_token
|
38
|
+
return ENV['MINA_CIRCLE_TOKEN'] if ENV['MINA_CIRCLE_TOKEN']
|
39
|
+
config_file = File.join(Dir.home, '.mina-circle.yml')
|
40
|
+
File.exist?(config_file) ? YAML.load_file(config_file)['token'] : nil
|
41
|
+
end
|
42
|
+
|
43
|
+
class Artifact
|
44
|
+
attr_reader :source_url, :filename
|
45
|
+
def initialize(hash)
|
46
|
+
@filename = File.basename hash['path']
|
47
|
+
@source_url = hash['url']
|
48
|
+
end
|
49
|
+
|
50
|
+
def url
|
51
|
+
CircleCI.token.nil? ? source_url : "#{source_url}?circle-token=#{CircleCI.token}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class Build
|
56
|
+
attr_reader :build_num
|
57
|
+
def initialize(hash)
|
58
|
+
@build_num = hash['build_num']
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
data/lib/mina-circle/helpers.rb
CHANGED
@@ -1,26 +1,14 @@
|
|
1
1
|
module MinaCircle
|
2
2
|
module Helpers
|
3
|
-
def
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
File.join(Dir.home, '.mina-circle.yml')
|
9
|
-
end
|
10
|
-
|
11
|
-
def latest_build_number
|
12
|
-
base_uri = 'https://circleci.com/api/v1/project'
|
13
|
-
base_path = "#{circle_user}/#{circle_project}/tree/#{branch}"
|
14
|
-
url = "#{base_uri}/#{base_path}?circle-token=#{circle_token}&limit=1&filter=completed"
|
15
|
-
build_num = JSON.parse(open(url).read).first['build_num'].to_s
|
16
|
-
puts "[mina-circle] Build number: #{build_num}"
|
17
|
-
puts "[mina-circle] Using username/project: #{circle_user}/#{circle_project}"
|
18
|
-
puts "[mina-circle] Branch: #{branch}"
|
19
|
-
build_num
|
3
|
+
def build_url
|
4
|
+
latest_build = circle_ci.builds.first
|
5
|
+
circle_ci.artifacts(latest_build).select { |artifact|
|
6
|
+
artifact.filename == circle_artifact
|
7
|
+
}.first.url
|
20
8
|
end
|
21
9
|
|
22
|
-
def
|
23
|
-
|
10
|
+
def circle_ci
|
11
|
+
@circle_ci ||= CircleCI.new circle_user, circle_project, branch
|
24
12
|
end
|
25
13
|
end
|
26
14
|
end
|
data/lib/mina-circle/tasks.rb
CHANGED
@@ -6,9 +6,6 @@ extend MinaCircle::Helpers
|
|
6
6
|
#
|
7
7
|
# ## Settings
|
8
8
|
#
|
9
|
-
# ### circle_token
|
10
|
-
# API access token. By default this is taken from ~/.mina-circle.yml if it exists
|
11
|
-
#
|
12
9
|
# ### circle_user
|
13
10
|
# user name
|
14
11
|
#
|
@@ -21,8 +18,6 @@ extend MinaCircle::Helpers
|
|
21
18
|
# ### circle_explode_command
|
22
19
|
# Command with options for decompressing the artifact archive
|
23
20
|
|
24
|
-
set_default(:circle_token, parse_from_home_dir || fail('CircleCI token required'))
|
25
|
-
|
26
21
|
namespace :circleci do
|
27
22
|
|
28
23
|
desc 'Downloads and explodes the archive file containing the build'
|
data/lib/mina-circle/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mina-circle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrick Simpson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-02-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mina
|
@@ -31,6 +31,86 @@ dependencies:
|
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.3.0
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: rake
|
36
|
+
requirement: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.4'
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 10.4.0
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - "~>"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '10.4'
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 10.4.0
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: vcr
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '3.0'
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 3.0.0
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '3.0'
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 3.0.0
|
74
|
+
- !ruby/object:Gem::Dependency
|
75
|
+
name: webmock
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '1.22'
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 1.22.0
|
84
|
+
type: :development
|
85
|
+
prerelease: false
|
86
|
+
version_requirements: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '1.22'
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.22.0
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: minitest
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - "~>"
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '5.8'
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 5.8.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '5.8'
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 5.8.0
|
34
114
|
description: Deploy without dependancies using mina and CircleCI.
|
35
115
|
email:
|
36
116
|
- patrick@heysparkbox.com
|
@@ -40,6 +120,7 @@ extensions: []
|
|
40
120
|
extra_rdoc_files: []
|
41
121
|
files:
|
42
122
|
- lib/mina-circle.rb
|
123
|
+
- lib/mina-circle/circle_ci.rb
|
43
124
|
- lib/mina-circle/helpers.rb
|
44
125
|
- lib/mina-circle/tasks.rb
|
45
126
|
- lib/mina-circle/version.rb
|
@@ -63,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
144
|
version: '0'
|
64
145
|
requirements: []
|
65
146
|
rubyforge_project:
|
66
|
-
rubygems_version: 2.
|
147
|
+
rubygems_version: 2.5.0
|
67
148
|
signing_key:
|
68
149
|
specification_version: 4
|
69
150
|
summary: Deploy your application from artifacts produced by CircleCI
|