Jenkins - 构建私有 GitHub 存储库
客观的
本指南向您展示如何配置现有 Jenkins 服务器以使用GitHub 部署密钥与私有 GitHub 存储库进行通信。
我的意图是快速并以最少的解释直截了当。
先决条件
本指南假设您有:
- 具有包含某种形式的源代码或文件的私有 GitHub 存储库的 GitHub 帐户。
- 一个 AWS 账户,其中包含一个通过安装 Jenkins 运行的 EC2 实例。如果您没有此指南,请参阅我的Jenkins - 在 AWS 中设置构建环境指南。
- Jenkins的基础知识。
- GitHub的基础知识。
我使用 macOS,但本指南也适用于 Linux 和 Windows。
概述
Jenkins - 构建私有 GitHub 存储库
- 创建一个简单的 Jenkins 作业
- 在 Jenkins 服务器上生成 SSH 密钥
- 将 SSH 密钥添加为 Jenkins 凭据
- 将 SSH 密钥添加为 GitHub 部署密钥
- 将凭证添加到 Jenkins 作业
- Jenkins - 构建私有 GitHub 存储库
- 在开始之前,请确保您的 Jenkins EC2 实例正在运行,登录您的 Jenkins 仪表板和您的 GitHub 帐户。
创建一个简单的 Jenkins 作业
- 打开Jenkins 仪表板并从左侧菜单中选择新建项目。
- 为项目命名(这可以是您想要的任何名称,但它代表工作本身)
- 从选项列表中选择Freestyle 项目,然后单击确定
- 加载作业配置视图后,找到源代码管理部分并勾选Git
- 添加所需私有 GitHub 存储库的SSH 克隆 URL
- 您应该会看到一条错误消息,内容如下:“无法连接到存储库…”。现在这很好;这是因为我们还没有设置 SSH 密钥。
- 向下滚动到Build部分,单击Add build step,然后从列表中选择 * Execute shell 。
- 在出现的文本区域中,输入:echo “Hello, world!”
- 滚动到底部,然后单击保存
- 您现在将被带到您的工作概览;单击左侧菜单中的立即构建以触发构建
- 这应该立即失败,但这就是此时的意图。单击内部版本号旁边的红点以查看控制台输出。
- 查看控制台输出,您应该会看到与以下内容相关的参考:“权限被拒绝”或“无法从远程存储库读取”——这就是我们要解决的问题。
- 通过单击顶部的仪表板面包屑返回到Jenkins 仪表板,然后继续下一部分。
在 Jenkins 服务器上生成 SSH 密钥
- 打开一个终端并通过 SSH 连接到您的 EC2 Jenkins 服务器:(用您的信息ssh -i /path/to/<your_key_pair.pem> ec2-user@<your_public_dns>替换)
- sudo 到 jenkins 用户:sudo su -s /bin/bash jenkins.
本指南假定您使用的是 Linux 或 macOS,但如果您使用的是 Windows,则可以参考 AWS 指南,了解
使用 PuTTY 从 Windows 连接到您的 Linux 实例
- 生成 SSH 密钥:ssh-keygen.
- 接受提示中的默认设置并将密码留空。
- 让终端保持打开状态并继续下一部分。
将 SSH 密钥添加为 Jenkins 凭据
- 从Jenkins 仪表板的左侧菜单中选择Manage Jenkins 。
- 在Security部分下,选择Manage Credentials。
- 在标记为Stores scoped to Jenkins的表中,单击Jenkins商店。
- 在标有System的表中,单击Global credentials域。
- 从左侧的菜单中,单击Add Credentials。
- 在出现的表单中,应用以下内容:
种类:带有私钥的 SSH 用户名
范围:全球
身份证:(空白)
说明:(空白)
用户名:gh-deploy
私钥:勾选直接输入,然后单击添加
回到 Jenkins 终端会话,将私钥复制到剪贴板:cat ~/.ssh/id_rsa
将此键粘贴到表单中,确保不包含任何额外的前/后空格
密码:(空白)
点击确定
- 我们将在后续步骤中将此凭证应用于您的新工作。
- 保持终端会话打开并继续下一部分。
将 SSH 密钥添加为 GitHub 部署密钥
- 打开 GitHub 并选择您在作业配置中指定的存储库
- 在 repo 视图中,选择Settings选项卡
- 从左侧菜单中,选择部署密钥,然后单击右侧显示添加部署密钥的按钮
- 给部署密钥一个标题(将其与给詹金斯凭证的名称匹配是有意义的gh-deploy:)
- 回到 Jenkins 终端会话,将公钥复制到剪贴板:cat ~/.ssh/id_rsa.pub
- 将此键粘贴到表单中,确保不包含任何额外的前/后空格
- 未选中允许写访问
- 单击添加密钥
- SSH 密钥现在附加到这个特定的 GitHub 存储库,并用作Deploy Key。有关部署密钥的更多信息,请查看GitHub 文档
将凭证添加到 Jenkins 作业
- 返回Jenkins 仪表板并选择我们在第一部分中创建的新作业。
- 从工作概述;单击左侧菜单中的配置
- 滚动到源代码管理部分并从凭证选择列表中选择您的新凭证
- 您现在应该看到错误已解决
- 滚动到底部,然后单击保存
- 您现在将被带到您的工作概览;单击左侧菜单中的立即构建以触发构建
- 作业现在应该成功了
- 单击内部版本号旁边的蓝点以查看控制台输出。
- 查看控制台输出,您应该会看到Hello, world!我们添加的 shell 命令和状态Finished: SUCCESS- 现在正在从私有 GitHub 存储库中提取作业!