aboutsummaryrefslogtreecommitdiff
path: root/app/jobs/govuk_guix/build_job.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/jobs/govuk_guix/build_job.rb')
-rw-r--r--app/jobs/govuk_guix/build_job.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/app/jobs/govuk_guix/build_job.rb b/app/jobs/govuk_guix/build_job.rb
new file mode 100644
index 0000000..381a717
--- /dev/null
+++ b/app/jobs/govuk_guix/build_job.rb
@@ -0,0 +1,33 @@
+require 'ruby_terraform'
+require 'open3'
+
+class GovukGuix::BuildJob < GovukGuix::Job
+ @retry_interval = 30
+
+ def run(mini_environment_id)
+ logger.info "GovukGuix::BuildJob: 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",
+ "--rails-environment=production",
+ "--app-domain=#{slug}.aws.cbaines.net",
+ "--web-domain=www.#{slug}.aws.cbaines.net",
+ "--use-high-ports=false",
+ "--use-https=certbot",
+ "--fallback",
+ ]
+
+ run_command(command) do |output|
+ store_path = output.last.strip
+ logger.debug("GovukGuix::BuildJob: start_command: #{store_path}")
+
+ mini_environment.update(start_command: store_path)
+ end
+ end
+end