[解決済み】アプリケーションの自動ビルドによるバージョン管理
2022-04-09 22:06:54
質問
Goアプリをコンパイルするたびにマイナーバージョン番号を自動的にインクリメントすることは可能ですか?
プログラム内部にバージョン番号を設定し、自動インクリメントする部分を設けたいのですが、可能でしょうか?
$ myapp -version
MyApp version 0.5.132
0.5というのは私が設定したバージョン番号で、バイナリがコンパイルされるたびに自動的に増加する値です。
これはGoで可能なのでしょうか?
どのように解決するのですか?
Goリンカー( 囲碁ツールリンク ) には、初期化されていない文字列変数の値を設定するオプションがあります。
-X importpath.name=value Set the value of the string variable in importpath named name to
の値を指定します。 Go 1.5以前は、このオプションは2つの別々の引数を取っていたことに注意してください。 現在は、最初の = 記号で分割された 1 つの引数を取ります。
ビルドプロセスの一部として、これを使用してバージョン文字列変数を設定することができます。この変数は
go
ツールを使って
-ldflags
. 例えば、以下のようなソースファイルがあった場合。
package main
import "fmt"
var xyz string
func main() {
fmt.Println(xyz)
}
次に
$ go run -ldflags "-X main.xyz=abc" main.go
abc
を設定するために
main.minversion
をビルド時にビルド日時に設定します。
go build -ldflags "-X main.minversion=`date -u +.%Y%m%d.%H%M%S`" service.go
を初期化せずにコンパイルした場合
main.minversion
このようにすると、空文字列が含まれるようになります。
関連
-
[解決済み】vsコードの解決方法 - goplsコマンドが使用できません。
-
[解決済み] GO言語:致命的なエラー:すべてのゴルーチンがスリープしている - デッドロック
-
Windowsのプロパティダイアログボックスのエンコーディングの問題 ファイル名、ディレクトリ名、ボリュームラベルの構文が正しくありません。
-
golang インストールプロンプト:ダイヤル tcp 216.58.200.241:443: connectex: 接続の試行に失敗しました。
-
Solve golang compile prompt dial tcp 172.217.160.113:443: connectex: 接続の試行に失敗しました
-
[解決済み] go mod vendor` コマンドの目的は何ですか?
-
[解決済み] Goでfloat64をintに変換する
-
[解決済み] 2枚のスライスの等価性を確認する
-
[解決済み】構造体からフィールドを削除したり、JSONレスポンスでフィールドを隠したりする方法
-
[解決済み】データ(型インターフェース{})を文字列に変換できない:型アサーションが必要
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】golangでデータ構造をディープコピーする
-
[解決済み] Goで配列を反転させるにはどうしたらいいですか?
-
[解決済み] 構造体のマップのデフォルト値は何ですか?
-
[解決済み] ParseFormはいつ使うべきで、FormValueとPostFormValueはいつ使うべきですか?
-
[解決済み] 関数呼び出しで「値として使用」される
-
[解決済み] SDL2 パッケージを提供する必要なモジュールはありません。
-
[解決済み] Goでfloat64をintに変換する
-
[解決済み] 2枚のスライスの等価性を確認する
-
[解決済み】ルーンとは何ですか?
-
[解決済み】gopathを使わずにローカルパッケージをインポートする方法