GitHub Actionså ¥é â ååã®èšç®ãã¹ããèªåã§ç¢ºãããã
ååèšç®ã®ãã¹ãããèªåã§ç¢ºèª
- 身è¿ãªäŸãã圹å²ãã€ãã
- 確èªã§ããçµæãšæç«æ¡ä»¶ãåºå¥ãã
- 次ã®åŠç¿ãå°å ¥å€æã«ã€ãªãã
æåã®ãŽãŒã«ïŒç·ã®ãã§ãã¯ã1ã€ä»ãã
GitHubã¢ã«ãŠã³ããGitã®åºæ¬æäœãNode.js 24ãå¿ èŠã§ããGitå ¥éãåèã«ãèªåã®ç·Žç¿çšãªããžããªãçšæããŠãã ãããããã§ã¯ææãµãŒãã¹ãžã®æ¥ç¶ããµã€ãã®å ¬éã¯ããŸãããGitHub Actionsã®å©çšæ¡ä»¶ã»å®è¡æ ã¯å¥çŽã«ãã£ãŠç°ãªããŸãã
ãŸãèªåã®PCã§èšç®ã確ããã
空ã®ç·Žç¿çšãã©ã«ããŒã«total.test.mjsãäœããŸããNode.jsã«å«ãŸãããã¹ãæ©èœãªã®ã§ãå€éšããã±ãŒãžã®ã€ã³ã¹ããŒã«ã¯äžèŠã§ãã
import test from 'node:test';
import assert from 'node:assert/strict';
function total(price, count) {
return price * count;
}
test('200åã2åè²·ããš400å', () => {
assert.equal(total(200, 2), 400);
});
ãã®ãã©ã«ããŒã§node --testãå®è¡ããŸãããã¹ãã1ä»¶æåãã倱æã0ä»¶ãªã次ãžé²ã¿ãŸããããç·Žç¿ãšããŠæåŸ
å€ã399ãžå€ãããšå€±æããã®ã§ããã°ãèªãã§ãã400ãžæ»ããŸããå
¥åãæ£ããããçšèŸŒããªã©ã¯å¥ã®ãã¹ããå¿
èŠã§ãã
GitHubåŽã«ãåãäœæ¥ãé Œã
.github/workflows/ci.ymlãäœããŸããæ¬¡ã®SHAã¯ç¢ºèªæç¹ã®checkout v7ãsetup-node v7ã®ãã®ã§ããæ°ããçãžæŽæ°ãããšãã¯ãæäŸå
ã®ãªããžããªãšå€æŽå
容ã確èªããŸãã
name: Learning test
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7
with:
node-version: '24'
package-manager-cache: false
- run: node --test
ãã¹ããšYAMLãèªåã®ãªããžããªãžã³ãããããmainãžpushããŸããå¥ã®æ¢å®ãã©ã³ãã䜿ãå Žåã¯ååãåãããŠãã ãããGitHubã®Actions â Learning test â å®è¡çµæã§ãã¹ãstepãéããæå1ä»¶ã確èªããŸããæåã®Run workflowã衚瀺ããã«ã¯ãworkflow_dispatchãæžãããã¡ã€ã«ãæ¢å®ãã©ã³ããžçœ®ãå¿
èŠããããŸãã
èµ€ããã§ãã¯ã®èª¿ã¹æ¹
| èŠããããš | æåã«ç¢ºèªããããš |
|---|---|
| å®è¡èªäœããªã | YAMLã®å Žæããã©ã³ãåãActionsã®èš±å¯èšå® |
| ãã¹ãã倱æ | æåŸ å€ãšå®éã®å€ã倱æãããã¹ãå |
| NodeãèŠã€ãããªã | setup-nodeã®stepãå ã«æåããã |
| æåå®è¡ã®ãã¿ã³ããªã | æ¢å®ãã©ã³ãã«workflow_dispatchãããã |
äŸåããã±ãŒãžã远å ããã¢ããªã§ã¯ãlockãã¡ã€ã«ãã³ããããããã¹ãåã«npm ciãªã©ã§æºåããŸããä»åã®äŸã«ã¯äŸåããªãã®ã§ããã®stepãå
¥ããŠããŸããããã£ãã·ã¥ã¯åååŸãæžãã工倫ã§ããããã¹ããçãä»çµã¿ãé«éåã®ä¿èšŒã§ã¯ãããŸããã
å ¬éåŠçãè¶³ãåã«
å ¬éã¯å¥ã®äœæ¥ã§ãããã¹ãæååŸã«ã ãå®è¡ããjobã®äŸåé¢ä¿ã察象ç°å¢ãæ¿èªã®æç¡ãå¿ èŠæå°éã®æš©éãæ±ºããŸããããSecretsã®ãã¹ã¯ã ãã§æ å ±æŒãããé²ããããã§ã¯ãããŸãããå€éšã®pull requestã®ã³ãŒãã«å ¬éæš©éãæž¡ãèšå®ã¯ç¹ã«æ³šæãå¿ èŠã§ãã
次ã¯Dockerå ¥éã§å®è¡ç°å¢ãããããæ¹æ³ãåŠã¹ãŸããæåã¯ãã¹ã1ä»¶ã®æåãšå€±æãèªããããšãåºçºç¹ã§ãã
åèè³æ
- GitHub Actionsã®éå§æé â workflowã»jobã»stepã®é¢ä¿
- å®è¡ã®ãã£ãã â æåå®è¡ãšæ¢å®ãã©ã³ã
- checkoutã®æäŸå â v7ãšè³æ Œæ å ±ã®æ±ã
- setup-nodeã®æäŸå â Nodeãšèªåãã£ãã·ã¥ã®èšå®
- Actionsã®å®å šãªå©çš â SHAåºå®ãšæš©éã»ä¿¡é Œã§ããªãå ¥å
- Node.jsãã¹ãã©ã³ã㌠â node:testãšå®è¡æ¹æ³