require "thor/group" require 'fileutils' require 'util' class Init < Thor::Group include Thor::Actions include DockerMgr::Util def self.source_root File.expand_path('../templates',__dir__) end def project_structure empty_directory "docker/apps" empty_directory "docker/attic" empty_directory "docker/backup" empty_directory "docker/base_images" directory "admin","docker/admin" empty_directory "docker/ci_runner" empty_directory "docker/proxy/certs" empty_directory "docker/proxy/vhosts.d" copy_file "gitignore","docker/.gitignore" end def create_ca FileUtils.cd 'docker/admin/ca' do puts `openssl req -x509 -newkey rsa:4096 -keyout rootCA.key -out rootCA.crt -days 7800 -sha256` end chmod 'docker/admin/ca/rootCA.key',0600 chmod 'docker/admin/ca/sign.sh',0755 FileUtils.cd 'docker' do generate_ca_installer end end def init_git puts `git init docker` end def create_base_image @user_email,@user_name = config.values_at(:email,:name) image_name = 'base' image_path = "#{base_images_dir}/#{image_name}/v1.0" @image_name = image_name @version = "1.0" @base = "ubuntu:14.04" create_image(image_path,'curl','git') end def create_base_runner @image_name = 'runner_base' image_path = "#{base_images_dir}/#{@image_name}/v1.0" @version = "1.0" @base = "ayufan/gitlab-ci-multi-runner:latest" create_image(image_path,'java','node','ruby','ruby_buildtools','node_buildtools') end no_tasks do def create_image(image_path,*packages) empty_directory "#{image_path}/administration/installation" template "Dockerfile.erb","#{image_path}/Dockerfile" add_packages(image_path,*packages) FileUtils.cp("#{admin_dir}/trust.sh","#{image_path}/administration/trust.sh") FileUtils.mkdir("#{image_path}/administration/certificates") FileUtils.cp("#{admin_dir}/ca/rootCA.crt","#{image_path}/administration/certificates/rootCA.crt") template "build.erb", "#{image_path}/build.sh" FileUtils.chmod 0755, "#{image_path}/build.sh" end end end