Apabila membuat deb golang dalam gitlab-ci/cd, tiada fail Go dalam...

王林
Lepaskan: 2024-02-13 13:50:09
ke hadapan
515 orang telah melayarinya

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

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.

Kandungan soalan

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
Salin selepas log masuk

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
Salin selepas log masuk

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 .
Salin selepas log masuk

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
Salin selepas log masuk

Penyelesaian

mempunyai sedikit masalah:

  1. Tidak binaryname1
  2. dalam konfigurasi anda
goos=$goos goarch=$goarch go build -o $binaryname1 $basepathforbinaryfile1
Salin selepas log masuk

menjadi

GOOS=$GOOS GOARCH=$GOARCH go build -o cmd/main_1/
Salin selepas log masuk

Fail sumber sepatutnya berada dalam direktori semasa, tetapi tidak. Anda perlu membetulkan konfigurasi anda untuk mempunyai binaryname1binaryname2 而不是 binaryname dan binaryname2 dan bukannya binaryname dua kali.

  1. Anda perlu menentukan direktori src sebagai ./cmd/main_1/.
  2. di 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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan