Open
Description
Create a new coder_git_repo
Coder data source to support the following use-cases:
- 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"
}
}
- 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"
}
}
- 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.