Feature/1175 add minos support - #322
Merged
Merged
Conversation
…arent)" This reverts commit d5b08a9.
filippo-20tab
approved these changes
Apr 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Modernizes the Django bootstrapper to produce Minos-aligned service repos. Deployments now run via the Minos service module image and OpenTofu GitLab Components (
opentofu/apply@3.11.0); the legacystacks+deployment_type+environments_distributionmodel is replaced with anenv_to_clustermapping (default{development: dev, staging: dev, production: main}).Reference output:
gs1-one/api. Part of TG-1175 (sister PRs onnextjs-continuous-deliveryandtalos).Highlights
stacks+environments_distribution+deployment_type⟶env_to_cluster: dict[str, str]; per-envcluster_slugthreaded through cookiecutter contextminos/skeleton (common.tfvars+{development,staging,production}/{this.tfvars,shared-config.yaml}) replacing the legacyterraform/+scripts/deploy/layout.gitlab-ci.yml(stages: Build / Test / Pact-verify / Pact-check / Deploy / Pact-tag / Report / Sentry); deploy job extends${CI_SERVER_FQDN}/components/opentofu/apply@3.11.0with imageregistry.gitlab.com/20tab-open/minos/service:latestandTF_WORKSPACE=${PROJECT_SLUG}_${SERVICE_SLUG}_${CI_ENVIRONMENT_SLUG}Dockerfileonghcr.io/astral-sh/uv:python3.14-bookworm-slim,uv sync --frozen, separatebase/remote/localstagesuv+pyproject.toml(dropsrequirements/*.txt);scripts/realigned to gs1-one/api (ci_test_entrypoint,ci_pact,ci_sentry,entrypoint,test,pact_verify,justfile)${PROJECT_SLUG}/envs/{env}/{service_slug}/...(Talos owns${PROJECT_SLUG}/envs/{env}/{key}env-shared paths)tfe_project+tfe_workspace(withdefault_execution_mode = "local"inherited); the sub-bootstrapper only forwardsterraform_cloud_organizationto the generated.gitlab-ci.ymlpython_version,minos_service_image,opentofu_component_version,opentofu_version(defaults match the current 20tab platform — overrideable when invokingRunnerdirectly)Breaking changes
--deployment-type,--environments-distribution,--terraform-backend,--terraform-cloud-hostname,--terraform-cloud-token,--terraform-cloud-organization-create*,--terraform-cloud-admin-emailremovedcookiecutter.json:deployment_type,environments_distribution,stacks,terraform_backendremoved;python_version,minos_service_image,opentofu_component_version,opentofu_versionaddedterraform/,scripts/deploy/,requirements/*.txtno longer emitted; replaced byminos/+pyproject.toml+uv.lockterraform/terraform-cloud/module deletedvalidate_or_prompt_emailremoved (only consumer was the dropped TFC flow)TERRAFORM_BACKEND_*,STACKS_*,*_ENV_STACK_*,DEPLOYMENT_TYPE_*,ENVIRONMENTS_DISTRIBUTION_*removedAPI contract with talos
Runner.gitlab_namespace_pathaccepts nested paths (e.g.20tab/gs1-one); Talos sets it to{parent_group}/{project_slug}atinit_subrepotime. No newparent_gitlab_groupfield — reuse of the existing one is sufficient.pact_*are not Runner params: secrets live at${PROJECT_SLUG}/pactin Vault and are read at runtime byscripts/ci_pact.shvia the GitLab JWT auth backend.Testing
tests/test_collector.pyupdated: droppedtest_deployment_type_*,test_environments_distribution_*,test_terraform_backend_*,test_terraform_cloud_*; addedtest_terraform_cloud_organization_{from_input,from_options}; trimmedtest_collectandtest_get_runnerto the new field set.uv:python3.14-bookworm-slimsmoke harness with the default toolchain values; output matches gs1-one/api fixtures.Merge order
Land before the corresponding
talosPR —talosclones the sub-bootstrappers via `BACKEND_TEMPLATE_URLS