比方說,我想使用 GitHub 操作設定我的部署程序,并使用拉取策略。
所以我有一個 Ubuntu 服務器,我復制服務器的公共 ssh 密鑰,將它添加到我的 GitHub 帳戶,然后我可以從 Ubuntu 服務器克隆,構建和運行應用程式。
那很好,但我覺得這里是個小陷阱。
密鑰被添加到帳戶中,而不是存盤庫中。
如果我離開存盤庫所有者的組織會怎樣?
服務器將失去執行正確 CI 的能力,對嗎?
組織所有者可以創建作為 SSH 密鑰持有者的帳戶并且永遠不會離開組織,但是如果存盤庫所有權被轉移怎么辦?
我可能在這里錯過了一些東西,但為什么不允許直接將密鑰添加到存盤庫,而不是用戶帳戶?
或者這個選項在那里,我以某種方式錯過了它?
uj5u.com熱心網友回復:
密鑰被添加到帳戶,而不是存盤庫。
這就是為什么您要為每個存盤庫
例如, GitHub Actionwebfactory/ssh-agent確實支持 Deploy 密鑰。
為了支持在此用例中選擇正確的密鑰,此操作會掃描密鑰注釋并將設定額外的 Git 和 SSH 配置以使事情正常進行。
[email protected]:owner/repo.git在為或之類的存盤庫創建部署密鑰時https://github.com/owner/repo,將該 URL 放入密鑰注釋中。(提示:嘗試ssh-keygen ... -C "[email protected]:owner/repo.git"。)- 將鍵添加到代理后,此操作將掃描鍵注釋。
- 對于包含此類 URL 的關鍵注釋,會撰寫一個 Git 配置設定,該設定使用
url.<base>.insteadof. 它會將 git 請求重定向到以https://github.com/owner/repo或 [email protected]:owner/repo 開頭的 URL 到一個虛假的主機名/URL,例如[email protected]...:owner/repo.- 生成適用于假主機名的 SSH 配置部分。它將 SSH 連接映射回 github.com,同時將 SSH 指向包含適當密鑰的公共部分的檔案。這將使 SSH 在連接到 GitHub.com 時使用正確的密鑰。
然后你會得到一個像這個例子一樣的 GitHub Action 配置:
name: Deploy
on:
push:
tags:
- 'GA*'
# ...
- name: Install SSH Client ??
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.DEPLOY_KEY }}
- name: Deploy ??
uses: JamesIves/[email protected]
with:
BASE_BRANCH: master
BRANCH: gh-pages
CLEAN: true
FOLDER: .
SSH: true
# ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/415000.html
標籤:
