如何使用gitlab (go env)制作linux可执行文件?



我正试图使我的Go项目的Linux可执行文件。我在我的gitlab项目的.config-ci.yml中有以下配置:

demo_job_1:
tags:
- cpf
- cpf-test
- testing
- unit-testing
script:
- go run test/main.go
- GOOS=linux GOARCH=amd64 go build
- go env
- cd test
- ./test
- echo Successfully run and Built

在运行这个管道之后,当我签入env文件时,我仍然得到GOOS=windows。我如何构建我的项目,使构建后的输出是Linux可执行文件。现在,我得到的。exe文件只能在Windows上运行。

你可以在下面的gitlab中看到项目的详细信息:

https://gitlab.com/smilekison/test

这是Pipeline Job显示的错误:
$ go run test/main.go
Hello world
$ GOOS=linux GOARCH=amd64 go build
GOOS=linux : The term 'GOOS=linux' is not recognized as the name of a cmdlet, function, script file, or operable 
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:WINDOWSTEMPbuild_script487326907script.ps1:207 char:1
+ GOOS=linux GOARCH=amd64 go build
+ ~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (GOOS=linux:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

首先要解决您的实际错误:似乎您是基于windows的运行器。这意味着你必须使用windows CMD命令。它不知道ENV等

你可以用go env -w GOOS="linux"代替。GOARCH也是如此。然后运行go build .

您还可以使用变量部分用环境变量覆盖go env:

variables:
GOOS: "linux"
GOARCH: "amd64"

它位于gitlab文件顶部的某个地方。


这是我使用docker容器的Go项目的典型构建管道:

build_App:
image: golang:1.15.3
stage: build
allow_failure: false
tags:
- unix
script:
- go mod download
- mkdir $CI_PROJECT_DIR/release
- cd cmd/app
- GOOS=linux GOARCH=amd64 go build -o $CI_PROJECT_DIR/release/app .
artifacts:
paths:
- $CI_PROJECT_DIR/release

和测试管道

go_test:
image: golang:1.15.3
stage: verify
allow_failure: false
tags:
- unix
script:
- go mod download
- go test -race -cover ./...

这是基于一个使用docker镜像构建的运行器。

我需要写go env -w GOOS="linux"GOARCH ="amd64">为linux创建可执行文件如果我想为windows创建可执行文件我只需要重命名linuxwindows 我可以使用image: golang:1.15.7安装go语言。这边是我的。gitlab-ci。yml文件可以得到GO Lang安装,可以运行任何GO命令。

demo_job_1:
stages:
-build

build:
stage: build
image : golang:1.15.7
tags:
- cpf
- cpf-test
- testing
- unit-testing
script:
- go run test/main.go
- go env -w GOOS=linux GOARCH=amd64
- go env
- cd test
- ./test
- echo Successfully run and Built

相关内容

  • 没有找到相关文章

最新更新