为了账号安全,请及时绑定邮箱和手机立即绑定

使用 SSH 密钥在 Jenkins 中构建 Go 项目,并在私有 BitBucket

使用 SSH 密钥在 Jenkins 中构建 Go 项目,并在私有 BitBucket

Go
慕沐林林 2022-09-05 15:33:35
我正在尝试为Go项目设置自动构建。但是,我们在私有BitBucket上有一些内部依赖项。但是,需要凭据才能访问这些凭据。我能够使用选项Git和SSH读取主存储库,但我能够从BitBucket下载依赖项。我已经尝试过:git config --global url."git@bitbucket.org:".insteadOf "https://bitbucket.org/"export 'GOPRIVATE=bitbucket.org/*'然而,这似乎不起作用,因为输出:+ go version22:33:27 go version go1.16.4 darwin/arm64+ go test22:33:29 go: missing Mercurial command. See https://golang.org/s/gogetcmd22:33:30 go: bitbucket.org/repositorie_url: reading https://api.bitbucket.org/2.0/repositorie_url/dependency_repo 403 Forbidden22:33:30    server response: Access denied. You must have write or admin access.我如何确保去获取或去安装以安全的方式访问我们的私有存储库?注意:去测试sems忽略git配置,它试图从https访问依赖项,此外,我还有一些Mercurial错误。
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

你好,我终于发现了错误,问题是:环境$PATH!接缝计算机具有与 jenkins 的默认路径不同的路径。如果要使用本地计算机的某个环境,则应在环境中添加一个新的变量$PATH,在本地cmd中打印$PATH并比较jenkinsfile上$PATH


jenkinsfile 中的解决方案:


pipeline {

    agent {

        label 'macmini'

    }

    environment {

        PATH = "$HOME/go/bin:" +

                    "/usr/local/bin:/Library/Apple/usr/bin" +

                    "$PATH"...

    }

}

安慰:


echo $PATH


# overrite $PATH enviroment

$PATH = "$HOME/go/bin:" +

                    "$HOME/go/bin:" +

                    "/usr/local/bin:/Library/Apple/usr/bin" +

                    "$PATH"...


查看完整回答
反对 回复 2022-09-05
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

Go 私有依赖项的解决起来有点复杂。请尝试在执行此操作之前下载依赖项或其他任何操作。我可以提出2种解决方案,请尝试让我知道哪一个适合您:go test


1. 使用 ssh 密钥

当您有一个可以访问私有存储库的 ssh 密钥时,请尝试此操作(假设 ssh 被存储并恢复为带有名称的 env var):BITBUCKET_SSH_KEY


mkdir -p ~/.ssh

echo "$BITBUCKET_SSH_KEY" > ~/.ssh/id_rsa

chmod 600 ~/.ssh/id_rsa

ssh-keygen -F bitbucket.org || ssh-keyscan bitbucket.org >>~/.ssh/known_hosts

git config --global url."git@bitbucket.org:".insteadOf "https://bitbucket.org/"

go env -w GOPRIVATE=bitbucket.org

go mod download

2. 使用 .netrc

您可以从 bitbucket 生成登录令牌。使用此令牌,有两个 env var,然后尝试以下操作:BITBUCKET_LOGINBITBUCKET_TOKEN


go env -w GOPRIVATE=bitbucket.org

echo "machine bitbucket.org login ${BITBUCKET_LOGIN} password ${BITBUCKET_TOKEN}" > ~/.netrc

go mod download


查看完整回答
反对 回复 2022-09-05
  • 2 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信