php小編西瓜將為您介紹在gitlab-ci/cd中製作golang deb時的一個常見問題。有時候,當我們嘗試在gitlab-ci/cd中製作golang deb套件時,可能會遇到一個錯誤,即「在...中沒有Go檔案」。這個錯誤的原因是因為在專案的根目錄中沒有Go檔。接下來,我們將為您詳細解釋如何解決這個問題,讓您順利製作golang deb套件。
這是關於 golang 的內容,我在 gitlab-ci.yml 檔案中使用其程式碼。
這是我在 /builds/release_management
中收到 no go 檔案的錯誤,如下所示:
$ 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
這是我的工作程式碼
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
請注意:我也嘗試過給 $ci_project_dir/$basepathforbinaryfile1
,但這也不行。
雖然,當我先執行 cd 然後使用 dot(.) 從目前建置它時,這才有效
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 .
這是我的資料夾結構:
知道我應該修復什麼來修復這個 golang 錯誤嗎?
編輯1:此外,在執行cd $ci_project_dir/$basepathforbinaryfile
然後執行ls
時,它不會進入該目錄,並且仍然僅顯示基底目錄的內容:
$ 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
有幾個問題:
binaryname1
goos=$goos goarch=$goarch go build -o $binaryname1 $basepathforbinaryfile1
成為
GOOS=$GOOS GOARCH=$GOARCH go build -o cmd/main_1/
原始檔案應該位於目前目錄中,但實際上並不存在。您需要修復配置以擁有 binaryname1
和 binaryname2
而不是 binaryname
兩次。
./cmd/main_1/
。 edit 1
部分cd
不起作用,因為環境名稱不正確,它應該是$basepathforbinaryfile1
但它是$basepathforbinaryfile
。 以上是在 gitlab-ci/cd 中製作 golang deb 時,...中沒有 Go 文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!