go - 如何使用适用于 Windows 的 GitLab 管道进行构建

标签 go gitlab gitlab-ci

我有以下 .gitlab-ci.yml...

stages:
  - test
  - build
  - art

image: golang:1.9.2

variables:
  BIN_NAME: example
  ARTIFACTS_DIR: artifacts
  GO_PROJECT: example
  GOPATH: /go


before_script:
  - mkdir -p ${GOPATH}/src/${GO_PROJECT}
  - mkdir -p ${CI_PROJECT_DIR}/${ARTIFACTS_DIR}
  - go get -u github.com/golang/dep/cmd/dep
  - cp -r ${CI_PROJECT_DIR}/* ${GOPATH}/src/${GO_PROJECT}/
  - cd ${GOPATH}/src/${GO_PROJECT}

test:
  stage: test


  script:
    # Run all tests
    go test -run ''


build:
  stage: build

  script:
    # Compile and name the binary as `hello`
    - go build -o hello
    - pwd
    - ls -l hello
    # Execute the binary
    - ./hello
    # Move to gitlab build directory
    - mv ./hello ${CI_PROJECT_DIR}
  artifacts:
    paths:
    - ./hello

这对 linux 非常有用,但我现在需要做同样的事情,以便它构建一个 windows 可执行文件。

然后我计划运行预定脚本来下载工件。

另一种选择是我在 Windows 服务器上运行虚拟 Linux 服务器并使用它来运行我的 go 二进制文件。 我知道我需要将图像更改为 Windows,但无法在网上找到合适的图像(为 golang 配置的图像)。

或者是否可以让这个 docker 镜像构建一个 windows exe?

最佳答案

这不是gitlab题,是go题。

从 Go 1.5 版本开始,交叉编译变得非常容易。

GOOS=windows GOARCH=386 go build -o hello.exe hello.go

您现在可以在 Windows 机器上运行 hello.exe

关于go - 如何使用适用于 Windows 的 GitLab 管道进行构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56664439/

相关文章:

node.js - 使用 Gitlab 和 Heroku 进行 CI

ruby-on-rails - 通过 gitlab ci/docker 运行构建

Docker build 如何在golang build中添加库

go - 如何将标准输出从 os.Exec 传输到文件和终端?

go - 从 goroutine 中捕获返回值

json - 在 golang 中动态地从 JSON 中删除 key

gitlab - 在 Karate DSL 测试中使用环境变量

cron - manbetx客户端打不开备份不包括维基

构建成功时 Gitlab 自动合并不起作用

caching - 具有多个路径的 GitLab CI 缓存似乎会跳过一个路径