L'éditeur PHP Xigua vous présentera un problème courant lors de la création de Golang Deb dans gitlab-ci/cd. Parfois, lorsque nous essayons de créer un package Golang deb dans gitlab-ci/cd, nous pouvons rencontrer une erreur indiquant "No Go file in...". La raison de cette erreur est qu'il n'y a aucun fichier Go dans le répertoire racine du projet. Ensuite, nous vous expliquerons en détail comment résoudre ce problème afin que vous puissiez créer avec succès des packages Golang Deb.
Il s'agit de golang, dont j'utilise le code dans le fichier gitlab-ci.yml.
C'est l'erreur que j'obtiens /builds/release_management
pas de fichiers comme celui-ci :
$ 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
Voici mon code de travail
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
Attention : j'ai aussi essayé de donner $ci_project_dir/$basepathforbinaryfile1
mais cela n'a pas fonctionné non plus.
Bien que cela ne fonctionne que lorsque je fais d'abord un CD et que j'utilise ensuite dot(.) pour le construire à partir du
actuelvariables: 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 .
Voici la structure de mes dossiers :
Une idée de ce que je devrais corriger pour corriger cette erreur Golang ?
Edit 1 : De plus, lorsque vous le faites cd $ci_project_dir/$basepathforbinaryfile
然后执行 ls
, il ne va pas dans ce répertoire et n'affiche toujours que le contenu du répertoire de base :
$ 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
a quelques problèmes :
binaryname1
goos=$goos goarch=$goarch go build -o $binaryname1 $basepathforbinaryfile1
devenir
GOOS=$GOOS GOARCH=$GOARCH go build -o cmd/main_1/
Le fichier source devrait être dans le répertoire courant, mais ce n'est pas le cas. Vous devez corriger votre configuration pour avoir binaryname1
和 binaryname2
而不是 binaryname
et binaryname2
au lieu de binaryname
deux fois.
./cmd/main_1/
. edit 1
部分 cd
不起作用,因为环境名称不正确,它应该是 $basepathforbinaryfile1
但它是 $basepathforbinaryfile
. Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!