Skip to content

feat: support previewConfig.target.path#271

Open
lintermansjens wants to merge 1 commit intobaloise:masterfrom
lintermansjens:feat/previewconfig-target-path-support
Open

feat: support previewConfig.target.path#271
lintermansjens wants to merge 1 commit intobaloise:masterfrom
lintermansjens:feat/previewconfig-target-path-support

Conversation

@lintermansjens
Copy link
Copy Markdown

@lintermansjens lintermansjens commented Apr 8, 2026

Summary

This PR adds support for storing preview environments under a configurable subpath (previewConfig.target.path) instead of only in the deployment repo root.

Why

Some deployment repos keep manifests in certain folders.
Before this change, preview commands only worked with root-level folders.

What changed

Added previewConfig.target.path parsing and validation in GitOps config.
Added path resolution logic to combine configured target path + generated preview namespace

Updated:

  • create-preview to create/update files at the resolved path
  • delete-preview to delete previews at the resolved path
  • Improved logs to show preview namespace and resolved folder path.

Added tests for:

  • default root behavior
  • path parsing/validation (v1/v2)
  • create/delete preview with configured target path

Updated docs:

  • preview configuration now documents target.path
  • getting-started command list reflects current CLI commands

Compatibility

Default behavior is unchanged: if previewConfig.target.path is not set, previews are still created in the repository root.

Copy link
Copy Markdown
Member

@christiansiegel christiansiegel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for contributing!
Left a few minor comments regarding log and error outputs. Otherwise LGTM

preview_env_already_exist = Path(full_preview_folder_path).is_dir()
if preview_env_already_exist:
logging.info("Use existing folder for preview: %s", preview_namespace)
logging.info("Use existing folder for preview: %s (path: %s)", preview_namespace, preview_folder_path)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
logging.info("Use existing folder for preview: %s (path: %s)", preview_namespace, preview_folder_path)
logging.info("Use existing folder for preview: %s", preview_folder_path)

The preview_namespace alone is not really relevant anymore - let's drop it

logging.info("Use existing folder for preview: %s (path: %s)", preview_namespace, preview_folder_path)
return False
logging.info("Create new folder for preview: %s", preview_namespace)
logging.info("Create new folder for preview: %s (path: %s)", preview_namespace, preview_folder_path)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
logging.info("Create new folder for preview: %s (path: %s)", preview_namespace, preview_folder_path)
logging.info("Create new folder for preview: %s", preview_folder_path)

The preview_namespace alone is not really relevant anymore - let's drop it

preview_namespace = gitops_config.get_preview_namespace(preview_id)
logging.info("Preview folder name: %s", preview_namespace)
preview_folder_path = gitops_config.get_preview_folder_path(preview_id)
logging.info("Preview folder name: %s (path: %s)", preview_namespace, preview_folder_path)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
logging.info("Preview folder name: %s (path: %s)", preview_namespace, preview_folder_path)
logging.info("Preview folder: %s", preview_folder_path)

preview_folder_exists = self.__delete_folder_if_exists(preview_target_git_repo, preview_folder_path)
if not preview_folder_exists:
if self.__args.expect_preview_exists:
raise GitOpsException(f"There was no preview with name: {preview_namespace}")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
raise GitOpsException(f"There was no preview with name: {preview_namespace}")
raise GitOpsException(f"There was no preview at path: {preview_folder_path}")

Let's make it more obvious where we were looking for the preview

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants