brpm_content_framework 0.2.40 → 0.2.41

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MmNhY2ZkODI3N2M1MDk4OTk3YTFlN2EzNzFlMGE3OGU1NjRmMDNiNw==
4
+ ZjRlMWMyZWNkZDMwMTQwNjE5MDUwMTExOTgzNGM0ODA0ODE3OWUxYQ==
5
5
  data.tar.gz: !binary |-
6
- MTJlZGFhODljMTQyYjdiNzQxMjNlZjk0YzU4ODQ2MTM3NTcwMDRkOQ==
6
+ MTdhNTdmZGFmN2Q1OGY1NmZkM2RlNmJmYTQ3Yzg4Y2E0ODJkNWE4Yw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODdhYjYwNDA2NzM5N2FkODUzMTQzODE5ZmFkMzA1YWMxZDdmNzllMTU3YTA4
10
- ZjU2ZjVlNmJjNDg5YzU4YjM2YTc0NDkyODIyOTBiMWRmN2ZlNTQ4N2JjMDc2
11
- OGEyMjliNTZiYTRkNjczNDY0NDY2ZmZiMDY3N2RhNGJkMDcwODk=
9
+ YmNhNmFiZjczMzRhNmUxNTRiNTU5M2FlYWQyOGE4YzIxYWRkNzA2N2QzMDUx
10
+ ZDU2NTZhMGYyNGIxMGNlNzM2NmMxNmI4YWU0MjA0Y2EyMzIwMjhhNGE3OGYw
11
+ ZTU4MGMxODQ1ZjZhYjhkNjE0YjUzY2VlZjdkZDRkODBmMzE2NDE=
12
12
  data.tar.gz: !binary |-
13
- MzU2OTZjMjMxMDNjMjI3NmRmYWY4MzU3ZTlhYzg2MDU3MTg0OTFjMWM5NDRl
14
- MjNkMTdlN2FhYWI5YWQ3NWQzNjkzYzhkMmFlYTEwYTM1MTliMjIzNDkzMTQz
15
- ZWViZTM4MzA0ZmY3OGI4YzBhMmJmY2RlYWZlMTI1ZWFjMDAyZTM=
13
+ NjljM2U0MjA0MWMzMmRjMTUwNDBlMzIxOWMzOTE3OTI4ODhkMDlmNjY4MTk3
14
+ MmI5OTQ0ZDhmZjc0NWFlNTYzYzY5MDA1Y2E4ZGM0MmVmNjFhOWQ1NjRmNDA0
15
+ MWY5MjljN2IxZmJiYzUwM2U5MzgxMTJlZjJhYjI2MzgyYjQxYWY=
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+ require "brpm_auto"
3
+
4
+ if ARGV.size < 1
5
+ puts "Missing arguments."
6
+ puts "Usage: \n build_docker_image <path to module>"
7
+ exit
8
+ end
9
+
10
+ begin
11
+ BrpmAuto.setup({ "log_file" => "/tmp/brpm_install.log", "also_log_to_console" => "true" })
12
+
13
+ module_path = File.expand_path(ARGV[0])
14
+
15
+ module_name = File.basename(module_path)
16
+ module_config = YAML.load_file("#{module_path}/config.yml")
17
+ module_version = module_config["version"]
18
+
19
+ BrpmAuto.log "Module #{module_name} #{module_version}"
20
+
21
+ if module_name == "brpm_content_framework"
22
+ dockerfile_path = File.expand_path("#{File.dirname(__FILE__)}/../docker/framework/Dockerfile")
23
+ else
24
+ dockerfile_path = File.expand_path("#{File.dirname(__FILE__)}/../docker/modules/Dockerfile")
25
+ end
26
+
27
+ dockerfile_content = File.read(dockerfile_path)
28
+ dockerfile_original_content = File.read(dockerfile_path)
29
+
30
+ unless module_name == "brpm_content_framework"
31
+ dockerfile_content.sub!(/(?<=ENV MODULE )(.*)/, module_name)
32
+ end
33
+ dockerfile_content.sub!(/(?<=ENV VERSION )(.*)/, module_version)
34
+
35
+ File.open(dockerfile_path, "w") do |file|
36
+ file << dockerfile_content
37
+ end
38
+
39
+ BrpmAuto.log ""
40
+ BrpmAuto.log ">>> Building docker image bmcrlm/#{module_name}:#{module_version}..."
41
+ _, stderr, _, status = BrpmAuto.execute_command("docker build -t bmcrlm/#{module_name}:#{module_version} #{File.dirname(dockerfile_path)}") do |stdout_err|
42
+ BrpmAuto.log " #{stdout_err.chomp}"
43
+ end
44
+ raise "The process failed with status #{status.exitstatus}.\n#{stderr}" unless status.success?
45
+
46
+ File.open(dockerfile_path, "w") do |file|
47
+ file << dockerfile_original_content
48
+ end
49
+
50
+ rescue Exception => e
51
+ BrpmAuto.log_error "#{e}"
52
+ BrpmAuto.log "\n\t" + e.backtrace.join("\n\t")
53
+
54
+ raise e
55
+ end
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env ruby
2
+ require "brpm_auto"
3
+
4
+ if ARGV.size < 1
5
+ puts "Missing arguments."
6
+ puts "Usage: \n publish_docker_image <path to module>"
7
+ exit
8
+ end
9
+
10
+ begin
11
+ BrpmAuto.setup({ "log_file" => "/tmp/brpm_install.log", "also_log_to_console" => "true" })
12
+
13
+ module_path = File.expand_path(ARGV[0])
14
+
15
+ module_name = File.basename(module_path)
16
+ module_config = YAML.load_file("#{module_path}/config.yml")
17
+ module_version = module_config["version"]
18
+
19
+ BrpmAuto.log "Module #{module_name} #{module_version}"
20
+
21
+ if module_name == "brpm_content_framework"
22
+ dockerfile_path = File.expand_path("#{File.dirname(__FILE__)}/../docker/framework/Dockerfile")
23
+ else
24
+ dockerfile_path = File.expand_path("#{File.dirname(__FILE__)}/../docker/modules/Dockerfile")
25
+ end
26
+
27
+ dockerfile_content = File.read(dockerfile_path)
28
+ dockerfile_original_content = File.read(dockerfile_path)
29
+
30
+ unless module_name == "brpm_content_framework"
31
+ dockerfile_content.sub!(/(?<=ENV MODULE )(.*)/, module_name)
32
+ end
33
+ dockerfile_content.sub!(/(?<=ENV VERSION )(.*)/, module_version)
34
+
35
+ File.open(dockerfile_path, "w") do |file|
36
+ file << dockerfile_content
37
+ end
38
+
39
+ BrpmAuto.log ""
40
+ BrpmAuto.log ">>> Building docker image bmcrlm/#{module_name}:#{module_version}..."
41
+ _, stderr, _, status = BrpmAuto.execute_command("docker build -t bmcrlm/#{module_name}:#{module_version} #{File.dirname(dockerfile_path)}") do |stdout_err|
42
+ BrpmAuto.log " #{stdout_err.chomp}"
43
+ end
44
+ raise "The process failed with status #{status.exitstatus}.\n#{stderr}" unless status.success?
45
+
46
+ File.open(dockerfile_path, "w") do |file|
47
+ file << dockerfile_original_content
48
+ end
49
+
50
+ BrpmAuto.log ""
51
+ BrpmAuto.log ">>> Publishing docker image bmcrlm/#{module_name}:#{module_version} to the docker hub..."
52
+ _, stderr, _, status = BrpmAuto.execute_command("docker push bmcrlm/#{module_name}:#{module_version}") do |stdout_err|
53
+ BrpmAuto.log " #{stdout_err.chomp}"
54
+ end
55
+ raise "The process failed with status #{status.exitstatus}.\n#{stderr}" unless status.success?
56
+
57
+ if module_name == "brpm_content_framework"
58
+ BrpmAuto.log ""
59
+ BrpmAuto.log ">>> Tagging docker image bmcrlm/#{module_name}:#{module_version} as bmcrlm/#{module_name}:latest..."
60
+ _, stderr, _, status = BrpmAuto.execute_command("docker tag -f bmcrlm/#{module_name}:#{module_version} bmcrlm/#{module_name}:latest") do |stdout_err|
61
+ BrpmAuto.log " #{stdout_err.chomp}"
62
+ end
63
+ raise "The process failed with status #{status.exitstatus}.\n#{stderr}" unless status.success?
64
+ _, stderr, _, status = BrpmAuto.execute_command("docker push bmcrlm/#{module_name}:latest") do |stdout_err|
65
+ BrpmAuto.log " #{stdout_err.chomp}"
66
+ end
67
+ raise "The process failed with status #{status.exitstatus}.\n#{stderr}" unless status.success?
68
+ end
69
+
70
+ rescue Exception => e
71
+ BrpmAuto.log_error "#{e}"
72
+ BrpmAuto.log "\n\t" + e.backtrace.join("\n\t")
73
+
74
+ raise e
75
+ end
data/config.yml CHANGED
@@ -1,4 +1,4 @@
1
- version: 0.2.40
1
+ version: 0.2.41
2
2
  author: Niek Bartholomeus
3
3
  email: niek.bartholomeus@gmail.com
4
4
  homepage: https://github.com/BMC-RLM/brpm_content_framework
@@ -1,11 +1,11 @@
1
1
  FROM atlashealth/ruby:1.9.3
2
2
  MAINTAINER Niek Bartholomeus <niek.bartholomeus@gmail.com>
3
3
 
4
- ENV BRPM_CONTENT_FRAMEWORK_VERSION 1.0.0
5
4
  ENV GEM_HOME /usr/lib/ruby/gems/1.9.1
5
+ ENV VERSION 1.0.0
6
6
 
7
- RUN gem install brpm_content_framework -v $BRPM_CONTENT_FRAMEWORK_VERSION && \
8
- cd $GEM_HOME/gems/brpm_content_framework-$BRPM_CONTENT_FRAMEWORK_VERSION && \
7
+ RUN gem install brpm_content_framework -v $VERSION && \
8
+ cd $GEM_HOME/gems/brpm_content_framework-$VERSION && \
9
9
  bundle install && \
10
10
  rm -rf $GEM_HOME/cache
11
11
 
@@ -0,0 +1,10 @@
1
+ FROM bmcrlm/brpm_content_framework
2
+ MAINTAINER Niek Bartholomeus <niek.bartholomeus@gmail.com>
3
+
4
+ ENV MODULE module
5
+ ENV VERSION 1.0.0
6
+
7
+ RUN gem install $MODULE -v $VERSION && \
8
+ cd $GEM_HOME/gems/$MODULE-$VERSION && \
9
+ bundle install && \
10
+ rm -rf $GEM_HOME/cache
@@ -73,13 +73,8 @@ class BrpmScriptExecutor
73
73
  command += " \"#{max_records}\"" if max_records
74
74
  end
75
75
 
76
- _, stderr, _, status = BrpmAuto.execute_command(command) do |stdout_err|
77
- BrpmAuto.log " stdout:#{stdout_err.chomp}"
78
- end
79
-
80
76
  else
81
- env_vars = {}
82
- env_vars["GEM_HOME"] = ENV["BRPM_CONTENT_HOME"] || "#{ENV["BRPM_HOME"]}/modules"
77
+ env_var_gem_home = "export GEM_HOME=#{ENV["BRPM_CONTENT_HOME"] || "#{ENV["BRPM_HOME"]}/modules"} && "
83
78
 
84
79
  module_path = get_module_gem_path(modul, module_version)
85
80
 
@@ -92,24 +87,33 @@ class BrpmScriptExecutor
92
87
  gemfile_path = "#{module_path}/Gemfile"
93
88
  if File.exists?(gemfile_path)
94
89
  BrpmAuto.log "Using Gemfile #{gemfile_path}."
95
- env_vars["BUNDLE_GEMFILE"] = gemfile_path
90
+ env_var_bundler = "export BUNDLE_GEMFILE=#{gemfile_path} && "
96
91
  require_bundler = "require 'bundler/setup';"
97
92
  else
98
93
  BrpmAuto.log("This module doesn't have a Gemfile.")
94
+ env_var_bundler = ""
99
95
  require_bundler = ""
100
96
  end
101
97
 
102
98
  BrpmAuto.log "Executing the script in a separate process..."
103
- _, stderr, _, status = Bundler.with_clean_env do
104
- BrpmAuto.execute_command(env_vars, "ruby", "-e", "#{require_bundler};require \"brpm_script_executor\";BrpmScriptExecutor.execute_automation_script_from_other_process(\"#{modul}\", \"#{name}\", \"#{params_path}\", \"#{automation_type}\", \"#{parent_id}\", \"#{offset}\", \"#{max_records}\")") do |stdout_err|
105
- BrpmAuto.log " stdout:#{stdout_err.chomp}"
106
- end
107
- end
99
+ ruby_command = <<EOR
100
+ #{require_bundler}
101
+ require \\"brpm_script_executor\\"
102
+ BrpmScriptExecutor.execute_automation_script_from_other_process(\\"#{modul}\\", \\"#{name}\\", \\"#{params_path}\\", \\"#{automation_type}\\", \\"#{parent_id}\\", \\"#{offset}\\", \\"#{max_records}\\")
103
+ EOR
104
+ command = "#{env_var_gem_home}#{env_var_bundler}ruby -e \"#{ruby_command}\""
105
+ end
106
+
107
+ result = Bundler.with_clean_env do
108
+ BrpmAuto.execute_shell(command)
108
109
  end
109
110
 
110
111
  FileUtils.rm(params_path) if File.exists?(params_path)
111
112
 
112
- raise "The process failed with status #{status.exitstatus}.\n#{stderr}" unless status.success?
113
+ unless result["status"] == 0
114
+ BrpmAuto.log "stdout:#{result["stdout"]}"
115
+ raise "The process failed with status #{result["status"]}.\n#{result["stderr"]}"
116
+ end
113
117
 
114
118
  BrpmAuto.log "The process finished succesfully."
115
119
 
data/lib/utilities.rb CHANGED
@@ -318,6 +318,14 @@ module Utilities
318
318
  end
319
319
  end
320
320
 
321
+ def replace_in_file(file_path, pattern, replacement)
322
+ file_content = File.read(file_path)
323
+
324
+ File.open(file_path, "w") do |file|
325
+ file << file_content.gsub(pattern, replacement)
326
+ end
327
+ end
328
+
321
329
  private
322
330
 
323
331
  #TODO: still needed? the framework's error handling should take care of this already
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brpm_content_framework
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.40
4
+ version: 0.2.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - Niek Bartholomeus
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-01 00:00:00.000000000 Z
11
+ date: 2015-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh
@@ -157,7 +157,9 @@ email: niek.bartholomeus@gmail.com
157
157
  executables:
158
158
  - brpm_install
159
159
  - brpm_uninstall
160
+ - build_docker_image
160
161
  - event_handler
162
+ - publish_docker_image
161
163
  - webhook_receiver
162
164
  extensions: []
163
165
  extra_rdoc_files: []
@@ -176,11 +178,14 @@ files:
176
178
  - automations/install_module.rb
177
179
  - bin/brpm_install
178
180
  - bin/brpm_uninstall
181
+ - bin/build_docker_image
179
182
  - bin/event_handler
183
+ - bin/publish_docker_image
180
184
  - bin/webhook_receiver
181
185
  - config.yml
182
- - docker/Dockerfile
183
- - docker/docker_execute_automation
186
+ - docker/framework/Dockerfile
187
+ - docker/framework/docker_execute_automation
188
+ - docker/modules/Dockerfile
184
189
  - infrastructure/.bashrc
185
190
  - infrastructure/.brpm
186
191
  - infrastructure/config/customer_include.rb
@@ -204,7 +209,6 @@ files:
204
209
  - infrastructure/scripts/install_brpm.sh
205
210
  - infrastructure/scripts/maintenance.sh
206
211
  - infrastructure/scripts/patch_brpm.sh
207
- - infrastructure/scripts/publish_module_version.sh
208
212
  - infrastructure/scripts/restore_database.sh
209
213
  - infrastructure/scripts/run_event_handler.cmd
210
214
  - infrastructure/scripts/run_event_handler.sh
@@ -1,45 +0,0 @@
1
- #!/usr/bin/env bash
2
- USAGE="publish_module_version.sh <module name>"
3
-
4
- MODULE_NAME=$1
5
-
6
- if [ -z "$MODULE_NAME" ]; then
7
- echo "Module name is not specified. Aborting."
8
- echo "Usage: $USAGE"
9
- exit 1
10
- fi
11
-
12
- cd $(dirname $0)/../../../$MODULE_NAME
13
-
14
- echo ""
15
- echo ">>> Publishing module $MODULE_NAME as a gem to rubygems.org..."
16
- rake release
17
- if [ -f "docker/Dockerfile" ]; then
18
- MODULE_VERSION=$(eval "sed -n \"s=version: \(.*\)=\1=p\" config.yml")
19
-
20
- cd docker
21
-
22
- if [[ "$MODULE_NAME" == brpm_content_framework ]]; then
23
- OLD_MODULE_VERSION=$(eval "sed -n \"s=ENV BRPM_CONTENT_FRAMEWORK_VERSION \(.*\)=\1=p\" Dockerfile")
24
- else
25
- OLD_MODULE_VERSION=$(eval "sed -n \"s=ENV VERSION \(.*\)=\1=p\" Dockerfile")
26
- fi
27
- sed -i "" s/$OLD_MODULE_VERSION/$MODULE_VERSION/ Dockerfile
28
-
29
- echo ""
30
- echo ">>> Building docker image bmcrlm/$MODULE_NAME:$MODULE_VERSION..."
31
- docker build -t bmcrlm/$MODULE_NAME:$MODULE_VERSION . || { echo 'Aborting' ; exit 1; }
32
-
33
- sed -i "" s/$MODULE_VERSION/$OLD_MODULE_VERSION/ Dockerfile
34
-
35
- echo ""
36
- echo ">>> Publishing docker image bmcrlm/$MODULE_NAME:$MODULE_VERSION to the docker hub..."
37
- docker push bmcrlm/$MODULE_NAME:$MODULE_VERSION || { echo 'Aborting' ; exit 1; }
38
-
39
- if [[ "$MODULE_NAME" == brpm_content_framework ]]; then
40
- echo ""
41
- echo ">>> Tagging bmcrlm/$MODULE_NAME:$MODULE_VERSION as bmcrlm/$MODULE_NAME:latest..."
42
- docker tag -f bmcrlm/$MODULE_NAME:$MODULE_VERSION bmcrlm/$MODULE_NAME:latest || { echo 'Aborting' ; exit 1; }
43
- docker push bmcrlm/$MODULE_NAME:latest || { echo 'Aborting' ; exit 1; }
44
- fi
45
- fi