Heim  >  Artikel  >  Backend-Entwicklung  >  Beim Erstellen von Golang Deb in Gitlab-CI/CD sind keine Go-Dateien in ... vorhanden.

Beim Erstellen von Golang Deb in Gitlab-CI/CD sind keine Go-Dateien in ... vorhanden.

王林
王林nach vorne
2024-02-13 13:50:09441Durchsuche

在 gitlab-ci/cd 中制作 golang deb 时,...中没有 Go 文件

Der PHP-Editor Xigua stellt Ihnen ein häufiges Problem bei der Erstellung von Golang-Deb in gitlab-ci/cd vor. Wenn wir versuchen, ein Golang-Deb-Paket in gitlab-ci/cd zu erstellen, kann es vorkommen, dass wir auf die Fehlermeldung „No Go file in…“ stoßen. Der Grund für diesen Fehler liegt darin, dass im Stammverzeichnis des Projekts keine Go-Dateien vorhanden sind. Als nächstes erklären wir Ihnen im Detail, wie Sie dieses Problem lösen können, damit Sie erfolgreich Golang-Deb-Pakete erstellen können.

Frageninhalt

Hier geht es um Golang, dessen Code ich in der Datei gitlab-ci.yml verwende. Dies ist der Fehler, den ich erhalte. /builds/release_management No-Go-Dateien wie diese:

$ pwd
/builds/release_management
$ echo $basepathforbinaryfile1
cmd/main_1/
$ ls
copying
debpackagegitlabdocker
readme.md
cmd
deb-build
ermbuild
go.mod
publishtoremote.sh
usr
working_gitlab-ci_abletocreatedebpackagewithnobinary.yml
$ echo $ci_project_dir/$basepathforbinaryfile1
/builds/release_management/cmd/main_1/
$ goos=$goos goarch=$goarch go build -o $binaryname1 $basepathforbinaryfile1
no go files in /builds/release_management
cleaning up project directory and file based variables
00:00
error: job failed: exit code 1

Das ist mein Arbeitscode

variables:
  goos: linux
  goarch: amd64
  tagname: 1.0.71
  debfilename: $tagname
  basepathforbinaryfile1: cmd/main_1/
  binaryname: main1
  basepathforbinaryfile2: cmd/main_2/
  binaryname: main2

build_binary:
  stage: build
  image: golang:latest
  artifacts:
    untracked: true
  script:
    - cd cmd/main_1
    - goos=$goos goarch=$goarch go build -o $binaryname1 $basepathforbinaryfile1
#    - goos=$goos goarch=$goarch go build -o $binaryname1 $ci_project_dir/$basepathforbinaryfile1

Bitte beachten Sie: Ich habe es auch mit Geben $ci_project_dir/$basepathforbinaryfile1 versucht, aber auch das hat nicht funktioniert.

Allerdings funktioniert das nur, wenn ich zuerst eine CD erstelle und sie dann mit Punkt(.) aus der aktuellen

erstelle
variables:
  goos: linux
  goarch: amd64
  tagname: 1.0.71
  debfilename: $tagname
  basepathforbinaryfile1: cmd/main_1/
  binaryname: main1
  basepathforbinaryfile2: cmd/main_2/
  binaryname: main2

build_binary:
  stage: build
  image: golang:latest
  artifacts:
    untracked: true
  script:
    - cd cmd/main_1
    - goos=$goos goarch=$goarch go build -o $binaryname .

Das ist meine Ordnerstruktur:

Irgendeine Idee, was ich beheben sollte, um diesen Golang-Fehler zu beheben?

Bearbeitung 1: Außerdem wird beim Ausführen von cd $ci_project_dir/$basepathforbinaryfile 然后执行 ls nicht in dieses Verzeichnis verschoben und nur der Inhalt des Basisverzeichnisses angezeigt:

$ echo $CI_PROJECT_DIR/$BasePathForBinaryFile1
/builds/SugarBox/edge_release_management/cmd/main_1/
$ cd $CI_PROJECT_DIR/$BasePathForBinaryFile
$ ls
COPYING
DebPackageGitLabDocker
README.md
cmd
deb-build
ermbuild
go.mod
publishToRemote.sh
usr
working_gitlab-ci_ableToCreateDebPackageWithNoBinary.yml

Lösung

hat ein paar Probleme:

  1. Nein binaryname1
  2. in Ihrer Konfiguration
goos=$goos goarch=$goarch go build -o $binaryname1 $basepathforbinaryfile1

werden

GOOS=$GOOS GOARCH=$GOARCH go build -o cmd/main_1/

Die Quelldatei sollte sich im aktuellen Verzeichnis befinden, ist aber nicht vorhanden. Sie müssen Ihre Konfiguration so korrigieren, dass binaryname1binaryname2 而不是 binaryname und binaryname2 anstelle von binaryname zweimal vorhanden sind.

  1. Sie müssen das src-Verzeichnis als ./cmd/main_1/ angeben.
  2. bei edit 1 部分 cd 不起作用,因为环境名称不正确,它应该是 $basepathforbinaryfile1 但它是 $basepathforbinaryfile.

Das obige ist der detaillierte Inhalt vonBeim Erstellen von Golang Deb in Gitlab-CI/CD sind keine Go-Dateien in ... vorhanden.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen