More work to make automatic build easier
authorRafael dos Santos Silva <xfalcox@gmail.com>
Wed, 1 Feb 2017 02:41:39 +0000 (00:41 -0200)
committerRafael dos Santos Silva <xfalcox@gmail.com>
Wed, 1 Feb 2017 02:41:39 +0000 (00:41 -0200)
image/auto_build.rb
image/base/Dockerfile
image/base/install-imagemagick
image/discourse_dev/Dockerfile
image/discourse_test/Dockerfile

index c7d0d68710afa6edb17619e381b3b749a5dfc715..1132aa539a7024bfd39940fb3d664c7de41853f6 100644 (file)
@@ -3,6 +3,15 @@
 require 'pty'
 require 'optparse'
 
+TODO = [:base, :discourse_test, :discourse_dev]
+VERSION = "2.0.#{Time.now.strftime('%Y%m%d')}"
+
+images = {
+  base: { name: 'base', tag: "discourse/base:", squash: true },
+  discourse_test: { name: 'discourse_test', tag: "discourse/discourse_test:", squash: false},
+  discourse_dev: { name: 'discourse_dev', tag: "discourse/discourse_dev:", squash: false }
+}
+
 def run(command)
   lines = []
   PTY.spawn(command) do |stdin, stdout, pid|
@@ -20,9 +29,9 @@ def run(command)
 end
 
 def build(image)
-  sucess = false
-  lines = run("cd #{image[:name]} && docker build . --tag #{image[:tag]} #{image[:squash] ? '--squash' : ''}")
-  sucess = true if lines[-1] =~ 'successfully built'
+  lines = run("cd #{image[:name]} && docker build . --tag #{image[:tag] + VERSION} #{image[:squash] ? '#--squash' : ''}")
+  raise "Error building the image for #{image[:name]}: #{lines[-1]}" if lines[-1] =~ /successfully built/
+  run("docker tag #{image[:tag] + VERSION} #{image[:tag]}release")
 end
 
 def dev_deps()
@@ -30,28 +39,8 @@ def dev_deps()
   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.to_sym]
-  end
-end.parse!
-
-DEFAULT_IMAGES = [:base, :discourse, :discourse_test, :discourse_dev, :discourse_bench]
-
-todo = options[:image] || DEFAULT_IMAGES
-version = 'release'
-
-images = {
-  base: { name: 'base', tag: "discourse/base:#{version}", squash: true },
-  discourse_test: { name: 'discourse_test', tag: "discourse/discourse_test:#{version}", squash: false},
-  discourse_dev: { name: 'discourse_dev', tag: "discourse/discourse_dev:#{version}", squash: false }
-}
-
-todo.each do |image|
+TODO.each do |image|
   puts images[image]
-  bump(images[image][:name], options[:version]) if options[:version]
 
   dev_deps() if image == :discourse_dev
   run "(cd base && ./download_phantomjs)" if image == :base
index 74d1614a73d00d838ba6d0b8b4c7a01ec317e973..6e587dd995667b773c48ba4a3aef85edf21da837 100644 (file)
@@ -1,5 +1,5 @@
 # NAME:     discourse/base
-# VERSION:  build
+# VERSION:  release
 FROM ubuntu:16.04
 
 ENV PG_MAJOR 9.5
@@ -80,7 +80,7 @@ ADD install-imagemagick /tmp/install-imagemagick
 RUN /tmp/install-imagemagick
 
 # Validate install
-RUN ruby -e "v='`convert -version`'; ['png','tiff','jpeg','freetype'].each{ |f| ((STDERR.puts('no ' + f +  ' support in imagemagick')); exit(-1)) unless v.include?(f)}"
+RUN ruby -e "v = %x(convert -version); ['png','tiff','jpeg','freetype'].each{ |f| ((STDERR.puts('no ' + f +  ' support in imagemagick')); exit(-1)) unless v.include?(f)}"
 
 #
 ADD install-pngcrush /tmp/install-pngcrush
index 80b429aa757293c142bde6d9c28e5a30ef5b90e3..2cd110ebd9eb31f21c581df010e9abd2e1c77fff 100755 (executable)
@@ -19,7 +19,7 @@ make all && make install
 
 
 # Build and install ImageMagick
-wget -O $WDIR/ImageMagick.tar.gz "http://www.imagemagick.org/download/ImageMagick-6.9.7-0.tar.gz"
+wget -O $WDIR/ImageMagick.tar.gz "http://www.imagemagick.org/download/ImageMagick-6.9.7-6.tar.gz"
 IMDIR=$WDIR/$(tar tzf $WDIR/ImageMagick.tar.gz --wildcards "ImageMagick-*/configure" |cut -d/ -f1)
 tar zxf $WDIR/ImageMagick.tar.gz -C $WDIR
 cd $IMDIR
index d9a1184b0f93ff95636600b4fb6a07f51124e989..8e106da1023d23b31bbb49eb9fdcd447a61cfd8f 100644 (file)
@@ -1,5 +1,5 @@
 # NAME:     discourse/discourse_dev
-# VERSION:  build
+# VERSION:  release
 FROM discourse/base:release
 
 MAINTAINER Sam Saffron "https://twitter.com/samsaffron"
index 179273632222d5cdc13645abd8c9e9d6b351088f..1662ab1a6395a2e76ee05bfb03da21eed080cae6 100644 (file)
@@ -1,5 +1,5 @@
 # NAME:     discourse/discourse_test
-# VERSION:  build
+# VERSION:  release
 FROM discourse/base:release
 
 MAINTAINER Sam Saffron "https://twitter.com/samsaffron"