GitHub Actions 玩法大赏:一台远程主机的七种活法
GitHub Actions ç©æ³å¤§èµï¼ä¸å°è¿ç¨ä¸»æºçä¸ç§æ´»æ³
minorcell 2026-08-18 0 é 读9åé忥è³ä¸ªäººç«ç¹ï¼GitHub Actions ç©æ³å¤§èµï¼ä¸å°è¿ç¨ä¸»æºçä¸ç§æ´»æ³
GitHub Actions æ¬è´¨ä¸æ¯ GitHub ç½éçä¸å°è¿ç¨ä¸»æºï¼æè§¦åæ¡ä»¶èªå¨å¼æºãèªå¸¦ä»åºæéãè·ä½ å好çå½ä»¤ãä½å¤æ°äººåªæ¿å®è·æµè¯å lintââè¿æ¯å®ææ èçä¸ç§æ´»æ³ã
è¿ç¯æç« çç¹å¼æºé¡¹ç®æå®ç©åºçä¸ç§æ´»æ³ï¼ä»ä¸ºèªå·±ç¾å°ï¼å°åå¸è½¯ä»¶ãAI ç»´æ¤è ï¼åå°ç¨æºå¨äººç®¡çæºå¨äººï¼ä¸è·¯è¿é¶ãçå®ä½ ä¼åæï¼æå®å½âè·æµè¯çå°æ¹âï¼å¤ªæµªè´¹äºã
ä¸ãè·æµè¯ï¼ææ£ç»çæ´»æ³
å¨ .github/workflows/ 䏿¾ä¸ä¸ª YAML æä»¶ï¼å°±å®ä¹äºä¸ä¸ª workflowãè§¦åæ¡ä»¶ï¼on:ï¼æ»¡è¶³æ¶ï¼GitHub æå®è°åº¦å°ä¸å° runner 䏿§è¡âârunner æ¯ä¸å°è¿ç¨ç Linux / macOS / Windows 主æºï¼step å°±æ¯å¨è¿å°ä¸»æºä¸éè¡è·å½ä»¤ï¼
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- run: npm test
æµè¯ãlintãæ ¼å¼åï¼è¿æ¯ææäººçèµ·ç¹ãä½åæ ·æ¯è·æµè¯ï¼å¤§é¡¹ç®ç©åºäºè±æ ·ï¼
- ç©éµ à åçï¼ä¸ä»½æµè¯å®ä¹ï¼ä¹ä¸å¤ä¸ªçæ¬ååçå¹¶è¡è·ãAnt Design ç test.yml ææµè¯æ
shard: [1/2, 2/2]åæä¸¤ä»½åæ¶è·ï¼åä¹ä¸ React çæ¬ç©éµââä¸ä»½ job å®ä¹ï¼è¥å¹²ä»½å¹¶è¡æ§è¡ï¼30 åéçæµè¯åå° 8 åéãåçè·å®çæå»ºäº§ç©ç¨actions/cacheå¨ job ä¹é´ä¼ éï¼é®å带run_idï¼å¤©ç¶ä¸ä¼æ¿å°æ§ run çè产ç©ï¼ã - æè·¯å¾è·³è¿ï¼Next.js ç CI å¼å¤´æä¸ª
changesjobï¼å å¤æè¿æ¬¡æ¹äºä»ä¹ââåªæ¹äºææ¡£å°±ä¸è·éææµè¯ãåªæ¹äº turbopack å°±ä¸è·æ å ³æµè¯ãCI 䏿¯è¶å¤è¶å¥½ï¼èªæå°å°è·ä¹æ¯å·¥ç¨ã
å°è¿éï¼è®°ä½å ¨ç¯å¯ä¸çä¸å¥è¯ï¼runner æ¯ä¸å°è¿ç¨ä¸»æºï¼ä¸»æºè½åçäºå®é½è½åã åé¢å ç§æ´»æ³ï¼é½æ¯è¿å¥è¯çèªç¶æ¨è®ºã
äºã为èªå·±ï¼æå¾®è½¯çæå¡å¨å½èªå·±ç cron
æ¢ç¶æ¯å°ä¸»æºï¼å®å½ç¶ä¸ä¸å®è¦ä¸ºä»£ç æå¡ãä¸æç¤¾åºæ Actions ç©å¾æéçå°æ¹ï¼å°±æ¯ä¸ªäººä»åºã
宿¶ç¾å°ã juejin-actions æ¯ç¥åå端å主è¥å·åçï¼fork ä»åºãæ Cookie å¡«è¿ secretsï¼Actions æ¯å¤©å®æ¶æ¿ä½ 䏿éç¾å°é¢ç¿ç³ãåç±»çç¾å°ä»åºè¦ç B ç«ãè´´å§ãV2EX çäºåå¤ä¸ªå¹³å°ï¼æ ¸å¿å°±ä¸ä¸ª schedule 触åï¼
on:
schedule:
- cron: '0 1 * * *' # æ¯å¤©åæ¨ 1 ç¹ï¼UTCï¼ï¼GitHub å
è´¹å¸®ä½ è·
ï¼ç¤ºæä»£ç ï¼ä»¥å®æ¹ææ¡£ä¸ºåãï¼
宿¶æ¨éã hackernews-daily æ¯å¤©æ Hacker News çæ¦ Top 10ï¼æææ©æ¥æ¨éãè¿æäººç¨å¾®ä¿¡å ¬ä¼å·æµè¯å·æ¥å£åå¤©æ°æ¨éã课表æéââé¶æå¡å¨é¶è´¹ç¨ï¼ä¸å°æ°¸ä¸å ³æºçâå è´¹ cronâã
主页仪表çã waka-readme æ¯å¤©æä½ çç¼ç æ¶é¿ç»è®¡åè¿ profile READMEï¼running_page 宿¶åæ¥ Strava / Nike è·æ¥æ°æ®ï¼èªå¨çæè·æ¥å°å¾åç»è®¡é¡µââ䏿åçâè·æ¥ä¸»é¡µâæåå°±é å®ãæåºåçæ¯ snkï¼å å夿çä»åºï¼æ¯å¤©æä½ ç commit çå徿¸²ææä¸æ¡è´ªåèå¨ç»ï¼commit åä½ ç主页ã访客ç¹è¿ä½ ç GitHubï¼çå°çæ¯ä¸æ¡èå¨åä½ çè´¡ç®æ ¼åï¼
è¿å±çå ±åç¹æ¯ï¼ä»åºä¸ååªæ¯ä»£ç ï¼å®æ¯ä½ çæ°æ®é¢æ¿ãä½ ç个人åçãä½ çèªå¨åçæ´»ã GitHub 主页æäºä½ ä¸éè¦èªå·±ææå¡å¨ç个人ç½ç«ã
ä¸ãååºå»ï¼ä¸ä¸ª tag çå¤ç±³è¯º
è·æµè¯æ¯ä¸ºèªå·±ï¼åå¸è½¯ä»¶æ¯ç»å«äººãå叿µç¨æå®¹æä¹±ââä»ä¹æ¶ååãåä»ä¹ãåå°åªï¼é 人记ä¸å¯é ï¼å¤§é¡¹ç®ææ´æ¡é¾é½äº¤ç»äº Actionsã
Ant Design åå¸ä¸ä¸ªçæ¬ tagï¼å¥½å 个 workflow åæ¶è¢«è¸¢èµ·æ¥ï¼èªå¨åæ¨ãå¾ä¸ä¸ªéé群æ¨é changelogãæå»ºå¹¶é¨ç½²ææ¡£ç«ç¹ï¼dumi å ¨ç«æå»º + bundle åæ + GitHub Pages / Gitee / surge ä¸å¤é¨ç½² + Release éä»¶ï¼ä¸æ¬¡è· 30â45 åéï¼ãç»´æ¤è åªéè¦æä¸ä¸ª tagï¼å©ä¸çäº¤ç» runner è¿è½´è½¬ã
åå¸çå®å ¨ä¹å¨å级ãnpm çå¯ä¿¡åå¸ï¼OIDCï¼è®©ä»åºéä¸åå npm tokenï¼
permissions:
id-token: write # ç¨ GitHub ä¸ npm ä¹é´çèé¦èº«ä»½ï¼æ¢æ token
steps:
- run: npm publish --provenance
ï¼ç¤ºæä»£ç ï¼ä»¥å®æ¹ææ¡£ä¸ºåãï¼
flux2 èµ°å¾æ´è¿ï¼å®ç release.yaml å¨å叿¶çæ SLSA provenance å¹¶ç¨ cosign ç»äº§ç©ç¾åï¼è¿æ¯å¨è·ä¸æ¬¡ OSSF Scorecard ç»èªå·±æä¾åºé¾å®å ¨åãååºå»çä¸åªæ¯è½¯ä»¶ï¼è¿æå¯éªè¯çâåºèº«è¯æâââ䏿¸¸ç¨æ·è½æ¥è¯è¿ä¸ªäºè¿å¶ç¡®å®åºèªè¿ä¸ªä»åºãè¿æ¡æµæ°´çº¿ï¼ä¸é没人å¨è¿æèã
åã管起æ¥ï¼è®©äººåªåæºå¨åä¸äºçäº
åä½è§èæ¯äººæ»å¿ãæºå¨ä¸ä¼å¿çä¸è¥¿ã弿ºé¡¹ç®æè¿å±äº¤ç»äºèªå¨åèæ¬ã
Windup æ¯ä¸ªå¼æºå¦ç项ç®ï¼å®æ issue æ²»çåæäºæµæ°´çº¿ï¼8 ç±» issue 模æ¿å¼ºå¶æ é¢åç¼ï¼issue ä¸è¿æ¥ï¼workflow ç¨ github-script è·ä¸æ®µ JSââæ³¨å ¥ä¸ä¸ªå·²å¸¦å¥½æéç GitHub API 客æ·ç«¯ââææ 颿£åèªå¨åç±»ãæ labelãæéç¨ç¢ã设 issue typeï¼å段被é项ç¹äº®ï¼
å 个å¼å¾æçç»èï¼å¤æ PR æ¯å¦å
³è issue ç¨ GraphQL ç closingIssuesReferencesï¼æè¿°éç Closes #123 å Development ä¾§æ å
³èé½è½è¯å«ï¼ï¼æéç±» comment åä¸ä¸ªéèæ è®°é²æ¢æ¯æ¬¡ push éå¤å·å±ï¼æ£æ¥ç±» workflow è¦æå° required status checks ä¸ââ纯æé没æå¼ºå¶åï¼æä¸é¸é¨æè½è®©ä¸åè§ç PR åä¸è¿æ¥ã
ä¾èµæ´æ°ä¹å ¨èªå¨ï¼Dependabot æ¯å¤©å¼å级 PRï¼é ä¸ä¸ª workflow 对 patch / minor çæ¬èªå¨ approve å¹¶ auto-mergeï¼major ç人工确认ââ个人项ç®çä¾èµä»æ¤ä¸åè çãAnt Design çè³æä¸ªæ¯ 5 åéé䏿¬¡çæºå¨äººï¼èªå¨åå¹¶ master / feature / next å ä¸ªé¿æåæ¯ä¹é´ç忥 PRï¼å¹¶è¡å¼åä¸ç¨ç»´æ¤è æå·¥è¿½ã
æ´ç¡¬æ ¸çæ¯åè§é¨ï¼Home Assistant ç workflow å¨ issue æå¼æ¶è°ç¨ GitHub 宿¹å
ç½® AIï¼permissions: models: readï¼æ£æµè¯è¨ï¼éè±è¯ issue èªå¨è¯è®ºå¼å¯¼ï¼VS Code 强å¶å¾®è½¯å®å
¨ååºåæ¯ç PR å¿
须带 Msrc-Case-Id æ è®°ï¼å¦å CI ç´æ¥å¤±è´¥ãå½ç»´æ¤è
ç²¾åæéï¼æºå¨å
æ¿ä½ æ¡æä¸é¨åã
äºãç» AIï¼ä» review bot å° AI ç»´æ¤è
AI è¿ workflowï¼æ¯è¿ä¸ä¸¤å¹´ååæå¿«çä¸å±ã
OpenAI 宿¹ç codex-action 宿¹ç¤ºä¾å°±æ¯ PR review botï¼PR è¿æ¥ï¼Codex è·å®¡æ¥ãææè§åæè¯è®ºã宿¹ cookbook éè¿æèªå¨ä¿® CI çç°ææ¨¡æ¿ââCI æäºï¼AI 修好ä¹åèªå¨å¼ä¸ä¸ªä¿®å¤ PRã
Bun èµ°å¾æ´è¿ãå®çä»åºéä½çä¸ä¸ªå« robobun ç AI æºå¨äººï¼æä¸ä¸ª bug issueï¼å®èªå¨åæä»£ç ãä¿®å¤ãæäº¤ PRï¼åä¸ä½æ¶å»å¨çº¿çç人维æ¤è ãç¿» Bun ç workflows ç®å½è½çå°ä¸æ´å¥é å¥ââç» bot ç PR èªå¨ææ ç¾ãç¨ LLM å issue å¤éãææææçæ¯å®è¿ä¸é¨æä¸ª workflow å ³æ robobun å¼å¤çè¿æ PRï¼æºå¨å¼ PR ä¹ä¼å·å±ï¼èªå¨åèªå·±ä¹éè¦è¢«ç®¡çã è¿ä¸ªç»èæ¯âAI ç»´æ¤è âæ¬èº«æ´å¼å¾è®°ä½ã
è¿æ¯ robobun å¨ Bun ä»åºçå®å¼åºçä¸ä¸ä¸ª PR ä¹ä¸ï¼æ²¡æç人åä¸ï¼issue ä¸è¿æ¥èªå¨åæãä¿®å¤ãæäº¤ãæªè³ 2026 å¹´ 8 æï¼å®ç´¯è®¡å¼è¿ 9300 å¤ä¸ªè¿æ ·ç PRã
AI ä¸åªè½å¹²æ´»ï¼è¿è½å½è¢«æµå¯¹è±¡ãSupabase æèªå®¶ AI åè½ç LLM è¯æµï¼Braintrust evalsï¼è·æ PR é¨ç¦ââæ¯æ¬¡ push å éªè¯ AI çæ¡è´¨éåå·¥å ·è°ç¨æ£ç¡®æ§ï¼åäº PR åä¸è¿ãAI 代ç è¿ä»åºä¹åï¼AI èªå·±å èè¯ã
å ã彿å¡å¨ï¼ä»åºæäºä¼èªå·±é¿å¤§çæ°æ®æº
â主æºè½åçäºå®é½è½åâââå æ¬æ¿ä½ çæ§ä¸çãæ¶éä¸çã
upptimeï¼1.7 ä¸æï¼æ GitHub æ¼æäºä¸æ´å¥åä¸çæ§æå¡çå è´¹æ¿ä»£ï¼æ¯ 5 å鿢æµä¸æ¬¡ç½ç«å¯ç¨æ§ãæ¯ 6 å°æ¶è®°å½ååºæ¶é´ãæ¯å¤©çæå¾è¡¨ãæäºèªå¨å¼ issue å½åè¦åãGitHub Pages åºç¶æé¡µãActions 彿¢æµå¨ãIssues å½åè¦å·¥åãPages å½ç¶æé¡µï¼Canonical çå ¬å¸é½å¨ç¨ãæ°æ®å ¨å¨ git åå²éï¼ä¸æå¹³å°è·è·¯ã
åæ ·ç模å¼ç¨å¨æ°æ®ä¸ï¼ä»åºå°±æäºä¼èªå·±é¿å¤§çæ´»æ°æ®æºï¼fanmingming/liveï¼2.8 ä¸æï¼æ¯ 2 å°æ¶æåå并䏿¬¡ IPTV ç´ææºï¼blackmatrix7 çåæµè§åéï¼2.7 ä¸æï¼æäº¤è®°å½å ä¹å
¨æ¯ github-actions[bot]ââä¸ä¸ªä»åºæ¯å¤©èªå¨æ´æ°èªå·±ï¼ä¸æ¸¸é¡¹ç®åä»è¿ä¸ªä»åºæ´¾çï¼å½¢æä¸æ¡âActions æ°æ®é¾âãè¿æ chinese-independent-developerï¼6 䏿ï¼ç¨å®æ¶ workflow ç¬åå¼åè
ä¿¡æ¯çææ¦åãä¸éè¦æ°æ®åºãä¸éè¦å端ï¼git æäº¤åå²å°±æ¯æ°æ®åºï¼README å Pages å°±æ¯å端ã
ä¸ã管èªå¨åæ¬èº«ï¼èªå¨åä¹éè¦è¢«ç®¡ç
workflow æå°å å个ï¼èªå¨åèªå·±å°±æäºå·¥ç¨å¯¹è±¡ã
uv æ 40 å¤ä¸ª workflowï¼å®ç¨ check-zizmor.yml è· zizmorââä¸ä¸ªä¸é¨å®¡è®¡ workflow YAML å®å ¨é®é¢ç linterââæ«æèªå·±çææ workflow ææ²¡ææ³¨å ¥æ¼æ´åå±é©ç¨æ³ï¼ç»æç´æ¥è¿ Code Scanning 颿¿ãç¨ CI æ£æ¥ CI æ¬èº«ã
deno å¹²èä¸ç¨ YAML å workflowââå®ç CI æ¯ TypeScript åçï¼ç¨ @david/gagen åºçææç» YAMLï¼ç©éµå®ä¹ãrunner 常éå
¨é¨ä»£ç å
±äº«ï¼åæ®éå·¥ç¨ä¸æ ·è¢« lintã被 reviewã
ä¸é¢å°±æ¯ deno ç workflow æºç ï¼æ³¨ææä»¶å¤´ï¼import { createWorkflow } from "jsr:@david/gagen@0.3.1"ââYAML ä¸åæ¯å¯ä¸åæ³ï¼workflow ä¹å¯ä»¥æ¯æ£ç»çå·¥ç¨ä»£ç ã
ææ¬ä¹æ¯ç®¡ç对象ãNext.js 对 stacked PR æºè½è·³è¿æè´µ jobââå æ 䏿®µç PR åªè· lint ååæµè¿ç±»è½»éåå ³é®çæ£æ¥ï¼è¿æä¸ä¸ªä¸é® code freezeï¼å»ç»æé´è°ä¹å«æ³åå ¥ã
æ¶å°¾
åå°å¼å¤´é£å¥è¯ï¼runner æ¯ä¸å°è¿ç¨ä¸»æºï¼å¸¦æéãå¯å®æ¶ãå¯èç½ã ä¸ç§æ´»æ³éè¿å°è¿éï¼æå¡å¯¹è±¡ä»ä»£ç åæåå¸ãåæåä½ãåæä½ ãåææ°æ®ãæååæèªå¨åæ¬èº«ââèå®å§ç»æ¯åä¸å°ä¸»æºï¼ç§¯æ¨åªæååï¼è§¦åã宿¶ãjobãrunnerï¼è¿å¯ä»¥æ¢æä½ èªå·±çæºå¨ï¼llama.cpp å°±ç¨å¸¦ Apple Silicon ç Mac è· Metal GPU æµè¯ï¼ã
䏿¬¡åéå°âè¦ç®¡çæµç¨âï¼å«å æ³çé 人记ââåä¸ä¸ª workflowï¼è·èµ·æ¥ççï¼åäºå°±ä¿®ãä¸ç§æ´»æ³ä¹å¤ï¼ç¬¬å «ç§çä½ èªå·±ç©åºæ¥ã
Aitishiku.com