build.rb improvements
authorRafael dos Santos Silva <xfalcox@gmail.com>
Fri, 21 Oct 2016 01:32:01 +0000 (23:32 -0200)
committerRafael dos Santos Silva <xfalcox@gmail.com>
Fri, 21 Oct 2016 01:32:01 +0000 (23:32 -0200)
image/base/Dockerfile
image/base/VERSION [new file with mode: 0644]
image/build.rb

index 3a4e0c88764711ae7e276b5ca6e614c2c7b0cea1..6158e837a3a93bec2d91c9b50f8acd1e266c96f3 100644 (file)
@@ -7,7 +7,7 @@ ENV PG_VERSION 9.5.4-1.pgdg16.04+2
 
 MAINTAINER Sam Saffron "https://twitter.com/samsaffron"
 
-RUN echo "${version}" > /VERSION
+ADD VERSION /VERSION
 
 RUN apt-get update && apt-get install -y lsb-release sudo curl
 RUN echo "debconf debconf/frontend select Teletype" | debconf-set-selections
diff --git a/image/base/VERSION b/image/base/VERSION
new file mode 100644 (file)
index 0000000..8ed486a
--- /dev/null
@@ -0,0 +1 @@
+1.3.7
\ No newline at end of file
index 2860293f60dca4b812709698eadace99530154c6..fcbed10198b0bc7e201cd1a8d17c0bf830b3df82 100644 (file)
@@ -25,36 +25,43 @@ def ensure_docker_squash
 end
 
 
-def build(image, version)
-  lines = run("cd #{image[:name]} && docker build --build-arg version=#{version} .")
+def build(image)
+  lines = run("cd #{image[:name]} && docker build .")
   img = lines[-1]["successfully built ".length..-1].strip
 
   if image[:squash]
 
-    layers_to_squash = run("docker history #{img} | wc -l").first.to_i - (1 + image[:layers_to_keep]) if image[:layers_to_keep] != nil
-
-    if layers_to_keep != nil
-      run("docker-squash -t #{image[:tag]} --verbose -f #{layers_to_squash} #{img}")
+    if image[:layers_to_keep] == nil
+      run("docker-squash -t #{image[:tag]} --cleanup --verbose #{img}")
     else
-      run("docker-squash -t #{image[:tag]} --verbose #{img}")
+      layers_to_squash = run("docker history #{img} | wc -l").first.to_i - (1 + image[:layers_to_keep])
+      run("docker-squash -t #{image[:tag]} --cleanup --verbose -f #{layers_to_squash} #{img}")
     end
 
+    run("docker rmi #{img}")
+
   else
     run("docker tag #{img} #{image[:tag]}")
   end
 end
 
 def bump(image, image_version)
-  run("sed -i '' -e 's/^\(# NAME:\).*$$/\1     discourse\/#{image_dir}/' #{image_dir}/Dockerfile")
-  run("sed -i '' -e 's/^\(# VERSION:\).*$$/\1  #{image_version}/' #{image_dir}/Dockerfile")
-  run("sed -i '' -e 's/^\(FROM discourse\/[^:]*:\).*/\1#{image_version}/' #{image_dir}/Dockerfile")
+  run("echo #{image_version} > base/VERSION") if image == 'base'
+  run("sed -i '' -e 's/^\(# NAME:\).*$$/\1     discourse\/#{image}/' #{image}/Dockerfile")
+  run("sed -i '' -e 's/^\(# VERSION:\).*$$/\1  #{image_version}/' #{image}/Dockerfile")
+  run("sed -i '' -e 's/^\(FROM discourse\/[^:]*:\).*/\1#{image_version}/' #{image}/Dockerfile")
+end
+
+def dev_deps()
+  run("sed -e 's/\(db_name: discourse\)/\1_development/' ../templates/postgres.template.yml > discourse_dev/postgres.template.yml")
+  run("cp ../templates/redis.template.yml discourse_dev/redis.template.yml")
 end
 
 options = {}
 OptionParser.new do |parser|
   parser.on("-i", "--image image",
             "Build the image. No parameter means [base discourse discourse_test].") do |i|
-    options[:image] = [i]
+    options[:image] = [i.to_sym]
   end
   parser.on("-b", "--bump version",
             "Bumps the version in the Dockerfiles specified by --image") do |v|
@@ -85,6 +92,9 @@ images = {
 todo.each do |image|
   puts images[image]
   bump(images[image][:name], options[:version]) if options[:version]
-  run "(cd base && ./download_phantomjs)" if image == 'base'  
-  build(images[image], version)
+
+  dev_deps() if image == 'discourse_dev'
+  run "(cd base && ./download_phantomjs)" if image == 'base'
+
+  build(images[image])
 end