GitLab Privateリポジトリより go get してみる
自分が作成したGitLabリポジトリより go get する方法をメモ
実行環境
- Windows 10 Pro
- GO 1.15.6
GitLabリポジトリ作成
- https://gitlab.com/へログインし、プロジェクトを作成
- Visiblity Level を [Private]に設定
- 今回は、ProjectName を "go-package"とする
今回go get する自作パッケージを配置
- リポジトリよりクローン
go mod init XXXX
でgo.mod を生成- mathディレクトリ内に、自作"math"パッケージを作成
- mathパッケージは平均を返す関数"Average"のみ実装
$ git clone https://gitlab.com/xxxxxx/go-package.git $ cd go-package.git $ go mod init gitlab.com/xxxxx/go-package # 自分のリポジトリに合わせて編集する
# /go-package/go.mod module gitlab.com/xxxxx/go-package go 1.15
# /go-package/math/math.go package math // Average 平均値を返す func Average(s []int) int { total := 0 for _, v := range s { total += v } return int(total / len(s)) }
# ディレクトリ構成 go-package │ go.mod └─math └─math.go
AccessToken作成
- リポジトリへアクセスするためのトークンを作成 参考:https://capibara1969.com/55/
read_api
とread_repository
権限を付けて発行- 発行されたトークンは一度しか表示されないので、忘れないようメモ
go get でインストール
確認のため適当なプロジェクト作成
$ mkdir goproject $ cd goproject $ go mod init main
AccessToken登録
~/.netrc
を作成GITLAB_USERNAME
: GitLabにログインしているユーザ名ACCESS_TOKEN
: 先ほど作成したAccessToken
# ~/.netrc machine gitlab.com login GITLAB_USERNAME@gitlab.com password ACCESS_TOKEN
環境変数 設定
$ set GOPRIATE=gitlab.com/xxxxxx/go-package
いざ、go get
- イントールされたファイルは、
$GOPATH\pkg\mod\gitlab.com\xxxxxx\go-package@v0.0.0
に配置される
$ go get gitlab.com/xxxxx/go-package
# /goproject/go.mod module main go 1.15 require gitlab.com/xxxxxx/go-package v0.0.0 // indirect
プロジェクトへインポート
- 適当なgoファイル
main.go
を作成し、自作パッケージをインポート math/Average
関数を実行し、平均値計算結果が出力される
# main.go package main import ( "fmt" // インポート "gitlab.com/xxxxxx/go-package/math" ) func main() { fmt.Println(math.Average([]int{1, 2, 3})) }
# 結果 2
GOPRIVATE
を設定しなかった場合
503 Service Unavailable
エラーが返ってくる
go get gitlab.com/xxxxxx/go-package: unrecognized import path "gitlab.com/xxxxxx": reading https://gitlab.com/xxxxxx?go-get=1: 503 Service Unavailable