diff options
Diffstat (limited to 'app/jobs/govuk_guix/generate_vm_image_and_system_job.rb')
-rw-r--r-- | app/jobs/govuk_guix/generate_vm_image_and_system_job.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/app/jobs/govuk_guix/generate_vm_image_and_system_job.rb b/app/jobs/govuk_guix/generate_vm_image_and_system_job.rb new file mode 100644 index 0000000..21455f9 --- /dev/null +++ b/app/jobs/govuk_guix/generate_vm_image_and_system_job.rb @@ -0,0 +1,39 @@ +require 'ruby_terraform' +require 'open3' + +class GovukGuix::GenerateVmImageAndSystemJob < GovukGuix::Job + @retry_interval = 30 + + def run(mini_environment_id) + logger.info "#{self.class}: Building mini environment #{mini_environment_id}" + + mini_environment = MiniEnvironment.find(mini_environment_id) + + slug = mini_environment.name.parameterize + + command = [ + "#{mini_environment.govuk_guix_revision.store_path}/bin/govuk", + "system", + "build", + "--output=vm-image-and-system", + "--rails-environment=production", + "--app-domain=#{slug}.aws.cbaines.net", + "--web-domain=www.#{slug}.aws.cbaines.net", + "--use-high-ports=false", + "--use-https=certbot", + "--fallback", + "whitehall", + ] + + run_command(command) do |output| + store_path = output.last.strip + logger.debug "#{self.class}: vm_image_and_system: #{store_path}" + + mini_environment.update( + backend_data: { + vm_image_and_system: store_path + } + ) + end + end +end |