比方说,我想使用 GitHub 操作和拉取策略来设置部署流程。
所以我有一个 Ubuntu 服务器,我复制服务器的公共 ssh 密钥,将其添加到我的 GitHub 帐户,然后我可以从 Ubuntu 服务器克隆,构建并运行应用程序。
那太好了,但我觉得这里有一个小陷阱。
密钥将添加到帐户,而不是存储库。
如果我离开存储库所有者的组织会怎样?
服务器将失去执行适当 CI 的能力,对吗?
组织所有者可以创建 SSH 密钥持有者的帐户,并且永远不会离开组织,但如果存储库所有权转移怎么办?
我可能在这里错过了一些东西,但为什么不允许将密钥直接添加到存储库,而不是用户帐户?
或者这个选项是存在的,但我不知何故错过了它?
密钥将添加到帐户,而不是存储库。
这就是为什么你有部署密钥 https://github.com/cli/cli/releases/tag/v2.5.0, per存储库。
类似 GitHub 的 Actionwebfactory/ssh-agent https://github.com/cli/cli/issues/4242例如确实支持部署密钥。
为了支持在此用例中选择正确的密钥,此操作会扫描关键注释,并将设置额外的 Git 和 SSH 配置以使事情正常进行。
- 为存储库创建部署密钥时,例如
[email protected] /cdn-cgi/l/email-protection:owner/repo.git
or https://github.com/owner/repo
,将该 URL 放入关键评论中。 (提示:尝试ssh-keygen ... -C "[email protected] /cdn-cgi/l/email-protection:owner/repo.git"
.)
- 将密钥添加到代理后,此操作将扫描密钥注释。
- 对于包含此类 URL 的关键注释,将编写一个 Git 配置设置,该设置使用
url.<base>.insteadof
。它将 git 请求重定向到以以下任一开头的 URLhttps://github.com/owner/repo https://github.com/owner/repo or [电子邮件受保护] /cdn-cgi/l/email-protection:owner/repo 为虚假主机名/URL,例如[email protected] /cdn-cgi/l/email-protection...:owner/repo
.
- 生成适用于假主机名的 SSH 配置部分。它将 SSH 连接映射回 github.com,同时将 SSH 指向包含相应密钥公共部分的文件。这将使 SSH 在连接到 GitHub.com 时使用正确的密钥。
然后你会得到一个 GitHub Action 配置,例如这个例子 https://gist.github.com/pataruco/91b6cda6b02b61b3bcd2bbbfaa963fd9:
name: Deploy
on:
push:
tags:
- 'GA*'
# ...
- name: Install SSH Client ????
uses: webfactory/[email protected] /cdn-cgi/l/email-protection
with:
ssh-private-key: ${{ secrets.DEPLOY_KEY }}
- name: Deploy ????
uses: JamesIves/[email protected] /cdn-cgi/l/email-protection
with:
BASE_BRANCH: master
BRANCH: gh-pages
CLEAN: true
FOLDER: .
SSH: true
# ...
在命令行中,因为GitHub CLI gh 2.5.0 https://github.com/cli/cli/releases/tag/v2.5.0(2022 年 2 月):gh repo deploy_key https://cli.github.com/manual/gh_repo_deploy-key
gh repo deploy-key add <key-file> [flags]
# generate a passwordless SSH key and add it as a deploy key to a repository
$ ssh-keygen -t ed25519 -C "my description" -N "" -f ~/.ssh/gh-test
$ gh repo deploy-key add ~/.ssh/gh-test.pub
See 问题 4242 https://github.com/cli/cli/issues/4242从上下文来看。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)