aboutsummaryrefslogtreecommitdiff
path: root/app/jobs/govuk_guix/generate_vm_image_and_system_job.rb
diff options
context:
space:
mode:
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.rb39
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