PHP editor Xigua akan memperkenalkan anda kepada masalah biasa apabila membuat golang deb dalam gitlab-ci/cd. Kadang-kadang, apabila kami cuba membuat pakej deb golang dalam gitlab-ci/cd, kami mungkin menghadapi ralat bahawa "No Go file in...". Sebab ralat ini adalah kerana tiada fail Go dalam direktori akar projek. Seterusnya, kami akan menerangkan kepada anda secara terperinci bagaimana untuk menyelesaikan masalah ini supaya anda berjaya membuat pakej deb golang.
Ini mengenai golang, yang kodnya saya gunakan dalam fail gitlab-ci.yml.
Ini adalah ralat yang saya alami /builds/release_management
no go fail seperti ini:
$ 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
Ini kod kerja saya
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
Sila ambil perhatian: Saya juga cuba memberi $ci_project_dir/$basepathforbinaryfile1
tetapi itu tidak berjaya juga.
Walaupun, ini hanya berfungsi apabila saya mula-mula membuat cd dan kemudian menggunakan dot(.) untuk membinanya daripada semasa
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 .
Ini ialah struktur folder saya:
Ada idea apa yang perlu saya betulkan untuk membetulkan ralat golang ini?
Edit 1: Selain itu, apabila melakukan cd $ci_project_dir/$basepathforbinaryfile
然后执行 ls
ia tidak masuk ke dalam direktori itu dan masih hanya menunjukkan kandungan direktori asas:
$ 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
mempunyai sedikit masalah:
binaryname1
goos=$goos goarch=$goarch go build -o $binaryname1 $basepathforbinaryfile1
menjadi
GOOS=$GOOS GOARCH=$GOARCH go build -o cmd/main_1/
Fail sumber sepatutnya berada dalam direktori semasa, tetapi tidak. Anda perlu membetulkan konfigurasi anda untuk mempunyai binaryname1
和 binaryname2
而不是 binaryname
dan binaryname2
dan bukannya binaryname
dua kali.
./cmd/main_1/
. edit 1
部分 cd
不起作用,因为环境名称不正确,它应该是 $basepathforbinaryfile1
但它是 $basepathforbinaryfile
. Atas ialah kandungan terperinci Apabila membuat deb golang dalam gitlab-ci/cd, tiada fail Go dalam.... Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!