Summary
We are driving Canine headlessly through its MCP server (which is great — far more complete than the REST v1 surface). In BOOT_MODE=cluster, projects created via the create_project MCP tool end up with a build configuration that cannot build:
-
No build cloud attached. create_project only permits dockerfile_path / context_directory for the build configuration. In cluster mode the default driver is :k8s, but build_cloud_id is never set, so Projects::BuildJob hits K8::BuildCloudManager.new(..., project.build_configuration.build_cloud) with nil even when the target cluster has a build cloud installed.
-
Wrong registry for enterprise git providers. BuildBuildConfiguration.default_build_configuration prefers the git provider's native registry when has_native_container_registry? — for GitLab that resolves to a hardcoded registry.gitlab.com (Provider#registry_base_url), which is wrong for self-hosted GitLab instances (and many of them run without a container registry at all). There is no way to select an existing container_registry provider from the MCP tool.
-
image_repository defaults to project.repository_url (owner/repo), which assumes the registry namespace mirrors the git namespace — often not true for a private Harbor-style registry.
Suggested direction
Either expose build_cloud_id / build provider_id / image_repository as optional params on create_project, or make the defaults smarter in cluster mode: attach the target cluster's build cloud automatically and prefer an explicitly configured container_registry provider over the git provider's assumed registry.
We currently patch the defaults via an initializer (cluster's build cloud + last container_registry provider + an env-configurable image namespace). Happy to turn whichever direction you prefer into a PR.
Summary
We are driving Canine headlessly through its MCP server (which is great — far more complete than the REST v1 surface). In
BOOT_MODE=cluster, projects created via thecreate_projectMCP tool end up with a build configuration that cannot build:No build cloud attached.
create_projectonly permitsdockerfile_path/context_directoryfor the build configuration. In cluster mode the default driver is:k8s, butbuild_cloud_idis never set, soProjects::BuildJobhitsK8::BuildCloudManager.new(..., project.build_configuration.build_cloud)withnileven when the target cluster has a build cloud installed.Wrong registry for enterprise git providers.
BuildBuildConfiguration.default_build_configurationprefers the git provider's native registry whenhas_native_container_registry?— for GitLab that resolves to a hardcodedregistry.gitlab.com(Provider#registry_base_url), which is wrong for self-hosted GitLab instances (and many of them run without a container registry at all). There is no way to select an existingcontainer_registryprovider from the MCP tool.image_repositorydefaults toproject.repository_url(owner/repo), which assumes the registry namespace mirrors the git namespace — often not true for a private Harbor-style registry.Suggested direction
Either expose
build_cloud_id/ buildprovider_id/image_repositoryas optional params oncreate_project, or make the defaults smarter in cluster mode: attach the target cluster's build cloud automatically and prefer an explicitly configuredcontainer_registryprovider over the git provider's assumed registry.We currently patch the defaults via an initializer (cluster's build cloud + last
container_registryprovider + an env-configurable image namespace). Happy to turn whichever direction you prefer into a PR.