繁体   English   中英

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

[英]no Go files in ... when on making golang deb in gitlab-ci/cd

这是关于 golang 的,我在 gitlab-ci.yml 文件中使用的代码。 这是我no Go files in /builds/release_management的错误,如下所示:

$ 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 然后使用点(。)从当前构建它时有效

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

有几个问题:

  1. 您的配置中没有BinaryName1所以
GOOS=$GOOS GOARCH=$GOARCH go build -o $BinaryName1 $BasePathForBinaryFile1

成为

GOOS=$GOOS GOARCH=$GOARCH go build -o cmd/main_1/

并且源文件应该在当前目录中,而它们不在那里。 您需要修复配置以使用BinaryName1BinaryName2而不是两次使用BinaryName

  1. 您需要将 src 目录指定为./cmd/main_1/
  2. Edit 1部分cd不起作用,因为环境名称不正确它应该是$BasePathForBinaryFile1但它是$BasePathForBinaryFile

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM