管理動作和工作流程

已完成

在這裡,您將會探索 GitHub Enterprise Cloud 和 GitHub Enterprise Server 中可供您使用的不同工具和策略,以共用企業內 GitHub 動作和工作流程及管理其使用。

內容會以呈現且可供使用的工具相關層級結構化:企業層級組織層級

在企業層級

設定 GitHub Actions 使用原則

GitHub Actions 工作流程通常包含動作,這些動作是要在工作流程內執行的獨立命令集。 建立工作流程時,您可以建立自己的動作,以使用或參考可從 GitHub Marketplace 取得的公用社群動作。 基於此理由,在您的企業中設定工作流程和動作的使用原則,是防止使用者使用惡意第三方動作的關鍵。

有數個選項可供您在 Enterprise Cloud 中以及 Enterprise Server (如果已在您的企業設定中啟用 GitHub Connect) 中設定原則。

若要為您的企業設定 GitHub Actions 使用原則,請瀏覽至您的企業帳戶,然後前往側邊欄中的 [原則] > [動作]。 下列選項應會顯示。

已選取預設選項的 [動作] 畫面之螢幕擷取畫面。

頂端標示為 [為所有組織啟用] 下拉式清單,可讓您決定企業中的哪些組織可以使用 GitHub Actions (全部、其中的部分或全部都不),而下方的三個選項可讓您定義這些組織內 GitHub Actions 的限制層級。

如果您只想要啟用要在企業內使用的特定動作,請選取 [允許企業],然後選取非企業、動作和可重複使用的工作流程,然後選擇與您的使用案例對應的選項。

已選取 [允許選取動作] 選項的 [動作] 畫面之螢幕擷取畫面。

手動同步處理 Enterprise Server 的公用動作

多數官方的 GitHub 撰寫的動作會自動隨附 Enterprise Server,並會在某個時間點從 GitHub Marketplace 擷取。 其中包括 actions/checkoutactions/upload-artifactactions/download-artifactactions/labeler 和各種 actions/setup- 動作,以及其他動作。 若要取得您企業執行個體上包含的所有官方動作,請瀏覽至您的執行個體上的 Actions 組織:https://HOSTNAME/actions.

設定 GitHub Actions 使用原則一節所述,您可以設定 Enterprise Server 自動存取 GitHub Marketplace 中可用的公用動作,並為其設定使用原則。 但是,如果您想要更嚴格地控制企業中應提供的公用動作,則能夠 actions-sync 工具,手動下載動作並將其同步處理至企業執行個體。

在組織層級

記錄公司標準

建立 GitHub Actions 工作流程通常涉及撰寫多個檔案,以及建立數個存放庫以指定工作流程本身。 建立也包含要在工作流程中使用的動作、容器和/或執行器。 視 Enterprise Cloud 或 Enterprise Server 執行個體中的使用者數目而定,如果您沒有既有用於建立 GitHub Actions 工作流程的公司標準,各個項目可能會很快變得雜亂。

建議的最佳作法是將下列內容記錄在 GitHub Wiki 中,或在組織內可供所有人存取的存放庫中做為 markdown 檔案:

  • 儲存體的存放庫
  • 檔案/資料夾命名慣例
  • 共用元件的位置
  • 規劃持續進行維護
  • 貢獻指導方針

建立工作流程範本

工作流程範本是確保在企業中重複使用和維護自動化的絕佳方式。 在 Enterprise Cloud 和 Enterprise Server 中,具有組織的 .github 存放庫寫入權限的使用者,都可以建立可供具有相同寫入權限的其他組織成員使用的工作流程範本。 然後,您可以使用工作流程範本在組織的公用和私人存放庫中建立新的工作流程。

建立工作流程範本可以透過兩個步驟來完成:

  1. 建立 yml 工作流程檔案。

  2. 建立 json 中繼資料檔案,其描述在建立工作流程時,應如何將範本呈現給使用者。

    注意

    中繼資料檔案的名稱必須與工作流程檔案相同。 它必須附加 .properties.json,而不是副檔名 .yml。 例如,名為 octo-organization-ci.properties.json 的檔案包含名為 octo-organization-ci.yml 的工作流程檔案的中繼資料。

這兩個檔案都必須放在公用 .github 存放庫和名為 workflow-templates 的目錄中。 如果您的組織中還沒有這些檔案,您可能必須加以建立。

以下是基本工作流程檔案的範例:

name: Octo Organization CI

on:
  push:
    branches: [ $default-branch ]
  pull_request:
    branches: [ $default-branch ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Run a one-line script
        run: echo Hello from Octo Organization

請注意,上述檔案使用 $default-branch 預留位置。 使用您的範本建立工作流程時,會自動將此預留位置取代為存放庫預設分支的名稱。

以下是您要為工作流程檔案建立的中繼資料檔案:

{
    "name": "Octo Organization Workflow",
    "description": "Octo Organization CI workflow template.",
    "iconName": "example-icon",
    "categories": [
        "Go"
    ],
    "filePatterns": [
        "package.json$",
        "^Dockerfile",
        ".*\\.md$"
    ]
}

中繼資料檔案會使用下列參數:

參數 描述: 必要
name 可用範本清單中顯示的工作流程範本名稱。 Yes
description 可用範本清單中顯示的工作流程範本描述。 Yes
iconName 在範本清單中定義工作流程項目的圖示。 必須是相同名稱的 SVG 圖示,且必須儲存在 workflow-templates 目錄中。 例如,名為 example-icon.svg 的 SVG 檔案參考應該為 example-icon No
categories 定義工作流程的語言類別。 當使用者檢視可用的範本時,符合相同語言的範本將更為突出。 No
filePatterns 如果使用者的存放庫在其根目錄中的檔案符合已定義的規則運算式,則啟用對範本的使用。 No

一旦建立工作流程範本,您組織中的使用者就可以在 [動作] > [新增工作流程] > [_your_organization_name 建立的工作流程] 下找到該範本。

工作流程範本範例。