Gitea Actions常見問題解答
本頁面包含一些關於Gitea Actions的常見問題和答案。
是否可以在我的實例中預設禁用新儲存庫的Actions?
Section titled “是否可以在我的實例中預設禁用新儲存庫的Actions?”是的,當您為實例啟用Actions時,您可以選擇預設啟用actions單元以適用於所有新儲存庫。
[repository]; 去掉 repo.actions 將不會為新倉庫自動啟用actionsDEFAULT_REPO_UNITS = ...,repo.actions在工作流文件中應該使用${{ github.xyz }}還是${{ gitea.xyz }}?
Section titled “在工作流文件中應該使用${{ github.xyz }}還是${{ gitea.xyz }}?”您可以使用github.xyz,Gitea將正常工作。
如前所述,Gitea Actions的設計是與GitHub Actions相容的。
然而,我們建議在工作流文件中使用gitea.xyz,以防止在工作流文件中出現不同類型的密鑰(因為您在Gitea上使用此工作流,而不是GitHub)。
不過,這完全是可選的,因為目前這兩個選項的效果是相同的。
使用actions/checkout@v4等Actions時,Job容器會從何處下載腳本?
Section titled “使用actions/checkout@v4等Actions時,Job容器會從何處下載腳本?”預設從 https://github.com 下載,若 [actions].DEFAULT_ACTIONS_URL 為 self,則從您自己的實例下載,參見設定速查表。
若要使用其他來源的 Action,請指定其主機:
uses: https://gitea.com/owner/repo@refuses: http://your_gitea_instance.com/owner/repo@refuses: self:owner/repo@ref,用於您自己的 Gitea 實例
如何限制Runner的權限?
Section titled “如何限制Runner的權限?”Runner 只會連接到您的 Gitea 實例。
對於每個 Job,Runner 會取得一個僅限於該 Job 所屬儲存庫的 GITEA_TOKEN,參見 Actions Job 令牌權限。
若要讓 Job 存取更多私有儲存庫或外部系統,請向其傳遞密鑰。
如何避免被黑客攻擊?
Section titled “如何避免被黑客攻擊?”有兩種可能的攻擊類型:未知的Runner竊取您的儲存庫中的程式碼或密鑰,或惡意腳本控制您的Runner。
避免前者意味著不允許您不認識的人為您的儲存庫、組織或實例註冊Runner。
後者要複雜一些。 如果您為公司使用私有的Gitea實例,您可能不需要擔心安全問題,因為您信任您的同事,並且可以追究他們的責任。
對於公共實例,情況略有不同。 以下是我們在 gitea.com上的做法:
- 我們僅為 “gitea” 組織註冊Runner,因此我們的Runner不會執行來自其他儲存庫的Job。
- 我們的Runner始終在隔離容器中運行Job。雖然可以直接在主機上進行這樣的操作,但出於安全考慮,我們選擇不這樣做。
- 對於 fork 的拉取請求,需要獲得批准才能運行Actions。參見#22803。
- 如果有人在gitea.com為其儲存庫或組織註冊自己的Runner,我們不會反對,只是不會在我們的組織中使用它。然而,他們應該注意確保該Runner不被他們不認識的其他使用者使用。
runner支援哪些操作系統?
Section titled “runner支援哪些操作系統?”官方發佈了 Linux、macOS 和 Windows 的二進制檔案。 理論上,Go 和 Docker 支援的其他系統也能運作。
為什麼選擇GitHub Actions?為什麼不選擇與GitLab CI/CD相容的工具?
Section titled “為什麼選擇GitHub Actions?為什麼不選擇與GitLab CI/CD相容的工具?”@lunny在實現Actions的問題中已經解釋過這個問題。 此外,Actions不僅是一個CI/CD 系統,還是一個自動化工具。
在開源世界中,已經有許多市場上的Actions實現了。 能夠重用它們是令人興奮的。
如果它在多個標籤上運行,例如 runs-on: [label_a, label_b],會發生什麼?
Section titled “如果它在多個標籤上運行,例如 runs-on: [label_a, label_b],會發生什麼?”Job 會在具有所有這些標籤的 Runner 上運行,與 GitHub 相同。 Runner 會使用它所具有的第一個標籤對應的環境。
代理標籤和自訂標籤對於Runner有什麼區別?
Section titled “代理標籤和自訂標籤對於Runner有什麼區別?”Gitea 已不再有自訂標籤。
Runner 每次啟動時都會宣告其標籤,標籤來自 runner.labels 設定或註冊時指定的標籤,因此請在那裡修改並重新啟動 Runner。
Gitea Actions runner會有更多的實現嗎?
Section titled “Gitea Actions runner會有更多的實現嗎?”雖然我們希望提供更多的選擇,但由於我們有限的人力資源, runner將是唯一受支援的官方Runner。 然而,無論您如何決定,Gitea 和 runner都是完全開源的,所以任何人都可以建立一個新的/更好的實現。 我們支援您的選擇,無論您如何決定。 如果您選擇分支 runner 來建立自己的版本,請在您認為您的更改對其他人也有幫助的情況下貢獻這些更改。
Gitea 支援哪些工作流觸發事件?
Section titled “Gitea 支援哪些工作流觸發事件?”表格中列出的所有事件都是支援的,並且與 GitHub 相容。 對於僅 GitHub 支援的事件,請參閱 GitHub 的文件。
| 觸發事件 | 活動類型 |
|---|---|
| create | 不適用 |
| delete | 不適用 |
| fork | 不適用 |
| gollum | 不適用 |
| push | 不適用 |
| issues | opened, edited, closed, reopened, assigned, unassigned, milestoned, demilestoned, labeled, unlabeled |
| issue_comment | created, edited, deleted |
| pull_request | opened, edited, closed, reopened, assigned, unassigned, synchronize, labeled, unlabeled |
| pull_request_review | submitted, edited |
| pull_request_review_comment | created, edited |
| release | published, edited |
| registry_package | published |
對於
pull_request事件,在 GitHub Actions 中ref是refs/pull/:prNumber/merge,它指向這個拉取請求合併提交的一個預覽。但是 Gitea 沒有這種 reference。 因此,Gitea Actions 中ref是refs/pull/:prNumber/head,它指向這個拉取請求的頭分支而不是合併提交的預覽。
如何共享私有儲存庫中的 Actions 和可重複使用的工作流?
Section titled “如何共享私有儲存庫中的 Actions 和可重複使用的工作流?”前往儲存庫的設定 > Actions > General 頁面,添加協作所有者。 協作所有者的私有儲存庫可以存取目前儲存庫中的 Actions 和工作流。
若要在同一使用者或組織內共享,請改為在該使用者或組織的設定 > Actions > General > Cross-Repository Access 中添加這些私有儲存庫。 參見跨儲存庫存取。