GitHub
部署公開和私有儲存庫,每次推送後自動重新部署。
連線 GitHub
- 在專案中點選 新增服務 → GitHub。
- 點選 連線 GitHub,選擇你的帳號或組織,並選擇 Zenavo 可以讀取的儲存庫。完成後會回到專案。
只有團隊的擁有者和管理員可以連線 GitHub。Zenavo 會獲得所選儲存庫的程式碼和後設資料的讀取權限,以及它們的推送事件。以後要新增更多儲存庫,可以從儲存庫列表開啟 GitHub App 的設定,或者搜尋缺少的儲存庫,然後選擇 重新安裝 GitHub App。
新增儲存庫
- 選擇儲存庫。 儲存庫按最近推送時間排列,可以輸入關鍵字搜尋。
- 選擇分支 或標籤。
- 設定建置計劃:
- 服務名稱:任意名稱,最多 64 個字元,之後可以修改。服務永久的 ID 由這個名稱生成。
- 根目錄:在 monorepo 中,填寫這個服務所在的資料夾,例如
/apps/web。 - 環境變數:逐行新增,或者點選 編輯原始變數 貼上
KEY=value格式的多行內容。 - 高階設定:Dockerfile 路徑、HTTP 連接埠,以及 推送到這個分支時自動部署(預設開啟)。
- 建置計劃預覽 顯示服務將如何建置:使用你的 Dockerfile,或者 zbpack 識別出的語言和版本,以及連接埠。點選 設定 修改,或點選 部署。
推送時部署
開啟自動部署後,每次推送到該分支都會建置並部署專案。推送到其他分支會被忽略。之後可以在服務的 設定 分頁 → 自動部署 中開啟或關閉。
監聽路徑
在 monorepo 中,推送一個應用不應該重新部署其他應用。在服務的 設定 分頁 → 監聽路徑 中每行填寫一個模式;之後只有推送改動了匹配的檔案時才會部署。留空則每次推送都部署。
模式使用 .gitignore 語法,從儲存庫根目錄(不是服務的根目錄)開始匹配,但選中的是觸發部署的檔案:
| 模式 | 推送改動了以下內容時部署 |
|---|---|
apps/web/ | apps/web 下的任何檔案 |
/package.json | 僅儲存庫根目錄下的 package.json |
*.go | 任何資料夾中的任何 Go 檔案 |
packages/**/src | packages 下任意層級的 src 資料夾 |
!**/*.md | 不包括 Markdown 檔案,即使在被監聽的資料夾中 |
與 .gitignore 一樣,開頭或中間帶 / 的模式相對於儲存庫根目錄,不帶 / 的模式匹配任意層級。* 和 ? 只匹配一個資料夾名稱內的字元,** 可以跨資料夾,最後一個匹配到檔案的模式起決定作用。新增、修改和刪除的檔案都算。
Zenavo 從 GitHub 的推送事件中讀取改動的檔案。如果事件中沒有列出檔案(例如一次推送超過 2,048 個提交,或分支被移動到已有的提交),服務會照常部署。從控制台或 CLI 重新部署時總是會部署,不受監聽路徑影響。
只要跟蹤該分支的任何一個開啟了自動部署的服務監聽到了改動的檔案,這次推送就會部署專案。