Avatar ·

Wie man Versionsnummer und Commit-Hash in eine Go-Anwendung beim Build einfügt?

Hallo zusammen! Ich schreibe eine kleine Webanwendung in Go und möchte, dass sie beim Start ihre Version ausgibt. Derzeit ändere ich manuell eine Konstante im Code: ```go const Version = "1.0.3" ``` Aber das ist furchtbar umständlich. Bei jedem Commit muss ich in den Code gehen, die Zeile ändern und separat committen. Außerdem möchte ich nicht nur die Versionsnummer sehen, sondern auch den Commit-Hash und das Build-Datum – um genau zu wissen, welcher Build auf dem Server läuft. Ich habe versucht, Dateien zu lesen, aber das funktioniert nicht, wenn die Binärdatei auf einen anderen Rechner verschoben wird. Ich habe von ldflags gehört, kann aber nicht herausfinden, wie man sie richtig verwendet. Könnt ihr mir erklären, wie Versionierung in Go-Projekten üblich ist? Wie übergibt man Version, Commit-Hash und Build-Datum zur Kompilierungszeit in die Binärdatei, sodass es ohne Workarounds funktioniert? Und dass bei `./myapp version` oder `./myapp --version` die vollständigen Informationen ausgegeben werden? Ich wäre dankbar für ein Beispiel eines Makefiles oder Build-Skripts, das dies automatisch bei CI/CD erledigt. <<>>

Verwendung von l