bmc-tools 0.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 +7 -0
- data/README.md +2 -0
- data/Rakefile +18 -0
- data/bin/dockerize +109 -0
- data/bmc-tools.gemspec +28 -0
- metadata +90 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 508f144fc6be415e5303f6be7eee4a8edd5a7582
|
4
|
+
data.tar.gz: 028d6116c92f181dda903b6d373111eb69787454
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 62b277ae93a897f74c35ff9298ef7fdb07a196505030091d0d1b2abf880f890d2891d9450cbe577eb7ed4075b1edfb3f534d10caa057720163cddd221213e29b
|
7
|
+
data.tar.gz: 10bc2e6316e762131c2375cc96c4b5c476062c22dd4dae51104d1618aefe98b555221907edbff70dad6b800c59a3dd37890abd29d63a77c5d82de7d75aaa989d
|
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
require "rubygems"
|
4
|
+
|
5
|
+
require "rspec/core/rake_task"
|
6
|
+
RSpec::Core::RakeTask.new(:spec)
|
7
|
+
|
8
|
+
require "rubocop/rake_task"
|
9
|
+
RuboCop::RakeTask.new(:rubocop) do |task|
|
10
|
+
task.fail_on_error = false
|
11
|
+
end
|
12
|
+
|
13
|
+
# Load my own tasks
|
14
|
+
Dir.glob('lib/tasks/*.rake').each { |r| import r }
|
15
|
+
|
16
|
+
# Run specs by default
|
17
|
+
desc "Run all tests"
|
18
|
+
task default: [:spec, :rubocop]
|
data/bin/dockerize
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
DOCKER_REPO = "bmconseil/dummy"
|
4
|
+
|
5
|
+
# Try to load external libs, helpers and constants
|
6
|
+
begin
|
7
|
+
require "rubygems"
|
8
|
+
require "optparse"
|
9
|
+
require 'tempfile'
|
10
|
+
rescue LoadError => e
|
11
|
+
raise "EXITING: some basic libs were not found (#{e.message})"
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
# Some helpers
|
16
|
+
def git_check_tag tag
|
17
|
+
system("git tag -l #{tag}")
|
18
|
+
end
|
19
|
+
def run_cmd command, title
|
20
|
+
puts "* #{title}"
|
21
|
+
puts command
|
22
|
+
system command
|
23
|
+
puts
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
# Handle configuration
|
28
|
+
begin
|
29
|
+
# Defaults
|
30
|
+
opt_tag = nil
|
31
|
+
opt_latest = false
|
32
|
+
opt_push = false
|
33
|
+
|
34
|
+
# Parse options and check compliance
|
35
|
+
parser = OptionParser.new do |opts|
|
36
|
+
opts.banner = "Usage: #{File.basename $PROGRAM_NAME} [options] start|stop"
|
37
|
+
opts.on("-t", "--tag VERSION") { |value| opt_tag = value.to_s }
|
38
|
+
opts.on("-l", "--latest", "Tag build with :latest") { |value| opt_latest = true }
|
39
|
+
opts.on("-p", "--push", "Push the build(s)") { |value| opt_push = true }
|
40
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
41
|
+
puts opts
|
42
|
+
exit
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
parser.order!(ARGV)
|
47
|
+
|
48
|
+
rescue OptionParser::InvalidOption => e
|
49
|
+
abort "EXITING: InvalidOption: #{e.message}"
|
50
|
+
rescue StandardError => e
|
51
|
+
abort "EXITING: StandardError: #{e.message}"
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
# Check context
|
56
|
+
unless opt_tag
|
57
|
+
puts "EXITING: params: missing tag"
|
58
|
+
exit 1
|
59
|
+
end
|
60
|
+
|
61
|
+
# Check tag in git
|
62
|
+
unless git_check_tag(opt_tag)
|
63
|
+
puts "EXITING: tag [#{opt_tag}] not found in git"
|
64
|
+
exit 1
|
65
|
+
end
|
66
|
+
|
67
|
+
# Prepare some context vars
|
68
|
+
temp_archive = "dockerize-archive-#{opt_tag}.tar"
|
69
|
+
release_name = "#{DOCKER_REPO}:#{opt_tag}"
|
70
|
+
release_latest = "#{DOCKER_REPO}:latest"
|
71
|
+
|
72
|
+
# Prepare commands
|
73
|
+
cmd_build = "docker build -f Dockerfile --build-arg CODE_ARCHIVE=\"#{temp_archive}\" . -t \"#{release_name}\""
|
74
|
+
cmd_tag = "docker tag \"#{release_name}\" \"#{release_latest}\""
|
75
|
+
opt_push = "docker push \"#{release_name}\""
|
76
|
+
opt_push_latest = "docker push \"#{release_latest}\""
|
77
|
+
|
78
|
+
# Config summary
|
79
|
+
puts "--- DOCKERIZE CONFIG"
|
80
|
+
puts "Git tag #{opt_tag}"
|
81
|
+
puts "Use latest tag #{opt_latest}"
|
82
|
+
puts "Code archive #{temp_archive}"
|
83
|
+
puts
|
84
|
+
|
85
|
+
|
86
|
+
# Checkout tag code in temp archive
|
87
|
+
run_cmd(
|
88
|
+
"Creating code archive",
|
89
|
+
"git archive --format=tar -o \"#{temp_archive}\" --prefix=/ #{opt_tag}"
|
90
|
+
)
|
91
|
+
archive_size = File.size(temp_archive)
|
92
|
+
puts "> archive size: #{archive_size}"
|
93
|
+
|
94
|
+
# Build docker image from that archive
|
95
|
+
run_cmd cmd_build, "Building docker image"
|
96
|
+
|
97
|
+
# Tag latest if required
|
98
|
+
if opt_latest
|
99
|
+
run_cmd cmd_tag, "Updating tag [#{release_latest}] to point to [#{release_name}]"
|
100
|
+
opt_push += " && #{opt_push_latest}" if opt_latest
|
101
|
+
end
|
102
|
+
|
103
|
+
# Push releases
|
104
|
+
run_cmd opt_push, "Pushing releases" if opt_push
|
105
|
+
|
106
|
+
|
107
|
+
# $?.exitstatus
|
108
|
+
puts "* We're all set !"
|
109
|
+
exit 0
|
data/bmc-tools.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
Gem::Specification.new do |spec|
|
3
|
+
# Project version
|
4
|
+
spec.version = "0.1"
|
5
|
+
|
6
|
+
# Project description
|
7
|
+
spec.name = "bmc-tools"
|
8
|
+
spec.authors = ["Bruno MEDICI"]
|
9
|
+
spec.email = "opensource@bmconseil.com"
|
10
|
+
spec.description = ""
|
11
|
+
spec.summary = spec.description
|
12
|
+
spec.homepage = "http://github.com/bmedici/bmc-tools"
|
13
|
+
spec.licenses = ["MIT"]
|
14
|
+
spec.date = Time.now.strftime("%Y-%m-%d")
|
15
|
+
|
16
|
+
# List files and executables
|
17
|
+
spec.files = `git ls-files -z`.split("\x0")
|
18
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
spec.required_ruby_version = ">= 2.2"
|
21
|
+
|
22
|
+
# Development dependencies
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
24
|
+
spec.add_development_dependency "rake"
|
25
|
+
spec.add_development_dependency "rspec"
|
26
|
+
|
27
|
+
# Runtime dependencies
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bmc-tools
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Bruno MEDICI
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-12-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: ''
|
56
|
+
email: opensource@bmconseil.com
|
57
|
+
executables:
|
58
|
+
- dockerize
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- README.md
|
63
|
+
- Rakefile
|
64
|
+
- bin/dockerize
|
65
|
+
- bmc-tools.gemspec
|
66
|
+
homepage: http://github.com/bmedici/bmc-tools
|
67
|
+
licenses:
|
68
|
+
- MIT
|
69
|
+
metadata: {}
|
70
|
+
post_install_message:
|
71
|
+
rdoc_options: []
|
72
|
+
require_paths:
|
73
|
+
- lib
|
74
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '2.2'
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
requirements: []
|
85
|
+
rubyforge_project:
|
86
|
+
rubygems_version: 2.5.1
|
87
|
+
signing_key:
|
88
|
+
specification_version: 4
|
89
|
+
summary: ''
|
90
|
+
test_files: []
|