「Go コードの書き方」チュートリアルを読んでいて、どうすれば安定したワークフローを設定できるのか疑問に思わずにはいられません。
当然のことながら、私のコードはソース管理下に置かれます。たとえば、Git です。今、私は次のことができるようになりたいです:
- プロジェクトの実行可能ファイルをビルドします。特定の Git バージョンに対して、実行可能ファイルが同じものをビルドすることを確認してください。
- プロジェクトの継続的なビルドを実行して、コミットごとにアクティブ化します。継続的なビルドが行うことはすべて、ワークステーションで再現可能であることを確認する必要があります。
- プロジェクトのリリースを作成します。コードの同じ git バージョンからもう一度リリースを行うと、リリースを再作成できることを知っておく必要があります。
Go はそのための「go get」ツールを提供していますが、ここで混乱します。これをサポートする必要があるツール「go get」は、依存パッケージのソース管理リポジトリを設定します。これにより、次の問題が発生します。
- 依存パッケージを自分のソース管理下に置くことができません。つまり、私と共同作業者の間、または私と私の継続的ビルド システムの間に環境の違いがある場合、それらの違いを理解するのに苦労することになります。
- ネットワークがダウンしている場合、コードを最初から作成することはできません。別の言い方をすれば、私の継続的ビルド システムは、リリースをビルドするたびに、これらすべての外部サーバーにアクセスする必要があります。これは壊れやすいものかもしれませんし、外の世界に知らせたくないものかもしれません.
- Go は、パッケージのバージョンをベース言語のバージョンと同期させる規則を定義していますが、パッケージの作成者がその規則に従うという保証はありません。そうでない場合、クリーンなワークスペースは、壊れている可能性のある任意のリリースを取得します。
- 依存しているプロジェクトが放棄された場合、プログラムを構築する能力を失う可能性があります。
依存プロジェクトのコードを手動でインポートし、「go get」をまったく使用しないことで、それらを回避できますが、言語がその使用のために特別に設計および促進したツールを避けています。
助言がありますか?何か不足していますか?