Files
coder/docs/templates/open-in-coder.md
Muhammad Atif Ali f5ce911b8d docs: make use of display_name and name in Open with Coder (#7372)
This PR removed the spaces from `name` and makes it equal to the resource name as we now have a sperate field `display_name` https://github.com/coder/coder/pull/6919

The docs references https://github.com/bpmct/coder-templates/tree/main/kubernetes-open-in-coder example which does not yet makes use of  `display name` and needs updating.
2023-05-02 09:51:50 -05:00

3.3 KiB

Open in Coder

An "Open in Coder" button can be embedded into your git repos or internal wikis to allow developers to quickly launch a new workspace.

How it works

To support any infrastructure and software stack, Coder provides a generic approach for "Open in Coder" flows.

  1. Set up Git Authentication in your Coder deployment

  2. Modify your template to auto-clone repos:

    • If you want the template to clone a specific git repo

      # Require git authentication to use this template
      data "coder_git_auth" "github" {
          id = "github"
      }
      
      resource "coder_agent" "dev" {
          # ...
          dir = "~/coder"
          startup_script =<<EOF
      
          # Clone repo from GitHub
          if [ ! -d "coder" ]
          then
              git clone https://github.com/coder/coder
          fi
      
          EOF
      }
      

      Note: The dir attribute can be set in multiple ways, for example:

      • ~/coder
      • /home/coder/coder
      • coder (relative to the home directory)
    • If you want the template to support any repository via parameters

      # Require git authentication to use this template
      data "coder_git_auth" "github" {
          id = "github"
      }
      
      # 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"
      }
      
      locals {
          folder_name = try(element(split("/", data.coder_parameter.git_repo.value), length(split("/", data.coder_parameter.git_repo.value)) - 1), "")
      }
      
      resource "coder_agent" "dev" {
          # ...
          dir = "~/${local.folder_name}"
          startup_script =<<EOF
      
          # Clone repo from GitHub
          if [ ! -d "${local.folder_name}" ]
          then
              git clone ${data.coder_parameter.git_repo.value}
          fi
      
          EOF
      }
      
  3. Embed the "Open in Coder" button with Markdown

    [![Open in Coder](https://YOUR_ACCESS_URL/open-in-coder.svg)](https://YOUR_ACCESS_URL/templates/YOUR_TEMPLATE/workspace)
    

    Be sure to replace YOUR_ACCESS_URL with your Coder access url (e.g. https://coder.example.com) and YOUR_TEMPLATE with the name of your template.

  4. Optional: pre-fill parameter values in the "Create workspace" page

    This can be used to pre-fill the git repo URL, disk size, image, etc.

    [![Open in Coder](https://YOUR_ACCESS_URL/open-in-coder.svg)](https://YOUR_ACCESS_URL/templates/YOUR_TEMPLATE/workspace?param.git_repo=https://github.com/coder/slog&param.home_disk_size%20%28GB%29=20)
    

    Pre-filled parameters

Example: Kubernetes

For a full example of the Open in Coder flow in Kubernetes, check out this example template.

Devcontainer support

Devcontainer support is on the roadmap. Follow along here