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.
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
erstellevariables: 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
hat ein paar Probleme:
binaryname1
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 binaryname1
和 binaryname2
而不是 binaryname
und binaryname2
anstelle von binaryname
zweimal vorhanden sind.
./cmd/main_1/
angeben. 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!