DEV Community

Bo
Bo

Posted on

Golang: go get package from your private repo in Gitlab

#go

We can use go get to install a module from our private repo.

Say we have a private repo gomath that is hosted in gitlab under url: https://gitlab.com/yourname/gomath:

File math.go:

package gomath

func Double(a int) int {
    return a * 2
}
Enter fullscreen mode Exit fullscreen mode

Now in your other Go module you want to install this package, you need to do 2 things:

  1. Set the GOPRIVATE env variable
  2. Set git config to let git know your personal access token in gitlab. You can get the token from gitlab > preferences > Access Tokens. Make sure your token has the "read_repository" scope.

File config.sh:

#!/usr/bin/env bash

go env -w GOPRIVATE=https://gitlab.com/yourname/gomath

git config \
  --global \
  url."https://<yourname>:<personal access token from gitlab>@gitlab.com".insteadOf \
  "https://gitlab.com"
Enter fullscreen mode Exit fullscreen mode

Run this script:

$ bash config.sh
Enter fullscreen mode Exit fullscreen mode

Now under your Go module, you can just use go get like normal:

$ go get https://gitlab.com/yourname/gomath
Enter fullscreen mode Exit fullscreen mode

Then use it in main.go:

package main

import (
    "fmt"

    "gitlab.com/yourname/gomath"
)

func main() {
    num := 2
    result := gomath.Double(num)
    fmt.Println("result:", result)
}
Enter fullscreen mode Exit fullscreen mode

Discussion (0)