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
pipenv + Flask 簡単なwebアプリケーション作成
最近初めてpipenvを使い仮想環境とパッケージ管理を行えることを知ったので、メモ。
pipenvとは
仮想環境作成(venv)とパッケージ管理(pip)が合わさったもの
実行環境
- Windows10 Pro
- python 3.9.6
準備
pipenvインストール
pipコマンドでインストール
pip install --upgrade pip # pipアップグレード(必要に応じて) pip install pipenv
プロジェクトファイル作成
mkdir project cd project
仮想環境作成
使用するpythonバージョンに応じて選択(選択したバージョンのpythonがインストールされていること)
実行すると、~/.virtualenvs/project-XXXXXX
に仮想環境が作成され、プロジェクト内にPipfile
が作成される
# 仮想環境作成 pipenv --three # python3で作成 pipenv --two # python2で作成 pipenv --python 3.8 # バージョンを指定して作成
# project\Pipfile [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] [dev-packages] [requires] python_version = "3.9"
作成する場所を変更する場合
たとえば以下のように変更したい場合、それぞれ環境変数を設定
仮想環境を作成するディレクトリを変えたい
# .\venv\project-XXXXXX に作成 # WORKON_HOME set WORKON_HOME=%USERPROFILE%\venv
プロジェクト内に作成したい
# project\.venv\project-XXXXXX に作成 # PIPENV_VENV_IN_PROJECT set PIPENV_VENV_IN_PROJECT=true
Flaskプロジェクト作成
インストール
仮想環境にFlaskをインストールすると、Pipfile.lock
が作成されインストールしたときのバージョンや依存関係のパッケージが記載される。Pipfile.lock
は他のPCで同じ環境を再現する時などに使用。
# Flaskインストール
pipenv install flask
# Pipfile [packages] flask = "*"
アプリ作成
簡単に"HelloWorld"を返すアプリを作成
# project\app.py from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "HelloWorld!"
仮想環境で実行
仮想環境に入り、アプリを実行
# 仮想環境へ入る pipenv shell # Flask起動 (.venv)flask run * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) # ブラウザで'http://localhost:5000'にアクセス # 'HelloWorld' # 仮想環境を抜ける (.venv)exit