You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
5.0 KiB
Markdown
183 lines
5.0 KiB
Markdown
---
|
|
display_name: Git Clone
|
|
description: Clone a Git repository by URL and skip if it exists.
|
|
icon: ../.icons/git.svg
|
|
maintainer_github: coder
|
|
verified: true
|
|
tags: [git, helper]
|
|
---
|
|
|
|
# Git Clone
|
|
|
|
This module allows you to automatically clone a repository by URL and skip if it exists in the base directory provided.
|
|
|
|
```tf
|
|
module "git-clone" {
|
|
count = data.coder_workspace.me.start_count
|
|
source = "registry.coder.com/modules/git-clone/coder"
|
|
version = "1.0.28"
|
|
agent_id = coder_agent.example.id
|
|
url = "https://github.com/coder/coder"
|
|
}
|
|
```
|
|
|
|
## Examples
|
|
|
|
### Custom Path
|
|
|
|
```tf
|
|
module "git-clone" {
|
|
count = data.coder_workspace.me.start_count
|
|
source = "registry.coder.com/modules/git-clone/coder"
|
|
version = "1.0.28"
|
|
agent_id = coder_agent.example.id
|
|
url = "https://github.com/coder/coder"
|
|
base_dir = "~/projects/coder"
|
|
}
|
|
```
|
|
|
|
### Git Authentication
|
|
|
|
To use with [Git Authentication](https://coder.com/docs/v2/latest/admin/git-providers), add the provider by ID to your template:
|
|
|
|
```tf
|
|
module "git-clone" {
|
|
count = data.coder_workspace.me.start_count
|
|
source = "registry.coder.com/modules/git-clone/coder"
|
|
version = "1.0.28"
|
|
agent_id = coder_agent.example.id
|
|
url = "https://github.com/coder/coder"
|
|
}
|
|
|
|
data "coder_git_auth" "github" {
|
|
id = "github"
|
|
}
|
|
```
|
|
|
|
## GitHub clone with branch name
|
|
|
|
To GitHub clone with a specific branch like `feat/example`
|
|
|
|
```tf
|
|
# Prompt the user for the git repo URL
|
|
data "coder_parameter" "git_repo" {
|
|
name = "git_repo"
|
|
display_name = "Git repository"
|
|
default = "https://github.com/coder/coder/tree/feat/example"
|
|
}
|
|
|
|
# Clone the repository for branch `feat/example`
|
|
module "git_clone" {
|
|
count = data.coder_workspace.me.start_count
|
|
source = "registry.coder.com/modules/git-clone/coder"
|
|
version = "1.0.28"
|
|
agent_id = coder_agent.example.id
|
|
url = data.coder_parameter.git_repo.value
|
|
}
|
|
|
|
# Create a code-server instance for the cloned repository
|
|
module "code-server" {
|
|
count = data.coder_workspace.me.start_count
|
|
source = "registry.coder.com/modules/code-server/coder"
|
|
version = "1.0.28"
|
|
agent_id = coder_agent.example.id
|
|
order = 1
|
|
folder = "/home/${local.username}/${module.git_clone[count.index].folder_name}"
|
|
}
|
|
|
|
# Create a Coder app for the website
|
|
resource "coder_app" "website" {
|
|
count = data.coder_workspace.me.start_count
|
|
agent_id = coder_agent.example.id
|
|
order = 2
|
|
slug = "website"
|
|
external = true
|
|
display_name = module.git_clone[count.index].folder_name
|
|
url = module.git_clone[count.index].web_url
|
|
icon = module.git_clone[count.index].git_provider != "" ? "/icon/${module.git_clone[count.index].git_provider}.svg" : "/icon/git.svg"
|
|
}
|
|
```
|
|
|
|
Configuring `git-clone` for a self-hosted GitHub Enterprise Server running at `github.example.com`
|
|
|
|
```tf
|
|
module "git-clone" {
|
|
count = data.coder_workspace.me.start_count
|
|
source = "registry.coder.com/modules/git-clone/coder"
|
|
version = "1.0.28"
|
|
agent_id = coder_agent.example.id
|
|
url = "https://github.example.com/coder/coder/tree/feat/example"
|
|
git_providers = {
|
|
"https://github.example.com/" = {
|
|
provider = "github"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## GitLab clone with branch name
|
|
|
|
To GitLab clone with a specific branch like `feat/example`
|
|
|
|
```tf
|
|
module "git-clone" {
|
|
count = data.coder_workspace.me.start_count
|
|
source = "registry.coder.com/modules/git-clone/coder"
|
|
version = "1.0.28"
|
|
agent_id = coder_agent.example.id
|
|
url = "https://gitlab.com/coder/coder/-/tree/feat/example"
|
|
}
|
|
```
|
|
|
|
Configuring `git-clone` for a self-hosted GitLab running at `gitlab.example.com`
|
|
|
|
```tf
|
|
module "git-clone" {
|
|
count = data.coder_workspace.me.start_count
|
|
source = "registry.coder.com/modules/git-clone/coder"
|
|
version = "1.0.28"
|
|
agent_id = coder_agent.example.id
|
|
url = "https://gitlab.example.com/coder/coder/-/tree/feat/example"
|
|
git_providers = {
|
|
"https://gitlab.example.com/" = {
|
|
provider = "gitlab"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Git clone with branch_name set
|
|
|
|
Alternatively, you can set the `branch_name` attribute to clone a specific branch.
|
|
|
|
For example, to clone the `feat/example` branch:
|
|
|
|
```tf
|
|
module "git-clone" {
|
|
count = data.coder_workspace.me.start_count
|
|
source = "registry.coder.com/modules/git-clone/coder"
|
|
version = "1.0.28"
|
|
agent_id = coder_agent.example.id
|
|
url = "https://github.com/coder/coder"
|
|
branch_name = "feat/example"
|
|
}
|
|
```
|
|
|
|
## Git clone with different destination folder
|
|
|
|
By default, the repository will be cloned into a folder matching the repository name. You can use the `folder_name` attribute to change the name of the destination folder to something else.
|
|
|
|
For example, this will clone into the `~/projects/coder/coder-dev` folder:
|
|
|
|
```tf
|
|
module "git-clone" {
|
|
count = data.coder_workspace.me.start_count
|
|
source = "registry.coder.com/modules/git-clone/coder"
|
|
version = "1.0.28"
|
|
agent_id = coder_agent.example.id
|
|
url = "https://github.com/coder/coder"
|
|
folder_name = "coder-dev"
|
|
base_dir = "~/projects/coder"
|
|
}
|
|
```
|