Skip to content

Git Flow: terraform-provider-coder: create new coder_git_repo data source #404

@johnstcn

Description

@johnstcn

Create a new coder_git_repo Coder data source to support the following use-cases:

  1. Pre-defined Git repo with hard-coded branch:
data "coder_git_repo" "repo" {
  provider = "my-github"
  url = "[email protected]:coder/coder.git"
}

module "git-clone" {
  url = data.coder_git_repo.repo.url
  branch_name = "main"
  git_providers = {
    "[email protected]": "my-github"
  }
}
  1. Pre-defined Git repo with configurable branch:
data "coder_git_repo" "repo" {
  provider = "my-github"
  url = "[email protected]:coder/coder.git"
}

data "coder_parameter" "git_branch" {
  type = "string"
  default = data.coder_git_repo.repo.default_branch
}

module "git-clone" {
  url = data.coder_git_repo.repo.url
  branch_name = data.coder_parameter.git_branch.value
  git_providers = {
    "[email protected]": "my-github"
  }
}
  1. Configurable Git repo with configurable branch:
data "coder_parameter" "git_repo" {
  type = "string"
  default = "[email protected]:coder/coder.git"
}

data "coder_git_repo" "repo" {
  provider = "my-github"
  url = data.coder_parameter.git_repo.value
}

data "coder_parameter" "git_branch" {
  type = "string"
  default = data.coder_git_repo.repo.default_branch
}

module "git-clone" {
  url = data.coder_git_repo.repo.url
  branch_name = data.coder_parameter.git_branch.value
  git_providers = {
    "[email protected]": "my-github"
  }
}

Implementation Notes:

  • coderd will be responsible for querying the remote repository and setting the required data in the data source based on user inputs. We need to be using the existing user's oauth2 tokens to authenticate with the Git provider. Doing this in the provider means that typographical errors or issues cloning the repo will only be discovered at plan/apply time, and not while the user is still filling out the form.
  • If possible, we should only allow one coder_git_repo data source per template.
  • If possible, we should ensure that all coder_parameter references to this data source are immutable. Rationale: if a user later changes the git repo linked to their workspace, the expected behaviour is not clear.

Metadata

Metadata

Assignees

No one assigned

    Labels

    mestimated at less than 1 week of work

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions