Sitelet https://github.com/coder/backstage-plugins/issues/144
Skip to content

Auto-cloning a Gitlab repo fails with "unable to update url base from redirection" #144

Description

@paulm-jones

Background

My organisation is exploring Coder with the Backstage plugin and Gitlab.com (Gitlab SaaS, i.e. not self-hosted).

In Backstage, before creating anything, the plugin shows:

No workspaces found for repo
https://gitlab.com/myorg/myrepo/-/blob/main/?ref_type=heads

We see #117 and the fact a change was made, and also that a merge was made to the git clone module in PR 210, but we are yet to be able to make it work.

Challenge

With a template that auto-clones, for example using the git_clone module:

data "coder_parameter" "repo_url" {
    name                = "repo_url"
    display_name  = "Git repository"
}

module "git_clone" {
  source     = "registry.coder.com/modules/git-clone/coder"
  version   = "1.0.18"
  agent_id = coder_agent.main.id
  url     = data.coder_parameter.repo_url.value
}

We see the clone fail after redirection:

Cloning https://gitlab.com/myorg/myrepo/-/blob/main/ to /home/coder/main...
Cloning into '/home/coder/main'...

fatal: unable to update url base from redirection:
  asked for: https://gitlab.com/myorg/myrepo/-/blob/main/info/refs?service=git-upload-pack
   redirect: https://gitlab.com/groups/myorg/-/saml/sso?redirect=%2Fmyorg%2Fmyrepo%2F-%2Fblob%2Fmain%2Finfo%2Frefs%3Fservice%3Dgit-upload-pack&token=<token>

We enforce single sign-on, which may explain the saml/sso redirection.

Alternatives

If we do not "auto-clone", and instead try and clone from the Workspace template directly (providing "Git repository" in the GUI), providing "https://gitlab.com/myorg/myrepo", then it works.

The downside is that the Backstage plugin won't "match" the Workspace as being related to the Backstage entity (presumably because we omitted the -/blob/main/?ref_type=heads suffix).

Has anyone been able to make this work with Gitlab yet please?

Activity

  1. code-asher commented on Oct 29, 2024

    @code-asher
    Member

    Maybe because the git-clone module is not handling blob? It seems to only handle tree. I wonder if you could work around it like:

    module "git_clone" {
      url = replace(data.coder_parameter.repo_url.value, "/blob/", "/tree/")
    }
    

    Although, I am not familiar enough with GitLab to know if blob and tree are equivalent.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions