使用 GitHub Actions 自動化 DevOps 工作流程

Susan Sarandon
發布: 2024-11-11 03:37:02
原創
756 人瀏覽過

Automate DevOps Workflows with GitHub Actions

作者:Trix Cyrus

Waymap滲透測試工具:點這裡
TrixSec Github:點這裡


什麼是 GitHub 操作?

GitHub Actions 是整合到 GitHub 的自動化工具,提供自動化工作流程、CI/CD 管道、測試、程式碼品質檢查,甚至直接在儲存庫中部署的功能。它使您能夠使用 YAML 檔案定義工作流程,從而完全控制觸發器、環境和任務。


為什麼要使用 GitHub Actions 進行 DevOps?

  1. 與 GitHub 整合:與 GitHub 儲存庫、問題和拉取請求無縫整合。
  2. 可擴展的 CI/CD 管道:在各種平台上運行建置、測試和部署。
  3. 可自訂的工作流程:定義符合您確切需求的工作流程,從簡單的任務到複雜的多步驟流程。
  4. 可重複使用工作流程:跨多個專案共用可重複使用工作流程和自訂操作。

GitHub Actions 的關鍵元件

  1. 工作流程:儲存在 .github/workflows 目錄中的 YAML 檔案中定義的自動化流程。
  2. 作業:每個工作流程都由可以同時或順序運作的作業組成。
  3. 步驟:每個作業都有一系列步驟,其中可能包括執行命令、腳本或可重複使用的操作。
  4. 觸發器:定義觸發工作流程的事件,例如push、pull_request、schedule等

設定您的第一個 DevOps 工作流程

讓我們逐步建立一個基本的 CI 工作流程,以便在推送新提交時測試和建置程式碼。

  1. 建立工作流程檔案

    導航到儲存庫中的 .github/workflows 並建立一個名為 ci.yml 的檔案。

  2. 定義工作流程架構

   name: CI Workflow

   on:
     push:
       branches:
         - main
     pull_request:
       branches:
         - main

   jobs:
     build:
       runs-on: ubuntu-latest

       steps:
         - name: Checkout code
           uses: actions/checkout@v3

         - name: Set up Node.js
           uses: actions/setup-node@v3
           with:
             node-version: '16'

         - name: Install dependencies
           run: npm install

         - name: Run tests
           run: npm test

         - name: Build project
           run: npm run build
登入後複製
登入後複製
  1. 工作流程說明
  • 觸發器(開啟):工作流程在針對主分支的 Push 或 Pull_request 事件上觸發。
  • 作業:我們有一個建置作業,用於安裝依賴項、執行測試和建置專案。
  • 步驟:每個步驟都使用操作或命令(例如,用於檢查程式碼的 actions/checkout、用於設定 Node.js 的 actions/setup-node 以及各種 npm 命令)。

添加 Linting 和程式碼品質檢查

為了確保程式碼質量,您可以在工作流程中新增 linting 步驟。

- name: Lint code
  run: npm run lint
登入後複製
登入後複製

在安裝依賴項之後新增此步驟有助於在管道早期識別程式碼品質問題。


使用 GitHub Actions 自動化部署

現在,讓我們為雲端服務新增自動部署步驟,例如 AWS 或 Firebase。

範例:部署到 Firebase

  1. 設定 Firebase CLI

    首先,在本機上安裝並設定 Firebase CLI。使用 firebase login:ci 產生令牌並將其儲存為 GitHub 機密 (FIREBASE_TOKEN)。

  2. 新增部署步驟

   name: CI Workflow

   on:
     push:
       branches:
         - main
     pull_request:
       branches:
         - main

   jobs:
     build:
       runs-on: ubuntu-latest

       steps:
         - name: Checkout code
           uses: actions/checkout@v3

         - name: Set up Node.js
           uses: actions/setup-node@v3
           with:
             node-version: '16'

         - name: Install dependencies
           run: npm install

         - name: Run tests
           run: npm test

         - name: Build project
           run: npm run build
登入後複製
登入後複製

這裡,我們指定needs: build,表示此部署作業僅在建置作業成功完成後執行。


高級 GitHub 操作提示

  1. 使用快取:透過快取相依性來加快工作流程。
- name: Lint code
  run: npm run lint
登入後複製
登入後複製
  1. 矩陣建置:使用矩陣策略跨多個版本或平台進行測試。
   deploy:
     needs: build
     runs-on: ubuntu-latest

     steps:
       - name: Checkout code
         uses: actions/checkout@v3

       - name: Set up Node.js
         uses: actions/setup-node@v3
         with:
           node-version: '16'

       - name: Install dependencies
         run: npm install

       - name: Build project
         run: npm run build

       - name: Deploy to Firebase
         env:
           FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
         run: |
           npm install -g firebase-tools
           firebase deploy
登入後複製
  1. Secrets 和環境變數:將敏感資訊儲存在 GitHub Secrets 中並使用 ${{ Secrets.SECRET_NAME }} 存取它們。

監控和調試工作流程

  • 查看日誌:GitHub Actions 中的每個步驟都會產生可透過「Actions」標籤存取的日誌。
  • 偵錯模式:在機密中新增 ACTIONS_STEP_DEBUG,值為 true 以進行詳細日誌記錄。
  • 錯誤通知:設定通知(例如 Slack 或電子郵件)以接收有關工作流程失敗的警報。

可重複使用的工作流程

隨著專案的成長,請考慮透過在 YAML 檔案中定義工作流程_call 並在多個儲存庫中重複使用來建立可重複使用的工作流程,特別是對於程式碼格式化或安全掃描等任務。


總結

使用 GitHub Actions 自動化 DevOps 工作流程可提高工作效率、減少人為錯誤並建立更強大的 CI/CD 管道。透過在後台無縫運行的工作流程,開發人員可以更專注於編寫程式碼,而不是部署任務。從測試開始,逐漸擴展到部署和監控,以最大限度地發揮 GitHub Actions 在 DevOps 之旅中的潛力。


本指南為使用 GitHub Actions 建置、測試和部署專案提供了基礎。一旦您熟悉了,您就可以透過自訂操作、整合和高級自動化進一步擴展,以實現完全優化的 DevOps 管道。

~TrixSec

以上是使用 GitHub Actions 自動化 DevOps 工作流程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板