ã2026幎çãGitHub Actionsã®å§ãæ¹ â CI/CDãèªååããå®å šã¬ã€ã
- ã¯ãŒã¯ãããŒYAMLã®åºæ¬æ§é ïŒon/jobs/stepsïŒ
- ããªã¬ãŒïŒpush/pull_request/scheduleïŒã®èšå®
- ãã¹ãèªååã»ãããã€èªååã®åºæ¬
- ã·ãŒã¯ã¬ããïŒSecretsïŒã®å®å šãªç®¡çæ¹æ³
ã¯ãŒã¯ãããŒã®åºæ¬æ§é
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4 # ãªããžããªããã§ãã¯ã¢ãŠã
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
ãã䜿ãã¢ã¯ã·ã§ã³æ©èŠè¡š
| ã¢ã¯ã·ã§ã³ | çšé |
|---|---|
actions/checkout@v4 | ã³ãŒãããã§ãã¯ã¢ãŠã |
actions/setup-node@v4 | Node.jsãã»ããã¢ãã |
actions/setup-python@v5 | Pythonãã»ããã¢ãã |
actions/cache@v4 | äŸåé¢ä¿ããã£ãã·ã¥ |
actions/upload-artifact@v4 | ãã¡ã€ã«ãã¢ãŒãã£ãã¡ã¯ãã«ä¿å |
ã·ãŒã¯ã¬ããã®äœ¿ãæ¹:
- name: Deploy
env:
API_KEY: ${{ secrets.API_KEY }} # ãªããžããªã®Secretsããåç
§
run: ./deploy.sh
ããããè©°ãŸããã€ã³ã
Q: ã¯ãŒã¯ãããŒãåããªã
â ãŸã .github/workflows/ ãã£ã¬ã¯ããªã«æ£ããYAMLãé
眮ãããŠããã確èªãYAMLã®ã€ã³ãã³ããã¹ãå€ããããVSCodeã®YAMLæ¡åŒµæ©èœã䜿ããšæ§æãšã©ãŒãäºåã«æ€åºã§ããŸãã
Q: ã·ãŒã¯ã¬ããããã°ã«åºåããŠããŸãããã§æã
â GitHub Actionsã¯Secretsã®å€ããã°ã§èªåçã«ãã¹ã¯ããŸãããã ã base64 ãšã³ã³ãŒããªã©ã§å€åœ¢ããå€ã¯ãã¹ã¯ãããªãã®ã§æ³šæãå¿
èŠã§ãã
Q: å®è¡æéãé·ããã
â actions/cache ã§ node_modules ã .pip ããã£ãã·ã¥ãããšå€§å¹
ã«ççž®ã§ããŸãããžã§ãã䞊åå®è¡ïŒneeds ãå€ãïŒããã®ãæå¹ã§ãã
GitHub Actionsã£ãŠããèããã©ãäœãã§ããã®ïŒ
ç°¡åã«èšããšãGitHubã«ã³ãŒããpushããããã«ãªã¯ãšã¹ããåºãããšãã«ããã¹ãããããã€ãèªåã§å®è¡ããŠãããä»çµã¿ã ãããããããããCI/CDãã€ãŸããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã»ç¶ç¶çããªããªãŒãã£ãŠãã€ã ãã
CI/CDã£ãŠé£ãããã ãã©ãå ·äœçã«ã¯ã©ãããããšãªã®ïŒ
CIã¯ãã³ãŒãã倿Žãããã³ã«èªåã§ãã¹ããèµ°ãããŠãå£ããŠãªãã確èªãããããšãCDã¯ããã¹ããéã£ããèªåã§æ¬çªç°å¢ã«ãããã€ãããããšãæäœæ¥ã§ãããšå¿ããããã¹ããããããã©ãGitHub Actionsã«ä»»ããã°pushããã ãã§å šéšãã£ãŠããããã ãã
䟿å©ã ãïŒã§ãã©ããã£ãŠèšå®ããã®ïŒ
ãªããžããªã®äžã«ã.github/workflowsããšãããã©ã«ããäœã£ãŠãããã«YAMLãã¡ã€ã«ã眮ãã ãã ãããã®YAMLãã¡ã€ã«ããã¯ãŒã¯ãããŒããšåŒã°ããŠããŠããã€ã»äœãã»ã©ã®é çªã§å®è¡ããããå®çŸ©ãããã ããã¡ã€ã«åã¯èªç±ã ãã©ãci.ymlãšãdeploy.ymlã¿ããã«åãããããååãä»ããã®ãããããã ãã
ããã§å®éã«è©ŠããŠã¿ãŠããGitHubãªããžããªã«ã.github/workflows/hello.ymlããäœã£ãŠããon: pushããjobs: say-hello: runs-on: ubuntu-latest steps: - run: echo 'Hello Actions!'ããšããæå°æ§æãæžããŠpushããŠã¿ãããActionsã¿ãã§ã¯ãŒã¯ãããŒãGreenïŒâïŒã«ãªãã°æåã ãïŒ
ã¯ãŒã¯ãããŒã®äžèº«ã£ãŠã©ããªæ§é ã«ãªã£ãŠããã®ïŒ
倧ãã3ã€ã®èŠçŽ ããããããŸããããªã¬ãŒãã§ããã€ã¯ãŒã¯ãããŒãåããããæ±ºãããpushãããšãããã«ãªã¯ãšã¹ããäœããããšããã¹ã±ãžã¥ãŒã«ã§å®æå®è¡ããªãããéžã¹ãããæ¬¡ã«ããžã§ããã§ãå®è¡ããäœæ¥ã®ãŸãšãŸãããããŠãžã§ãã®äžã«ãã¹ããããããã£ãŠãå ·äœçãªã³ãã³ãã1ã€ãã€æžããŠãããã ãã
ããªã¬ãŒã«ã¹ã±ãžã¥ãŒã«ããããã ãïŒæ¯æ¥æ±ºãŸã£ãæéã«ãã¹ããèµ°ãããããã§ããã®ïŒ
ãããããcron圢åŒã§æå®ã§ããããããšãã°æ¯æ¥æ9æã«äŸåããã±ãŒãžã®è匱æ§ãã§ãã¯ãèªåã§èµ°ããããã¿ãããªäœ¿ãæ¹ãã§ããããä»ã«ãç¹å®ã®ãã©ã³ããã¿ã°ãžã®pushã ããããªã¬ãŒã«ããããæåå®è¡ã®workflow_dispatchã£ãŠããããªã¬ãŒããããã
ãžã§ããšã¹ãããã®é¢ä¿ããŸã ã¡ãã£ãšåãããªãããªïŒ
ããšãã°ãã¹ããžã§ããšãããã€ãžã§ããåãããšããããããã¹ããžã§ãã®äžã«ã¯ãã³ãŒãããã§ãã¯ã¢ãŠãããããäŸåããã±ãŒãžãã€ã³ã¹ããŒã«ãããããã¹ããå®è¡ããããšãã3ã€ã®ã¹ããããããããããã€ãžã§ãã«ã¯ããã«ããããããµãŒããŒã«ã¢ããããŒãããããšããã¹ããããããããžã§ãå士ã¯äžŠåã§åããããããã¹ããéã£ãŠãããããã€ãããã¿ããã«é åºãæå®ããããã§ãããã ãã
å šéšèªåã§æžããªãããããªãã®ïŒå€§å€ããâŠ
ããã§äŸ¿å©ãªã®ãMarketplaceã ãïŒãã䜿ãåŠçã¯ãã¢ã¯ã·ã§ã³ããšããŠã³ãã¥ããã£ãå ¬éããŠããŠãããšãã°Node.jsã®ã»ããã¢ãããAWSãžã®ãããã€ãSlackãžã®éç¥ãªããã¯å ¬åŒããµãŒãããŒãã£ã®ã¢ã¯ã·ã§ã³ã1è¡æžãã ãã§äœ¿ãããã ãã¯ãŒã¯ãããŒã®ã¹ãããã§usesããŒã¯ãŒãã䜿ã£ãŠæå®ããã ãã ãã
APIããŒãšããã¹ã¯ãŒãã¯ã©ããã£ãŠç®¡çããã®ïŒã¯ãŒã¯ãããŒã«çŽæ¥æžãããå±ãªãããïŒ
ãã質åã ãïŒGitHubã«ã¯Secretsãšããæ©èœããã£ãŠããªããžããªã®èšå®ç»é¢ããæå·åãããç¶æ ã§ç»é²ã§ããããã¯ãŒã¯ãããŒã®äžã§ã¯secretsãšããç¹å¥ãªå€æ°ã§ã¢ã¯ã»ã¹ãããã ããã°ã«ã衚瀺ãããªããããã©ãŒã¯ãããªããžããªãããèŠããªãããã«èšèšãããŠããããå®å¿ã ããæ¬çªã®ãããã€ããŒãAPI ããŒã¯ã³ã¯å¿ ãSecretsã«å ¥ããããã
Node.js 18ãš20ã®äž¡æ¹ã§ãã¹ãããããšããšãã¯ã©ãããã®ïŒ
ããã¯ããããªã¯ã¹ãã«ããã®åºçªã ããstrategyã®matrixã§ãNode.jsã®ããŒãžã§ã³ãšãOSã®çš®é¡ãé åã§æå®ãããšãå šçµã¿åããã§èªåçã«ãžã§ãã䞊åå®è¡ããããã ããããšãã°Node.js 18ãš20ãUbuntu ãšWindowsã®çµã¿åãããªã4ã€ã®ãžã§ããåæã«èµ°ããã¯ãã¹ãã©ãããã©ãŒã ã®ã©ã€ãã©ãªéçºã§ã¯å¿ é ã®ãã¯ããã¯ã ãã
æ¯åããã±ãŒãžã€ã³ã¹ããŒã«ãããšæéããããããã ãã©ãäœã察çã¯ããã®ïŒ
ãã£ãã·ã¥ã掻çšãããšåçã«éããªãããactions/cacheãšããã¢ã¯ã·ã§ã³ã䜿ãã°ãnode_modulesãåçš®ããã±ãŒãžãããŒãžã£ã®ãã£ãã·ã¥ãä¿åããŠæ¬¡å以éã®ã¯ãŒã¯ãããŒã§åå©çšã§ãããã ãnpm ciã§æ¯å3åããã£ãŠããã®ããã£ãã·ã¥ãããã§10ç§ã«ãªãããªããŠããšãçãããªããã2026幎çŸåšã§ã¯actions/setup-nodeãªã©ã®ã»ããã¢ããç³»ã¢ã¯ã·ã§ã³ã«ãã£ãã·ã¥æ©èœãçµã¿èŸŒãŸããŠãããããããã«ç°¡åã«ãªã£ãŠãããã
å®éã«å§ãããšããããæåã«äœãã¯ãŒã¯ãããŒã¯ã©ããªãã®ããããããªã®ïŒ
ãŸãã¯pushãšãã«ãªã¯ãšã¹ããããªã¬ãŒã«ãããã¹ãèªåå®è¡ã¯ãŒã¯ãããŒãããããã ããã³ãŒãã®ãã§ãã¯ã¢ãŠããNode.jsã®ã»ããã¢ãããäŸåããã±ãŒãžã®ã€ã³ã¹ããŒã«ããã¹ãå®è¡ããšãã4ã¹ãããã ãã§ååå®çšçãªCIãçµãããã ãæ £ããŠããããªã³ã¿ãŒããã©ãŒããã¿ãŒã®ãã§ãã¯ãmainãã©ã³ããžã®ããŒãžæã«èªåãããã€ããšãã£ãå ·åã«ã¹ãããã远å ããŠããã°ããããå°ããå§ããŠè²ãŠãŠããã®ãã³ãã ãã