From cc235f6debee5c00e3caebc3bd737ce6caafd46f Mon Sep 17 00:00:00 2001 From: Chris Zhu Date: Wed, 1 Jan 2025 16:38:30 -0800 Subject: [PATCH] allow separate container registry url in projects --- app/controllers/projects_controller.rb | 3 ++- app/jobs/projects/build_job.rb | 2 +- app/models/project.rb | 4 ++- app/views/projects/_edit_form.html.erb | 7 ++++++ app/views/projects/_new_form.erb | 25 ++++++++++++------- ..._add_container_registry_url_to_projects.rb | 5 ++++ db/schema.rb | 3 ++- 7 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 db/migrate/20250102003342_add_container_registry_url_to_projects.rb diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index a06a1263..6c8a702e 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -96,7 +96,8 @@ class ProjectsController < ApplicationController :cluster_id, :docker_build_context_directory, :docker_command, - :dockerfile_path + :dockerfile_path, + :container_registry_url ) end end diff --git a/app/jobs/projects/build_job.rb b/app/jobs/projects/build_job.rb index 44a3bc1b..aafd5f94 100644 --- a/app/jobs/projects/build_job.rb +++ b/app/jobs/projects/build_job.rb @@ -86,7 +86,7 @@ class Projects::BuildJob < ApplicationJob end def push_to_dockerhub(project, build) - docker_push_command = [ "docker", "push", "ghcr.io/#{project.repository_url}:latest" ] + docker_push_command = [ "docker", "push", project.container_registry_url ] build.info("Pushing Docker image to #{docker_push_command.last}", color: :yellow) stdout, stderr, status = Open3.capture3(*docker_push_command) diff --git a/app/models/project.rb b/app/models/project.rb index 9712c252..261b919f 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -5,6 +5,7 @@ # id :bigint not null, primary key # autodeploy :boolean default(TRUE), not null # branch :string default("main"), not null +# container_registry_url :string # docker_build_context_directory :string default("."), not null # docker_command :string # dockerfile_path :string default("./Dockerfile"), not null @@ -92,7 +93,8 @@ class Project < ApplicationRecord end def container_registry_url - "ghcr.io/#{repository_url}:latest" + container_registry = self.attributes["container_registry_url"] || repository_url + "ghcr.io/#{container_registry}:latest" end def deployable? diff --git a/app/views/projects/_edit_form.html.erb b/app/views/projects/_edit_form.html.erb index 4a668615..987071d1 100644 --- a/app/views/projects/_edit_form.html.erb +++ b/app/views/projects/_edit_form.html.erb @@ -58,6 +58,13 @@ <%= form.text_field :predeploy_command, class: "input input-bordered w-full focus:outline-offset-0" %> +
+ + <%= form.text_field :container_registry_url, class: "input input-bordered w-full focus:outline-offset-0" %> +
+