gb を使用した Go の依存関係
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2022年01月26日(水)
Table of Contents
gb は、その保守担当者によってサポートされなくなり、減価償却のためとみなされています。Heroku では、代わりに Go モジュールを使用することをお勧めします。gb ベースのアプリケーションがある場合は、できるだけ早く Go モジュールに移植してください。
このガイドでは、gb を使用して Go アプリケーションの依存関係を指定するための Heroku のサポートを完全に利用する方法の概要について説明します。
gb
は Go 向けの代替ビルドツールであり、プロジェクトの概念で動作します。gb
プロジェクトは、アプリケーションをビルドするために必要なすべての Go コードのためのワークスペースです。gb
は、他の多くのツールと同様に、外部プロジェクトの依存関係を vendor/
ディレクトリにベンダリングします。プロジェクトのソースコードのすべて (vendor/
ディレクトリを含む) を Git リポジトリにチェックインする必要があります。
gb を使用するコードをプッシュすると、Heroku はアプリケーションのいくつかの環境設定を使用して、Go のバージョン (heroku config:set GOVERSION=go1.5
) とリンカーのシンボル/値を特定します。
GOVERSION
が設定されていない場合、Go のバージョンはデフォルトで、Heroku によってサポートされている現在の最新リリースの Go バージョンになります。
gb の使用
gb をインストールまたは更新します。
$ go get -u github.com/constabulary/gb/...
通常の Go ツールとは異なり、gb
ではプロジェクトは $GOPATH
に存在せず、また存在すべきでもありません。gb
プロジェクトは、src/
サブディレクトリを含む任意のディレクトリです。
プロジェクトのコードは、パッケージに保存されます。これらのパッケージは、src/
のサブディレクトリに存在します。これらのパッケージは、標準の Go ツールと同じルールに従います。
依存関係の追加
- 新しい依存関係を
gb vendor fetch <dep>
します。 - アプリケーションのソースコードを編集して、新しい依存関係をインポートして使用します。
git add -A .; git commit -m "Using <dependency>"
で変更をコミットします。
ベンダリングされた依存関係の一覧表示
$ gb vendor list
github.com/dustin/go-broadcast https://github.com/dustin/go-broadcast master 3bdf6d4a7164a50bc19d5f230e2981d87d2584f1
github.com/gin-gonic/gin https://github.com/gin-gonic/gin master 52fcc5dbf6e94df33ad313858fb94b713e9d1b4a
github.com/manucorporat/sse https://github.com/manucorporat/sse master fe6ea2c8e398672518ef204bf0fbd9af858d0e15
github.com/manucorporat/stats https://github.com/manucorporat/stats master 8f2d6ace262eba462e9beb552382c98be51d807b
github.com/mattn/go-colorable https://github.com/mattn/go-colorable master 3dac7b4f76f6e17fb39b768b89e3783d16e237fe
golang.org/x/net/context https://go.googlesource.com/net/context master 78e1654ef40b8b993e3355307740b1cac8f1db20
gopkg.in/bluesuncorp/validator.v5 https://gopkg.in/bluesuncorp/validator.v5 master d5acf1dac43705f8bfbb71d878e290e2bed3950b
既存の依存関係の更新
gb vendor update <dependency>
のようなコードを使用して、イベントを表す sObject を作成して適切なエンドポイントに POST します。git diff
(または同様のコマンド) で変更を検査します。git add -A vendor; git commit -m "Update <dependency>"
で変更をコミットします。
使用されていない依存関係の削除
gb vendor purge