Maison  >  Article  >  développement back-end  >  Lors de la création de Golang Deb dans gitlab-ci/cd, il n'y a pas de fichiers Go dans...

Lors de la création de Golang Deb dans gitlab-ci/cd, il n'y a pas de fichiers Go dans...

王林
王林avant
2024-02-13 13:50:09506parcourir

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

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.

Contenu de la question

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

actuel
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 .

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

Solution

a quelques problèmes :

  1. Non binaryname1
  2. dans votre configuration
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 binaryname1binaryname2 而不是 binaryname et binaryname2 au lieu de binaryname deux fois.

  1. Vous devez spécifier le répertoire src comme ./cmd/main_1/.
  2. à 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer