Course

看好了 GitHub Actions,我只示範一次

把部署和檢查自動化,讓每次 push 都更安心。30 天鐵人賽系列,從 CI/CD 基礎到進階部署流程。

Outcome 01

自動化 CI/CD 流程

每次 push 自動跑測試、建置、部署,讓工作流程更安全可靠。

Outcome 02

掌握 GitHub Actions 語法

理解 workflow、job、step 的結構,能寫出可複用的 Action。

Outcome 03

實戰部署與整合

串接 Docker、SSH 部署、Secrets 管理與第三方服務通知。

Course overview

30 單元

Target audience: 零基礎 / 鐵人賽 / 30 天

Reading path
看好了 GitHub Actions,我只示範一次
30 章節
最後更新 2024.10.13
適合
所有學習者
Module 01
靠著那 GitHub Actions,凡事都能做

靠著那 GitHub Actions,凡事都能做

> 腓立比書 4 章 13 節「我靠著那加給我力量的 (ymal),凡事都能做」

18 min
Module 02
Hello World - 運行 Shell 指令

Hello World - 運行 Shell 指令

> 「有朋自遠方來,不亦樂乎」應該算是孔子的 Hello World 吧。

7 min
Module 03
幫我結帳 - 自動化 Git 操作

幫我結帳 - 自動化 Git 操作

> GitHub Actions 如同九方皋相馬,見其所見,不見其所不見;視其所視,而遺其所不視。預設環境是讀不到 Code 的,要使用 actions/checkout 才能讀取 repo 內容。

11 min
Module 04
弄好了給你 - 上傳與下載工件(artifact)

弄好了給你 - 上傳與下載工件(artifact)

> 宋·張端義《貴耳集》上卷:「言簡理盡,遂成王言。」可見檔案壓縮十分重要。

16 min
Module 05
用 Prettier 統一天下 - 讓程式碼格式一致

用 Prettier 統一天下 - 讓程式碼格式一致

> 《史記·秦始皇本紀》:「書同文,車同軌。」秦始皇做專案一定會設定會用 Prettier,讓程式格式一致。

11 min
Module 06
有意見就說 - 編輯後自動提 Pull Request

有意見就說 - 編輯後自動提 Pull Request

> 《三國演義》第六 ○ 回:「竊聞:『 良藥苦口利於病,忠言逆耳利於行。』」處理 Issue 和 PR 很煩但十分重要。

12 min
Module 07
時間差不多囉 - 事件觸發器

時間差不多囉 - 事件觸發器

> 《禮記·中庸》「凡事預則立,不預則廢。」說明了如果沒有預先設定事件觸發器,需要時 Action 也不會執行。

11 min
Module 08
今天不講 DVD,來談談 CI/CD - eslint 與 pylint

今天不講 DVD,來談談 CI/CD - eslint 與 pylint

> 「知者不惑,仁者不憂,勇者不懼。」因為他們都有使用 eslint。

12 min
Module 09
Jest Do It - 運行單元測試

Jest Do It - 運行單元測試

> 《論語.公冶長》:「聽其言而觀其行。」說明了 unit test 的重要性。

12 min
Module 10
啊我就怕不相容 - 多平台測試

啊我就怕不相容 - 多平台測試

> 從孟母三遷的故事可以看出孟子在不同環境的相容性都不錯,但結果不一定和預期相同。

7 min
Module 11
告訴你一個大秘密 - 如何在 GitHub Actions 中使用 Secrets

告訴你一個大秘密 - 如何在 GitHub Actions 中使用 Secrets

> 水果冰淇淋喜歡你,GitHub Secrets 在這裡。 > > 《易經》:「亂之所生也,則言語以為階。君不密則失臣,臣不密則失身」說明了把 token 存在 Secrets 的重要性。

9 min
Module 12
一切都是有條件的 - 環境變數和條件運行

一切都是有條件的 - 環境變數和條件運行

> 甚麼是條件運行?孟子說:「生,事之以禮;死,葬之以禮;祭,事之以禮。」

10 min
Module 13
在碼頭等你 - 自動化 Docker 構建

在碼頭等你 - 自動化 Docker 構建

> 司馬遷敢說:「人固有一死,或重於泰山,或輕於鴻毛。」正是因為他已經把服務打包成 Docker 映像了,就算服務掛了也不怕。

8 min
Module 14
直上天雲 - 自動化部屬

直上天雲 - 自動化部屬

> 老子能夠無為而治,正是因為他掌握了 GitHub Actions 自動化部屬。

10 min
Module 15
這是我家鑰匙 - SSH 自動化部署

這是我家鑰匙 - SSH 自動化部署

> 《史記》「以貌取人,失之子羽」說明了 SSH 身分驗證的重要性。

7 min
Module 16
解放你的 Release - 自動化版本控制與發布

解放你的 Release - 自動化版本控制與發布

> 秦始皇焚書坑儒時可以 force push 刪除紀錄,但誰知道有沒有人本地 `.git` 還留著呢!

5 min
Module 17
有人在水 - 統計 Notion 待辦事項放到 Discord 頻道

有人在水 - 統計 Notion 待辦事項放到 Discord 頻道

> 孔子能從心所欲不逾矩。正是因為他已經掌握 GitHub Actions,能夠根據自己的需求自動化操作。

26 min
Module 18
用 GitHub Actions 把 Issue 同步到 Notion

用 GitHub Actions 把 Issue 同步到 Notion

> 白居易在看到滿滿的 issue 後不經感嘆:「野火燒不盡,春風吹又生。」然後毅然決然地把 issue 同步到 Notion,這樣就不會忘記了。

15 min
Module 19
萬籟聚集 - 自動化 Issue 管理與整合第三方服務

萬籟聚集 - 自動化 Issue 管理與整合第三方服務

> 戰國時期張儀遊說各國開放 API 給秦整合,才能夠瓦解合縱聯盟。

12 min
Module 20
渲染 Markdown 文件 - 自動生成和更新項目說明文件

渲染 Markdown 文件 - 自動生成和更新項目說明文件

> 司馬遷如果使用 GitHub Actions 就可以自動更新《史記》了。

15 min
Module 21
我沒錢買 MacBook - 自動化多平台 Python 應用打包

我沒錢買 MacBook - 自動化多平台 Python 應用打包

> 不如虎穴,焉得虎子,說明了 pyinstaller 要打包 macOS 的執行檔一定要在 macOS 環境運行。

8 min
Module 22
特選簡章 Discord 通知 - 爬蟲腳本與資料處理

特選簡章 Discord 通知 - 爬蟲腳本與資料處理

> 「讀書人的事,能算偷麼?」孔乙己如果是使用 GitHub Actions 運行爬蟲腳本,就不會被人發現還打斷腳了。

17 min
Module 23
不在其位,不謀其政 - 多階段 CI/CD 流程

不在其位,不謀其政 - 多階段 CI/CD 流程

> 子曰:「不在其位,不謀其政。」說明了多階段工作流程的重要性。

9 min
Module 24
自動化性能測試 - 使用 GitHub Actions 進行負載測試與生成性能報告

自動化性能測試 - 使用 GitHub Actions 進行負載測試與生成性能報告

> 嬌娘對王安石進行心理上的壓力負載測試後寫下了性能報告:「宰相肚裡能撐船」

9 min
Module 25
自動化安全掃描與漏洞檢查 - 使用 Dependabot 和 GitHub Actions

自動化安全掃描與漏洞檢查 - 使用 Dependabot 和 GitHub Actions

> 《山河頌》:「外賊易擋,家賊難防」套件的漏洞常常難以發現,還好有 Dependabot 可以定期檢查。

7 min
Module 26
整合通知服務 - 在 GitHub Actions 中配置 Slack 通知和生成報告文件

整合通知服務 - 在 GitHub Actions 中配置 Slack 通知和生成報告文件

> 雅典軍隊如果有 Slack 通知,斐迪庇得斯就不用趕著從馬拉松跑回雅典了。

9 min
Module 27
最佳化工作流程運行時間:使用 GitHub Actions 快取來加速構建

最佳化工作流程運行時間:使用 GitHub Actions 快取來加速構建

> 王貞白曾感嘆「一寸光陰一寸金」,可見最佳化工作流程運行時間的重要性。畢竟 GitHub Actions 在私人倉庫中可不是無限免費的!

9 min
Module 28
無國界倉庫 - 管理多倉庫的自動化工作流程

無國界倉庫 - 管理多倉庫的自動化工作流程

> 《荀子 ─ 勸學》:「不積跬步,無以致千里;不積小流,無以成江海。」

9 min
Module 29
鐵人賽怕忘記發文?讓 GitHub Actions 每小時提醒你!

鐵人賽怕忘記發文?讓 GitHub Actions 每小時提醒你!

倒數第二天了,各位今年有參加鐵人賽嗎?記得去年寫[【不用庫 也能酷 - 玩轉 CSS & Js 特效】](https://ithelp.ithome.com.tw/users/20139821/ironman/6133)的時候緊張到好幾天晚上做惡夢夢到忘記發文,不過今天我心裡特別平安,因為我寫了一個 GitHub Actions 來提醒我每小時發文。

11 min
Module 30
是時候 Action 了。

是時候 Action 了。

> 愛爾蘭詩人葉慈:「學習不是注滿一桶水,而是點燃一把火。

11 min

Comments

留言區