shipwright 1.1.0 → 1.1.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.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/VERSION +1 -1
- data/bin/shipwright +4 -0
- data/lib/shipwright/builder.rb +132 -0
- data/lib/shipwright/cli.rb +4 -0
- data/lib/shipwright/elastic_beanstalk.rb +55 -0
- data/lib/shipwright.rb +26 -2
- data/shipwright.gemspec +11 -3
- metadata +104 -9
- data/bin/harbor +0 -4
- data/bin/hoist +0 -4
- data/bin/ship +0 -4
- data/lib/shipwright/cli/harbor.rb +0 -9
- data/lib/shipwright/cli/hoist.rb +0 -9
- data/lib/shipwright/cli/ship.rb +0 -9
- data/lib/shipwright/version.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a65b57439f067bc2629f11f268206e38ea2f693
|
4
|
+
data.tar.gz: aec4a8d622075879b06090477c0756be36977e98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77f900e33b722b2df6c2ff62ab6d631529647b49960f547334fbe93f2d92b5c02d34b3de6404de0f10911d7eeac4df4c2ddf93b2fdafa5344a42e3a232c3ef9c
|
7
|
+
data.tar.gz: a14df74523c3345dfeafcecdc7af2840a3a615f03b6ae0b2c8fffee780e24f0d750e4c3d8ecb32352996fbd591fd4392c79f506205138e2018572878202c5705
|
data/.rspec
ADDED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.1
|
data/bin/shipwright
ADDED
@@ -0,0 +1,132 @@
|
|
1
|
+
module Shipwright
|
2
|
+
class Builder
|
3
|
+
|
4
|
+
BASE_VERSION = '1.0.0'
|
5
|
+
VERSION_FILE = 'VERSION'
|
6
|
+
DOCKERRUN = 'Dockerrun.aws.json'
|
7
|
+
COMMIT_MESSAGE = "new version %s built by Shipwright #{Shipwright::VERSION}\n
|
8
|
+
[ci skip]"
|
9
|
+
|
10
|
+
attr_accessor :path, :commit_message, :previous_version, :version
|
11
|
+
|
12
|
+
def self.build(path)
|
13
|
+
new(path).build
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.bump
|
17
|
+
Bump::Bump.run('patch', bundle: false, tag: false)
|
18
|
+
Shipwright.info "Installed #{version} into #{VERSION_FILE}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.init
|
22
|
+
return if version
|
23
|
+
|
24
|
+
Shipwright.info "Installing #{BASE_VERSION} into #{VERSION_FILE}"
|
25
|
+
File.open(VERSION_FILE, 'wb') { |f| f.write BASE_VERSION }
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.version
|
29
|
+
Bump::Bump.version_from_version.tap { |v| return v.first if v }
|
30
|
+
end
|
31
|
+
|
32
|
+
def initialize(path)
|
33
|
+
self.path = path
|
34
|
+
shipyard
|
35
|
+
end
|
36
|
+
|
37
|
+
def build
|
38
|
+
self.class.init
|
39
|
+
Shipwright.info "Shipwright is building #{path} (at #{self.class.version})"
|
40
|
+
|
41
|
+
bump_version
|
42
|
+
|
43
|
+
build_image
|
44
|
+
push_image
|
45
|
+
|
46
|
+
update_dockerrun
|
47
|
+
generate_artifact
|
48
|
+
update_ebconfig
|
49
|
+
|
50
|
+
git_commit
|
51
|
+
git_push
|
52
|
+
|
53
|
+
Shipwright.info "VERSION #{version} built"
|
54
|
+
end
|
55
|
+
|
56
|
+
def bump_version
|
57
|
+
self.class.bump
|
58
|
+
end
|
59
|
+
|
60
|
+
def build_image
|
61
|
+
Shipwright.info "Building image with tag #{docker_tag}"
|
62
|
+
run_cmd "docker build -t #{docker_tag} #{path}"
|
63
|
+
# self.image = Docker::Image.build_from_dir(path, 'tag' => docker_tag)
|
64
|
+
end
|
65
|
+
|
66
|
+
def push_image
|
67
|
+
Shipwright.info "Pushing image to #{docker_tag}"
|
68
|
+
run_cmd "docker push #{docker_tag}"
|
69
|
+
# image.push
|
70
|
+
end
|
71
|
+
|
72
|
+
def run_cmd(cmd)
|
73
|
+
IO.popen(cmd).each { |line| Shipwright.info line }
|
74
|
+
end
|
75
|
+
|
76
|
+
def update_dockerrun
|
77
|
+
Shipwright.info "Updating Dockerrun.aws.json"
|
78
|
+
Shipwright::ElasticBeanstalk.update_dockerrun
|
79
|
+
end
|
80
|
+
|
81
|
+
def generate_artifact
|
82
|
+
Shipwright.info "Generating artifact"
|
83
|
+
Shipwright::ElasticBeanstalk.generate_artifact
|
84
|
+
end
|
85
|
+
|
86
|
+
def update_ebconfig
|
87
|
+
Shipwright.info "Updating .elasticbeanstalk/config.yml"
|
88
|
+
Shipwright::ElasticBeanstalk.update_ebconfig
|
89
|
+
end
|
90
|
+
|
91
|
+
def git_commit
|
92
|
+
Shipwright.info "Commiting to git"
|
93
|
+
git.add all: true
|
94
|
+
git.commit COMMIT_MESSAGE % version
|
95
|
+
git.add_tag git_tag
|
96
|
+
end
|
97
|
+
|
98
|
+
def git_push
|
99
|
+
Shipwright.info "Pushing to git"
|
100
|
+
git.push 'origin', git.current_branch, tags: true
|
101
|
+
end
|
102
|
+
|
103
|
+
def git_tag
|
104
|
+
"build-#{version}"
|
105
|
+
end
|
106
|
+
|
107
|
+
def docker_tag
|
108
|
+
"#{shipyard}/#{application}:#{version}"
|
109
|
+
end
|
110
|
+
|
111
|
+
def version
|
112
|
+
@version ||= self.class.version
|
113
|
+
end
|
114
|
+
|
115
|
+
def shipyard
|
116
|
+
ENV.fetch('SHIPYARD') { raise "set SHIPYARD= to your docker host/scope" }
|
117
|
+
end
|
118
|
+
|
119
|
+
def application
|
120
|
+
File.basename Dir.pwd
|
121
|
+
end
|
122
|
+
|
123
|
+
protected
|
124
|
+
|
125
|
+
attr_accessor :image
|
126
|
+
|
127
|
+
def git
|
128
|
+
@git ||= Git.open(Dir.pwd)
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
end
|
data/lib/shipwright/cli.rb
CHANGED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'json'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'zip'
|
5
|
+
|
6
|
+
module Shipwright
|
7
|
+
module ElasticBeanstalk
|
8
|
+
|
9
|
+
EB_CONFIG = ".elasticbeanstalk/config.yml"
|
10
|
+
EB_EXTENSIONS = '.ebextensions'
|
11
|
+
DOCKERRUN = 'Dockerrun.aws.json'
|
12
|
+
|
13
|
+
extend self
|
14
|
+
|
15
|
+
def update_dockerrun
|
16
|
+
dockerrun = JSON.parse(File.read DOCKERRUN)
|
17
|
+
|
18
|
+
dockerrun['containerDefinitions'].each do |container|
|
19
|
+
bits = container['image'].to_s.split(':').tap(&:pop)
|
20
|
+
container['image'] = bits.push(version).join(':')
|
21
|
+
end
|
22
|
+
|
23
|
+
File.open(DOCKERRUN, 'wb') { |file| file.write dockerrun.to_json }
|
24
|
+
end
|
25
|
+
|
26
|
+
def generate_artifact
|
27
|
+
FileUtils.mkdir_p File.dirname(artifact_path)
|
28
|
+
FileUtils.rm artifact_path, force: true
|
29
|
+
Zip::File.open(artifact_path, Zip::File::CREATE) do |zip|
|
30
|
+
zip.add DOCKERRUN, DOCKERRUN
|
31
|
+
ebexts = Dir.glob(File.join EB_EXTENSIONS, '*')
|
32
|
+
if ebexts.any?
|
33
|
+
zip.mkdir EB_EXTENSIONS
|
34
|
+
ebexts.each { |ext| zip.add ext, ext }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def update_ebconfig
|
40
|
+
config = YAML.load_file EB_CONFIG
|
41
|
+
config['deploy'] ||= {}
|
42
|
+
config['deploy']['artifact'] = artifact_path
|
43
|
+
File.open(EB_CONFIG, 'wb') { |f| f.write config.to_yaml[4..-1] } # skip ---\n
|
44
|
+
end
|
45
|
+
|
46
|
+
def artifact_path
|
47
|
+
File.join Dir.pwd, 'builds', "#{version}.zip"
|
48
|
+
end
|
49
|
+
|
50
|
+
def version
|
51
|
+
Builder.version
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
data/lib/shipwright.rb
CHANGED
@@ -1,5 +1,29 @@
|
|
1
|
-
require
|
1
|
+
require 'aws-sdk'
|
2
|
+
require 'bump'
|
3
|
+
require 'docker'
|
4
|
+
require 'git'
|
5
|
+
require 'forwardable'
|
6
|
+
require 'logger'
|
7
|
+
|
8
|
+
Docker.options.merge! ssl_verify_peer: false
|
2
9
|
|
3
10
|
module Shipwright
|
4
|
-
|
11
|
+
|
12
|
+
VERSION = File.read(File.expand_path '../../VERSION', __FILE__).chomp
|
13
|
+
|
14
|
+
extend Forwardable
|
15
|
+
extend self
|
16
|
+
|
17
|
+
attr_accessor :infos
|
18
|
+
attr_accessor :errors
|
19
|
+
|
20
|
+
self.infos = Logger.new(STDOUT)
|
21
|
+
self.errors = Logger.new(STDERR)
|
22
|
+
|
23
|
+
def_delegator :infos, :info
|
24
|
+
def_delegator :error, :error
|
25
|
+
|
5
26
|
end
|
27
|
+
|
28
|
+
require 'shipwright/builder'
|
29
|
+
require 'shipwright/elastic_beanstalk'
|
data/shipwright.gemspec
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
|
4
|
+
VERSION = File.read(File.expand_path '../VERSION', __FILE__).chomp
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "shipwright"
|
8
|
-
spec.version =
|
8
|
+
spec.version = VERSION
|
9
9
|
spec.authors = ["Adam Hunter"]
|
10
10
|
spec.email = ["adamhunter@me.com"]
|
11
11
|
|
@@ -26,6 +26,14 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
27
|
spec.require_paths = ["lib"]
|
28
28
|
|
29
|
+
spec.add_dependency 'aws-sdk', '~> 2'
|
30
|
+
spec.add_dependency 'thor', '~> 0.19.1'
|
31
|
+
spec.add_dependency 'bump', '~> 0.5'
|
32
|
+
spec.add_dependency 'docker-api', '~> 1.21.4'
|
33
|
+
spec.add_dependency 'git', '~> 1.2.9'
|
34
|
+
spec.add_dependency 'rubyzip', '~> 1.1.7'
|
35
|
+
|
29
36
|
spec.add_development_dependency "bundler", "~> 1.9"
|
30
|
-
spec.add_development_dependency "rake",
|
37
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
38
|
+
spec.add_development_dependency "rspec", "~> 3.2.0"
|
31
39
|
end
|
metadata
CHANGED
@@ -1,15 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shipwright
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Hunter
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: aws-sdk
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: thor
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.19.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.19.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bump
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.5'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.5'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: docker-api
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.21.4
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.21.4
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: git
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.2.9
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.2.9
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubyzip
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.1.7
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.1.7
|
13
97
|
- !ruby/object:Gem::Dependency
|
14
98
|
name: bundler
|
15
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +122,20 @@ dependencies:
|
|
38
122
|
- - "~>"
|
39
123
|
- !ruby/object:Gem::Version
|
40
124
|
version: '10.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 3.2.0
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 3.2.0
|
41
139
|
description: CLI Client for implementing the harbor pattern on AWS Elastic Beanstalk
|
42
140
|
email:
|
43
141
|
- adamhunter@me.com
|
@@ -46,22 +144,19 @@ extensions: []
|
|
46
144
|
extra_rdoc_files: []
|
47
145
|
files:
|
48
146
|
- ".gitignore"
|
147
|
+
- ".rspec"
|
49
148
|
- ".travis.yml"
|
50
149
|
- Gemfile
|
51
150
|
- README.md
|
52
151
|
- Rakefile
|
53
152
|
- VERSION
|
54
153
|
- bin/console
|
55
|
-
- bin/harbor
|
56
|
-
- bin/hoist
|
57
154
|
- bin/setup
|
58
|
-
- bin/
|
155
|
+
- bin/shipwright
|
59
156
|
- lib/shipwright.rb
|
157
|
+
- lib/shipwright/builder.rb
|
60
158
|
- lib/shipwright/cli.rb
|
61
|
-
- lib/shipwright/
|
62
|
-
- lib/shipwright/cli/hoist.rb
|
63
|
-
- lib/shipwright/cli/ship.rb
|
64
|
-
- lib/shipwright/version.rb
|
159
|
+
- lib/shipwright/elastic_beanstalk.rb
|
65
160
|
- shipwright.gemspec
|
66
161
|
homepage: https://github.com/tma1/shipwright
|
67
162
|
licenses: []
|
data/bin/harbor
DELETED
data/bin/hoist
DELETED
data/bin/ship
DELETED
data/lib/shipwright/cli/hoist.rb
DELETED
data/lib/shipwright/cli/ship.rb
DELETED
data/lib/shipwright/version.rb
DELETED