如何将 go binary 添加为 bitbucket 管道工件?

How to add go binary as bitbucket pipeline artifact?

您好,我正在尝试将我的管道的输出二进制文件添加到内置工件中。

image: golang:1.13

pipelines:
  default:
    - step:
        script:
          - PACKAGE_PATH="${GOPATH}/src/bitbucket.org/${BITBUCKET_REPO_FULL_NAME}"
          - mkdir -pv "${PACKAGE_PATH}"
          - tar -cO --exclude-vcs --exclude=bitbucket-pipelines.yml . | tar -xv -C "${PACKAGE_PATH}"
          - cd "${PACKAGE_PATH}"
          - go get -v
          - env GOOS=windows GOARCH=amd64 go build
          - go build -v
          - ls
        artifacts:
          - fx_update.exe


但是,二进制文件并没有出现在人工制品中:

所以我把这个 ls 命令放在那里看看 .exe 是否存在,确实是:

有谁知道为什么它没有按照我的要求进行?

那是因为您在创建工件之前 cd 到包目录。工件定义是相对于构建目录的,而不是当前工作目录(有关更多详细信息,请参阅此页面 https://confluence.atlassian.com/bitbucket/using-artifacts-in-steps-935389074.html)。您可以通过将 fx_update.exe 复制到基本构建目录来解决此问题:

- step:
    script:
      - PACKAGE_PATH="${GOPATH}/src/bitbucket.org/${BITBUCKET_REPO_FULL_NAME}"
      - mkdir -pv "${PACKAGE_PATH}"
      - tar -cO --exclude-vcs --exclude=bitbucket-pipelines.yml . | tar -xv -C "${PACKAGE_PATH}"
      - cd "${PACKAGE_PATH}"
      - go get -v
      - env GOOS=windows GOARCH=amd64 go build
      - go build -v
      - cp fx_update.exe ${BITBUCKET_CLONE_DIR}
    artifacts:
      - fx_update.exe