GitLab是一种免费的开放源代码方式,用于托管私有.git存储库,但它似乎不适用于Go。创建项目时,它将生成以下形式的URL:
.git
git@1.2.3.4:private-developers/project.git
哪里:
1.2.3.4
private-developers
Golang 1.2.1似乎不了解这种语法。
go get git@1.2.3.4:private-developers/project.git
结果是:
package git@23.251.148.129/project.git: unrecognized import path "git@1.2.3.4/project.git"
有办法让它工作吗?
现在,此问题已在Gitlab 8. *中解决,但仍然不直观。确实,最困难的挑战是go get,以下步骤将使您克服这些挑战:
go get
创建SSH密钥对。确保不要覆盖默认情况下保存在中的现有对~/.ssh/。
~/.ssh/
ssh-keygen -t rsa -b 4096
在您的Gitlab项目中创建一个新的 Secret变量 。使用SSH_PRIVATE_KEY作为 重点 和您的内容 私有 密钥 值 。
SSH_PRIVATE_KEY
用修改您.gitlab-ci.yml的before_script。
.gitlab-ci.yml
before_script
before_script: # install ssh-agent if not already installed - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' # run ssh-agent - eval $(ssh-agent -s) # add the SSH key stored in SSH_PRIVATE_KEY - ssh-add <(echo "$SSH_PRIVATE_KEY") # for Docker builds disable host key checking - mkdir -p ~/.ssh - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'