编写Linux可执行文件:使用GitLab创建(Go环境)
学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《编写Linux可执行文件:使用GitLab创建(Go环境)》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!
问题内容我正在尝试为我的 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 可执行文件。现在,我正在获取仅在 windows 上运行的 .exe 文件。
您可以在以下gitlab中查看项目详细信息:
https://gitlab.com/smilekison/test
这是管道作业显示的错误:
$ 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:\WINDOWS\TEMP\build_script487326907\script.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制作可执行文件,我只需将linux重命名为windows,我就可以制作go语言在这里使用 image : golang:1.15.7 进行安装。这样我的 .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
今天关于《编写Linux可执行文件:使用GitLab创建(Go环境)》的内容介绍就到此结束,如果有什么疑问或者建议,可以在编程网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341