第 07 章

GitHub Pages、Actions 與進階應用

GitHub 不只是放程式碼的地方——你可以用 GitHub Pages 免費部署靜態網站,用 Actions 自動化測試與部署流程,還有更多進階功能幫助你提升開發效率。

GitHub Pages(靜態網站部署)

GitHub Pages 讓你直接從 GitHub Repository 部署靜態網站,完全免費。適合個人網站、專案文件、作品集與教學教材。

🆓 完全免費

Public Repo 可免費使用 GitHub Pages,自動提供 username.github.io 網域。

🔄 自動部署

每次 push 到指定分支,GitHub 會自動重新建置並部署你的網站。

🌐 自訂網域

支援自訂網域名稱(Custom Domain),並自動提供 HTTPS 憑證。

啟用 GitHub Pages 的步驟

三種部署方式

根據你的需求選擇最適合的方式。

最簡單的方式——將整個 main 分支的根目錄作為網站。

  1. 在 Repo 中準備好 index.html
  2. 前往 Repo → SettingsPages
  3. Source 選擇 Deploy from a branch
  4. Branch 選擇 main,路徑選 / (root)
  5. 點擊 Save,等待幾分鐘後即可訪問。
# 網站 URL 格式
https://<username>.github.io/<repo-name>/

# 範例
https://alice.github.io/my-portfolio/

適合程式碼與文件分開管理——只部署 docs/ 資料夾的內容。

my-project/
├── src/           ← 程式碼(不會被部署)
├── docs/          ← 網站內容(會被部署)
│   ├── index.html
│   ├── style.css
│   └── guide.html
├── README.md
└── package.json
  1. 將網站檔案放在 docs/ 資料夾中。
  2. Settings → Pages → Branch: main, 路徑: /docs

最靈活的方式——用 GitHub Actions 自訂建置流程。適合需要編譯的框架(如 React、Vue、Jekyll)。

  1. Settings → Pages → Source 選擇 GitHub Actions
  2. GitHub 會建議適合你專案的 workflow 範本。
  3. 或自行建立 .github/workflows/deploy.yml

(詳見本章後半的 Actions 段落。)

GitHub Pages 的限制

項目限制
Repo 大小建議不超過 1 GB
網站大小不超過 1 GB
每月流量100 GB soft limit
建置頻率每小時最多 10 次
支援內容僅靜態內容(HTML/CSS/JS),無法執行後端程式

🔧 實作:部署你的第一個 GitHub Pages 網站

從零到上線的完整流程

# 建立專案
$ mkdir my-site && cd my-site
$ git init

# 建立簡單的網頁
$ cat > index.html <<'EOF'
<!DOCTYPE html>
<html lang="zh-Hant">
<head>
  <meta charset="utf-8">
  <title>我的第一個 GitHub Pages 網站</title>
  <style>
    body { font-family: sans-serif; max-width: 600px; margin: 2rem auto; padding: 0 1rem; }
    h1 { color: #f05033; }
  </style>
</head>
<body>
  <h1>Hello, GitHub Pages!</h1>
  <p>這是我用 Git 部署的第一個網站。</p>
</body>
</html>
EOF

$ git add . && git commit -m "feat: 建立首頁"
# 在 GitHub 建立一個新的 Public Repo(名稱如 my-site)

# 連結遠端並推送
$ git remote add origin git@github.com:你的帳號/my-site.git
$ git push -u origin main
  1. 在 GitHub Repo 頁面 → SettingsPages
  2. Source: Deploy from a branch
  3. Branch: main,路徑: / (root)
  4. 點擊 Save
  5. 等候 1-2 分鐘,頁面上方會出現網站的 URL。
  6. 點擊連結,你的網站就上線了!🎉

GitHub Actions(自動化工作流程)

GitHub Actions 是 GitHub 內建的 CI/CD(持續整合 / 持續部署)平台。它能在特定事件發生時(如 push、PR 建立)自動執行你定義的工作流程。

什麼是 CI/CD?

CI(Continuous Integration):每次提交程式碼後,自動執行測試,確保新程式碼不會破壞現有功能。

CD(Continuous Deployment):測試通過後,自動部署到正式環境。

為什麼要用 Actions?

  • 自動執行測試,避免人為疏忽。
  • 自動部署網站或應用程式。
  • 自動檢查程式碼風格與品質。
  • 自動產生文件或報告。

Actions 的核心概念

flowchart TD E["事件 Event
push / PR / schedule"] --> W["工作流程 Workflow
.github/workflows/xxx.yml"] W --> J1["Job 1: 測試"] W --> J2["Job 2: 部署"] J1 --> S1["Step 1: Checkout 程式碼"] J1 --> S2["Step 2: 安裝依賴"] J1 --> S3["Step 3: 執行測試"] J2 --> S4["Step 4: 建置專案"] J2 --> S5["Step 5: 部署到 Pages"]
概念說明
Workflow一個自動化流程,定義在 .github/workflows/ 目錄下的 YAML 檔案中。
Event(觸發事件)觸發 workflow 的事件,如 pushpull_requestschedule(定時)。
Jobworkflow 中的一組任務。多個 job 預設平行執行,也可設定依賴順序。
Stepjob 中的單一步驟,可以執行指令或使用別人寫好的 Action。
Action可重用的步驟模組,GitHub Marketplace 上有數千個現成的 Action 可用。
Runner執行 workflow 的虛擬機器。GitHub 提供免費的 Ubuntu、macOS、Windows runner。

撰寫你的第一個 Workflow

Workflow 使用 YAML 格式定義,存放在 .github/workflows/ 目錄下。

範例 Workflow

從簡單到實用的三個範例。

# .github/workflows/hello.yml
name: Hello World

on:
  push:
    branches: [ main ]

jobs:
  greet:
    runs-on: ubuntu-latest
    steps:
      - name: Say Hello
        run: echo "Hello from GitHub Actions!"

      - name: Show Date
        run: date

      - name: Show Git Version
        run: git --version

每次 push 到 main 分支時,這個 workflow 會在 Ubuntu 虛擬機上執行三個指令。

# .github/workflows/test.yml
name: Run Tests

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout 程式碼
        uses: actions/checkout@v4

      - name: 安裝 Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: 安裝依賴
        run: npm ci

      - name: 執行測試
        run: npm test

push 或建立 PR 時自動執行 Node.js 測試。uses 引用的是 GitHub Marketplace 上的現成 Action。

# .github/workflows/deploy-pages.yml
name: Deploy to GitHub Pages

on:
  push:
    branches: [ main ]

permissions:
  contents: read
  pages: write
  id-token: write

jobs:
  deploy:
    runs-on: ubuntu-latest
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Pages
        uses: actions/configure-pages@v4

      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: '.'

      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

這是使用 Actions 部署 GitHub Pages 的官方推薦方式。

語法說明
name:workflow 的名稱,會顯示在 GitHub Actions 頁面。
on:定義觸發條件。可以是事件(push、PR)或定時(cron)。
jobs:定義一個或多個 job。
runs-on:指定 runner 的作業系統(ubuntu-latest、macos-latest、windows-latest)。
steps:job 中的步驟列表,依序執行。
uses:使用現成的 Action(格式:owner/repo@version)。
run:直接執行 shell 指令。
with:傳入 Action 需要的參數。
permissions:設定 workflow 的權限(安全性考量)。

Actions 的常見用途

🧪 自動化測試

每次 push 或 PR 自動跑測試,確保程式碼品質。測試不過就不能 merge。

CI 品質保證

🚀 自動部署

測試通過後自動部署到 GitHub Pages、Vercel、AWS 等平台。

CD 部署

📏 程式碼品質

自動執行 ESLint、Prettier 等工具,統一程式碼風格。

Linting 格式化

🏷️ 自動 Release

根據 tag 自動建立 GitHub Release 並產生 changelog。

版本發行

📋 Issue 管理

自動為新 Issue 加標籤、指派人員、回覆範本訊息。

自動化

⏰ 定時任務

用 cron 語法定時執行,例如每天自動備份或更新資料。

排程

其他 GitHub 進階功能

功能說明適用場景
GitHub Codespaces 雲端開發環境,在瀏覽器中直接開啟 VS Code 編輯器,免安裝任何工具。 快速開始開發、教學環境、遠端協作。
GitHub Copilot AI 程式碼助手,在編輯器中即時提供程式碼建議與自動完成。 提升程式碼撰寫效率、學習新語言。
GitHub Discussions Repo 專屬的討論區,像論壇一樣的問答與交流空間。 社群互動、Q&A、功能投票。
GitHub Packages 託管套件(npm、Docker、Maven 等),與 Repo 整合。 發布與管理套件、Docker Image。
GitHub Projects 進階看板工具,支援自訂欄位、自動化規則與多種視圖(表格、看板、時間軸)。 專案管理、Sprint 規劃。
Branch Protection Rules 保護分支的規則:強制 PR 審查、必須通過 CI 測試才能合併。 保護 main 分支穩定性。
Dependabot 自動偵測專案依賴的安全漏洞,並建立 PR 更新到安全版本。 依賴管理、安全維護。

GitHub Actions 的免費額度

方案每月免費額度Storage
Free2,000 分鐘(Linux runner)500 MB
Pro3,000 分鐘1 GB
Team3,000 分鐘2 GB
Enterprise50,000 分鐘50 GB
注意:Public Repo 的 Actions 使用完全免費,不計入額度。上述額度限制僅適用於 Private Repo。macOS 和 Windows runner 的消耗速率比 Linux 高(macOS = 10x,Windows = 2x)。

🔧 動手練習

練習 1:部署 GitHub Pages

  1. 建立一個 Public Repo。
  2. 新增一個簡單的 index.html
  3. 在 Settings → Pages 啟用部署。
  4. 等待幾分鐘,訪問你的網站!
  5. 修改內容 → push → 確認網站自動更新。

練習 2:建立第一個 Workflow

  1. 在 Repo 中建立 .github/workflows/hello.yml
  2. 複製 Hello World 範例的內容。
  3. Commit 並 push。
  4. 在 GitHub Repo → Actions 頁面查看執行結果。
  5. 嘗試修改 workflow 加入更多步驟。

本章小結

知識重點

  • GitHub Pages 可以免費部署靜態網站,三種部署方式可選。
  • GitHub Actions 是內建的 CI/CD 平台,用 YAML 定義 workflow。
  • Workflow 由 Event → Job → Step 組成,可使用 Marketplace 的 Action。
  • Public Repo 的 Actions 免費、Pages 免費。
  • GitHub 還提供 Codespaces、Copilot、Projects 等進階工具。

整門課程回顧

  • Ch01-03:Git 核心(Repo、Init、Commit)。
  • Ch04:GitHub 平台與遠端操作。
  • Ch05:Branch、PR、Issue 協作流程。
  • Ch06:Rebase、Revert、Reset、Stash 進階操作。
  • Ch07:GitHub Pages、Actions 與進階應用。
🎉 恭喜你完成了全部課程! 從 Repository 的基本概念到 GitHub Actions 的自動化部署,你已經建立了完整的 Git 與 GitHub 知識體系。 接下來,最好的學習方式就是在實際的專案中不斷練習。祝你開發順利!