ð GitHub Actionsã®ã¯ãŒã¯ãããŒãããã€ãåããïŒã€ãã³ãããªã¬ãŒåŸ¹åºè§£èª¬ïŒ
GitHub Actionsã«ã€ããŠä»åã¯å¿åé²ãå ŒããŠèšè¿°ããŠãããããšæããŸã
GitHub Actionsã䜿ãã°ãã³ãŒãã®ãã¹ãããããã€ãªã©ãããããªäœæ¥ãèªååã§ããŸããã§ããããã€ããã®äœæ¥ãèªåã§åããã®ãããããèå¿ããšæãããŸãã
ãã®èšäºã§ã¯ãGitHub Actionsã®ã¯ãŒã¯ãããŒãåãããã€ãã³ãããªã¬ãŒãã«ã€ããŠãæžããŠãããŸãã
æ³å®èªäºæéïŒ5åïœ10åçšåºŠ
ð¡ GitHub Actionsã®ã¯ãŒã¯ãããŒã£ãŠäœïŒ
ãŸããGitHub Actionsã®ãã¯ãŒã¯ãããŒãã£ãŠäœã ã£ãïŒãšããæ¹ããããããããŸãããã
ç°¡åã«èšããšãã¯ãŒã¯ãããŒã¯ãèªåã§å®è¡ãããäœæ¥ã®èšèšå³ãã§ãã
äŸãã°ããæ°ããã³ãŒããGitHubã«ããã·ã¥ããããèªåã§ãã¹ããå®è¡ããŠãåé¡ãªããã°ãŠã§ããµã€ãã«å ¬éããããšããäžé£ã®äœæ¥ããã¯ãŒã¯ãããŒãšããŠGitHubã«æããŠãããã€ã¡ãŒãžã§ãã
ãã®ã¯ãŒã¯ãããŒãããã€ãå®è¡ããããæ±ºããã®ããä»å䞻圹ã®ãã€ãã³ãããªã¬ãŒããªãã§ã
ð ã€ãã³ãããªã¬ãŒã£ãŠã©ããªãã®ïŒ
ã€ãã³ãããªã¬ãŒãšã¯ããã®åã®éããããç¹å®ã®ã€ãã³ããçºçãããšãã«ã¯ãŒã¯ãããŒãèµ·åãããä»çµã¿ãã®ããšã§ãããŸãã§ããã³ãã³ïŒãšãã£ã€ã ã鳎ã£ãããçé¢ã®ãã¢ãèªåã§éããã¿ãããªæãã§ãããðª
GitHub Actionsã§ã¯ãããããã®çš®é¡ã®ãã€ãã³ãããçšæãããŠããŸãã代衚çãªãã®ãããã¡ãã£ãšããããªãã®ãŸã§ãèŠãŠãããŸãããïŒ
1. ããããå®çªïŒããªã€ãã³ããã¡ ð
GitHub Actionsã䜿ãäžã§ãç¹ã«ãã䜿ãã€ãã³ããããã€ãã玹ä»ããŸãã
push
ïŒã³ãŒããããã·ã¥ãããå³å®è¡ïŒ
a. on: push # â ãã®ã¯ãŒã¯ãããŒããpushãã€ãã³ãã§åãããã«èšå®
jobs: # â¡ å®è¡ãããžã§ãïŒäœæ¥ïŒãå®çŸ©
build: # ⢠ãbuildããšããååã®ãžã§ã
runs-on: ubuntu-latest # ⣠ãã®ãžã§ãããUbuntuã®ææ°çãã®ä»®æ³ç°å¢ã§å®è¡
steps: # †ãžã§ãã®äžã§å®è¡ããã¹ãããïŒæé ïŒãå®çŸ©
- uses: actions/checkout@v4 # ⥠ãªããžããªã®ã³ãŒããä»®æ³ç°å¢ã«ãã§ãã¯ã¢ãŠãïŒã³ããŒïŒããã¢ã¯ã·ã§ã³
- name: ã³ãŒãã®ãã«ã # ⊠ã¹ãããã®åå
run: echo "ã³ãŒãããã«ãããŠããŸã..." # â§ å®è¡ããã³ãã³ãïŒããã§ã¯ã¡ãã»ãŒãžã衚瀺ããã ãïŒ
ããã¯æãåºæ¬çãªããªã¬ãŒã§ããçãããããŒã«ã«ã§æžããã³ãŒããGitHubã«git push
ãããšãã«ããã®ã¯ãŒã¯ãããŒãèªåã§åãåºããŸãããæ°ããã³ãŒããæ¥ããïŒãããäœæ¥éå§ïŒããšããæãã§ãããð
pull_request
ïŒå€æŽãææ¡ããããã§ãã¯ïŒ
b. on: pull_request # â ãã®ã¯ãŒã¯ãããŒããpull_requestãã€ãã³ãã§åãããã«èšå®
jobs: # â¡ å®è¡ãããžã§ããå®çŸ©
test: # ⢠ãtestããšããååã®ãžã§ã
runs-on: ubuntu-latest # ⣠ãã®ãžã§ãããUbuntuã®ææ°çãã®ä»®æ³ç°å¢ã§å®è¡
steps: # †ãžã§ãã®äžã§å®è¡ããã¹ããããå®çŸ©
- uses: actions/checkout@v4 # ⥠ãªããžããªã®ã³ãŒããä»®æ³ç°å¢ã«ãã§ãã¯ã¢ãŠãããã¢ã¯ã·ã§ã³
- name: ãã¹ãå®è¡ # ⊠ã¹ãããã®åå
run: echo "ãã«ãªã¯ãšã¹ãã®å€æŽããã¹ãããŠããŸã..." # â§ å®è¡ããã³ãã³ã
誰ãããªããžããªã«æ°ããæ©èœã远å ãããããã°ãä¿®æ£ãããããŠããã®å€æŽãã¡ã€ã³ã®ã³ãŒãã«åã蟌ãã§ã»ããïŒããšææ¡ããã®ãããã«ãªã¯ãšã¹ãïŒPull Requestãç¥ããŠPRïŒãã§ãããã®ã€ãã³ããèšå®ãããšãPRãäœæãããããæŽæ°ãããããããã³ã«ãäŸãã°èªåãã¹ããèµ°ãããŠãå質ãä¿ã€ããšãã§ããŸããããŒã éçºã§ã¯å¿ é ã®ã€ãã³ãã§ããïŒð€
schedule
ïŒå®æçã«èªåå®è¡ïŒ
c. on: # â ãã®ã¯ãŒã¯ãããŒãç¹å®ã®ã€ãã³ãã§åãã
schedule: # â¡ ãscheduleãïŒã¹ã±ãžã¥ãŒã«ïŒã€ãã³ããèšå®
- cron: '0 0 * * *' # ⢠cronåŒã§å®è¡ééãæå®ãããã§ã¯ãæ¯æ¥0æ0å (UTC)ãã«å®è¡
jobs: # ⣠å®è¡ãããžã§ããå®çŸ©
cleanup: # †ãcleanupããšããååã®ãžã§ã
runs-on: ubuntu-latest # ⥠ãã®ãžã§ãããUbuntuã®ææ°çãã®ä»®æ³ç°å¢ã§å®è¡
steps: # ⊠ãžã§ãã®äžã§å®è¡ããã¹ããããå®çŸ©
- name: 宿çãªã¯ãªãŒã³ã¢ãã # â§ ã¹ãããã®åå
run: echo "äžèŠãªãã¡ã€ã«ãã¯ãªãŒã³ã¢ããããŠããŸã..." # âš å®è¡ããã³ãã³ã
ãæ¯é±ææã®æã«ã¬ããŒããèªåçæãããããæ¯æ¥æ·±å€ã«ããŒã¿ããŒã¹ã®ããã¯ã¢ãããåãããããªããŠæã«äŸ¿å©ãªã®ãschedule
ã€ãã³ãã§ããcronåŒãšãããæéæå®ã®ç¹æ®ãªæžãæ¹ã§ã奜ããªã¿ã€ãã³ã°ã§ã¯ãŒã¯ãããŒãåãããŸããæéãæ¥ããèªåã§åãç®èŠãŸãæèšã¿ãããªãã®ã§ããâ°ã
2. ãæåã§åããã䟿å©ãªã€ãã³ã ð
éçºäžã«ããããä»ãããã®ã¯ãŒã¯ãããŒãåããããïŒããšããå Žé¢ãåºãŠããŸãããããããªæã«åœ¹ç«ã€ã®ãæåããªã¬ãŒã§ãã
workflow_dispatch
ïŒããããšæåã§å®è¡ïŒ
on: workflow_dispatch # â ãã®ã¯ãŒã¯ãããŒããworkflow_dispatchãïŒæåå®è¡ïŒã€ãã³ãã§åããããã«èšå®
jobs: # â¡ å®è¡ãããžã§ããå®çŸ©
deploy: # ⢠ãdeployããšããååã®ãžã§ã
runs-on: ubuntu-latest # ⣠ãã®ãžã§ãããUbuntuã®ææ°çãã®ä»®æ³ç°å¢ã§å®è¡
steps: # †ãžã§ãã®äžã§å®è¡ããã¹ããããå®çŸ©
- name: æåããã〠# ⥠ã¹ãããã®åå
run: echo "æåã§ãããã€ãå®è¡ããŠããŸã..." # ⊠å®è¡ããã³ãã³ã
ããã¯ãGitHubã®ãªããžããªã®Actionsã¿ãããããã¿ã³äžã€ã§ã¯ãŒã¯ãããŒãæåã§å®è¡ã§ããã€ãã³ãã§ãããã¹ãç°å¢ãžã®ãããã€ãªã©ããå¿ èŠãªæã«ã ãåãããããã¯ãŒã¯ãããŒã«ãŽã£ããã§ãããŸãã§ããªã¢ã³ã³ã§ãã¬ãã®é»æºãå ¥ããããã«ãæè»œã«ã¯ãŒã¯ãããŒãèµ·åã§ããŸããïŒð®
3. ããããªæã«ãåãïŒãç¥ã£ãŠãããšäŸ¿å©ãªã€ãã³ããã¡ ð
äžèšä»¥å€ã«ããGitHub Actionsã«ã¯æ§ã ãªã€ãã³ããçšæãããŠããŸããããã€ãäŸãèŠãŠã¿ãŸãããã
-
create
/delete
: æ°ãããã©ã³ããã¿ã°ãäœæ/åé€ããããšãã -
issues
/issue_comment
: GitHubã®IssueïŒèª²é¡ç®¡çïŒãäœæã»æŽæ°ãããããã³ã¡ã³ããä»ããããããšãã -
release
: æ°ãããªãªãŒã¹ãå ¬éããããšãã -
discussion
/discussion_comment
: ãã£ã¹ã«ãã·ã§ã³ããã®ã³ã¡ã³ããäœæã»æŽæ°ããããšãã -
repository_dispatch
: GitHub APIã䜿ã£ãŠãå€éšã®ã·ã¹ãã ããã¯ãŒã¯ãããŒãããªã¬ãŒããããšãã«äœ¿ããŸããã¡ãã£ãšäžçŽè åãã§ããïŒ -
workflow_call
: å¥ã®ã¯ãŒã¯ãããŒããããã®ã¯ãŒã¯ãããŒãåŒã³åºããããšãã«äœ¿ããŸããã¯ãŒã¯ãããŒãéšååããŠåå©çšãããå Žåã«äŸ¿å©ã§ãã
ããããããªæã«ãåãããã®ïŒïŒãã£ãŠãé©ããŸãããïŒð¡
GitHub Actionsã¯ãGitHubäžã§ã®ã»ãšãã©ã®ã¢ã¯ã·ã§ã³ãããªã¬ãŒãšããŠèšå®ã§ããã®ã§ãçããã®ã¢ã€ãã¢æ¬¡ç¬¬ã§æ§ã
ãªèªååãå®çŸã§ãããã§ãïŒ
types
ããŒã¯ãŒã
ðš ã€ãã³ãã®ãçš®é¡ããçµã蟌ãïŒãã«ãªã¯ãšã¹ãã®äŸã§èããŠã¿ãŸããããpull_request
ã€ãã³ãã¯ãPRãäœæãããããæŽæ°ãããããéããããããããããªã¢ã¯ãã£ããã£ã§åãã¡ãããŸãããããPRããªãŒãã³ããããšãã ãåããããïŒããšããå Žåã¯ã©ãããã°ããã§ããããïŒ
ãããªæã«äœ¿ãã®ãtypes
ããŒã¯ãŒãã§ãã
on: # â ãã®ã¯ãŒã¯ãããŒãç¹å®ã®ã€ãã³ãã§åãã
pull_request: # â¡ ãpull_requestãã€ãã³ããèšå®
types: [opened, reopened] # ⢠pull_requestã€ãã³ãã®äžã§ãããPRããªãŒãã³ãããæããšãåãªãŒãã³ãããæãã«çµã£ãŠå®è¡
jobs: # ⣠å®è¡ãããžã§ããå®çŸ©
lint: # †ãlintããšããååã®ãžã§ã
runs-on: ubuntu-latest # ⥠ãã®ãžã§ãããUbuntuã®ææ°çãã®ä»®æ³ç°å¢ã§å®è¡
steps: # ⊠ãžã§ãã®äžã§å®è¡ããã¹ããããå®çŸ©
- name: ã³ãŒãã®éçè§£æ # â§ ã¹ãããã®åå
run: echo "æ°èŠPRäœææã®ã¿ã³ãŒãã®éçè§£æãå®è¡ããŸã..." # âš å®è¡ããã³ãã³ã
ãã®ããã«types: []
ã®äžã«ãç¹å®ã®ã€ãã³ãã®çš®é¡ïŒã¢ã¯ãã£ããã£ïŒãæå®ããããšã§ãã¯ãŒã¯ãããŒãåãã¿ã€ãã³ã°ã现ããã³ã³ãããŒã«ã§ããŸããããã§ãå¿
èŠãªæã«ã ããåãããè³¢ãã¯ãŒã¯ãããŒãäœããŸããïŒð€
ð ã¯ãŒã¯ãããŒã®èšå®ã¯ã©ãã«æžãã®ïŒ
ãããã®ã€ãã³ãããªã¬ãŒã¯ãçããã®GitHubãªããžããªã®.github/workflows
ãã£ã¬ã¯ããªã®äžã«ã.yml
ãŸãã¯.yaml
ãšããæ¡åŒµåã®ãã¡ã€ã«ãšããŠèšè¿°ããŸãã
äŸãã°ãhello-world.yml
ãšãããã¡ã€ã«ãäœã£ãŠããã®äžã«å
ã»ã©ã®ãããªå
å®¹ãæžããŠGitHubã«ããã·ã¥ããã ããããã ãã§ãçããã®ã¯ãŒã¯ãããŒãGitHubäžã§ã¹ã¿ã³ãã€ç¶æ
ã«ãªããŸããïŒ
ð ãŸãšãïŒGitHub Actionsã¯ãã€ãã³ããã§åãïŒ
ãã®èšäºã§ã¯ãGitHub Actionsã®ã¯ãŒã¯ãããŒãåãããã€ãã³ãããªã¬ãŒãã«ã€ããŠè§£èª¬ããŠããŸããã
- GitHub Actionsã¯ãã³ãŒãã®ããã·ã¥ããã«ãªã¯ãšã¹ãäœæãªã©ãæ§ã ãªãã€ãã³ããããã£ããã«èªåã§åãïŒ
-
push
ãpull_request
ãschedule
ãç¹ã«ãã䜿ãå®çªã€ãã³ãã -
workflow_dispatch
ã䜿ãã°ãæåã§ã¯ãŒã¯ãããŒãå®è¡ã§ããã -
types
ããŒã¯ãŒãã§ãã€ãã³ãã®ç¹å®ã®ã¢ã¯ãã£ããã£ã«çµã£ãŠã¯ãŒã¯ãããŒãåãããã - èšå®ãã¡ã€ã«ã¯
.github/workflows
ãã£ã¬ã¯ããªã«.yml
ãã¡ã€ã«ãšããŠçœ®ãã
GitHub Actionsã®ã€ãã³ãããªã¬ãŒãçè§£ããããšã¯ãèªååã®ç¬¬äžæ©ã§ãããã²ããã®ç¥èã䜿ã£ãŠãçããã®éçºãããã¹ã ãŒãºã«ããããŠãã£ãšæ¥œããããŠãããŸãããïŒ
次ã®ã¹ããããžïŒ
ããããå®éã«æãåãããŠã¿ããïŒããšæã£ãŠãããæ¹ã¯ããã²GitHubã®å ¬åŒããã¥ã¡ã³ããèŠãŠãä»ã®ã€ãã³ãã詊ããŠã¿ãŠãã ãããã
ãã®èšäºããçããã®GitHub Actionsã©ã€ãã®å©ãã«ãªãã°å¬ããã§ãïŒ
ãããããäžç·ã«ãããã°ã©ãã³ã°ã®äžçãæ¥œããæ¢æ±ããŠãããŸãããïŒðâš
Discussion