1

我无法让 Jenkins 连接到我的 git 存储库。我怀疑我的问题出在我的钥匙的位置。我应该把钥匙放在哪里?我读到的是它应该放在 Jenkins 主目录中。那是詹金斯运行的目录吗?/home/tomcat 或者 jenkins 说的是配置系统 /opt/bitnami/apps/jenkins/jenkins_home 中的主目录?是否需要在与密钥相同的目录中也有一个配置文件?

4

1 回答 1

3

扎克,你可能早就解决了这个问题,但以防万一其他人正在寻找答案,这对我有用。这里没有什么花哨的东西——如果你可以使用 git 作为用户 tomcat 并与你的 git repo 交互,那就是它的全部。除了提供项目 repo 位置(没有密钥设置或凭据等)之外,不要在 jenkins 构建工作中做任何其他事情。我们将让 Jenkins 之外的 git 和 ssh 完成所有工作。

我也使用 bitnami jenkins AMI,它确实将 Jenkins 作为 Tomcat 中的战争应用程序运行——所以它作为 Tomcat 运行。

  • sudo su - tomcat
  • 更新 .profile 中的路径以获取 git 的 bin 位置

PATH="/opt/bitnami/git/bin:$PATH"

'git --version' 现在应该作为 tomcat 用户工作,所以典型的 git 首次设置

  • git config --global user.name "应用用户名"
  • git config --global user.email "app@dom.com" 将值替换为套件(不要在 Jenkins 中添加这些)
    • git config -l (应该显示这些新添加的值)

现在 ssh 设置

  • 在 /home/tomcat 中创建一个 .ssh 目录
  • 光盘.ssh
  • 将您的 RSA 密钥(pub/private)上传到此目录
    • (重要的是,在这些文件上设置 mod 600)
    • (同样重要的是,确保密钥没有密码)
  • 创建文件'config'并添加以下内容(替换主机和私钥名称以适应)

Host bitbucket.org IdentityFile ~/.ssh/id_rsa

最终检查

  • 'ssh -T git@bitbucket.org' (或者你的 git 提供者是什么)应该返回你登录为(你的名字),或者一些成功消息

(可选的)

我做了以下操作来帮助验证我的密钥设置和指纹,但我认为这不是必需的。

  • 将以下内容添加到 .bashrc 文件的末尾,注销并重新登录并运行“ssh-add -l”。你应该看到指纹和你的密钥文件路径/名称——一切都应该很好。

SSH_ENV=$HOME/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

于 2014-10-16T15:24:17.860 回答