noteç_AIã§äžé§ãå±¥ããŠãªãããããããªã²ãŒã ããããŒã«ãäœãã®ã§ã¯ãªãããŸãã¯ååŠç¿ãå ŒããŠèº«ã®äžã«åã£ãéçºããå§ãã話_3
ååâãŸã§ã¯ãZennåãã®èšäºèªåæŽåœ¢ããŒã«ãšããŠã
H2ã®æŽåœ¢
+
é£ç¶ãã空è¡ã®å€æ
+
åŒçšãããã¯ã®å€æ
+
å®Markdownã䜿ã£ãpytest
ãšãããšãããŸã§äœã£ãã
ä»åã¯ããŒã«ãã®ãã®ãžæ©èœã远å ããã®ã§ã¯ãªãã
GitHubãžpushãã
â
pytestãèªåã§å®è¡ããã
â
çµæãGitHubäžã§åãã
ãšããç¶æ ãäœãããšã«ããã
ç®æšã¯ããªãå°ããã
GitHubã«ã³ãŒããéã£ãã ãã§ãpytestãåæã«ç·ã«ãªããšãããŸã§äœãããïŒ
ã®ããããŸã§ã
å®éã«äœã£ããã®ã¯ããã«çœ®ããŠããã
1. ä»å圢ã«ãããã£ããã®
äœãããã£ãã®ã¯ãGitHub Actionsã䜿ã£ãæå°éã®CIã
ããããããšèªäœã¯åçŽã§ã
push
â
GitHub Actionsèµ·å
â
Pythonãçšæ
â
å¿
èŠãªããã±ãŒãžãå
¥ãã
â
pytest
ã ãã
Dockerããããã€ãããããããã§ã¯ãªãã
è€éãªWorkflowãçµã¿ããããã§ããªãã
ãŸãã¯ã
æå ã§æ¯åpytestãæããªããŠããpushããã³ãŒãã®ãã¹ãçµæãGitHubäžã§åãã
ç¶æ ãäœãããšã«ããã
2. ãŸãã¯ãèŠããŠããç¯å²ã§WorkflowãæžããŠã¿ã
æåã¯é圢ãäžåºŠèŠãããšã
ã§ããã ãæãåºããªããæžããŠã¿ãã
æåã«æžãããã®ã¯ãããªæãã ã£ãã
name: run-pytest
on: push
jobs:
uses: ubuntu-latest
steps:
name: Checkout repo
uses: actions/checkout@7
steps:
name: Set up python
uses: actions/python-setup@7
steps:
name: install requirements
run: pip install requirments.txt
steps:
name: run pytest
run: python3 -m pytest
...åœç¶ãè²ã ããããã
jobsã®äžã«ã¯jobãå®çŸ©ããå¿ èŠããããã
runs-on:
ãå¿ èŠã
stepsããäžã€ãã€äœåºŠãæžããã®ã§ã¯ãªãã
Actionåãã
actions/python-setup
ã§ã¯ãªãã
actions/setup-python
ã ã£ãã
æ£è§£ïŒãµã³ãã«ïŒãèŠãªããç
§ããåãããŠã
å°ããã€æ§é ãçŽããŠãã£ãã
3. ubuntu 26ãšæžããããæ°žé ã«åŸ ã¡å§ãã
éäžã§ããããªWorkflowã«ãªã£ãã
jobs:
test:
runs-on: ubuntu 26
ãããpushããŠã¿ããšã
Requested labels: ubuntu 26
Waiting for a runner to pick up this job...
ãšããç¶æ ããé²ãŸãªããªã£ãã
ãã°ããåŸ
ã£ãŠã¿ããå§ãŸãæ§åããªãã®ã§ã
äžåºŠæåã§äžæã
æçµçã«ã¯ã
runs-on: ubuntu-latest
ãžå€æŽããã
ããã§ã
runs-on
â Workflowãå®è¡ããç°å¢ãæå®ãããã®
ãšããæå³ãå°ãå ·äœçã«ãªã£ãã
é©åœãªUbuntuã®ããŒãžã§ã³åãæžãã°ããããã§ã¯ãªãã
GitHub ActionsåŽã䜿ããrunnerãæå®ããå¿ èŠãããã
4. 次ã¯pip installã§äºå転ãã
runnerãåãããã«ãªã£ãããšã
ä»åºŠã¯äŸåããã±ãŒãžã®ã€ã³ã¹ããŒã«ã§å€±æããã
ãŸãåçŽã«ã
requirments.txt
ãšã¹ãã«ãééããã
ãããŠãããçŽããããšãã
pip install requirements.txt
ãšããŠãããããåã³å€±æã
ãã°ãèŠããšã
Could not find a version that satisfies the requirement requirements.txt
ãšåºãŠããã
ããã«ã
You are attempting to install a package literally named "requirements.txt"
ãšãããã³ãã衚瀺ãããã
ã€ãŸããã®æžãæ¹ã§ã¯ã
requirements.txtãšããååã®ããã±ãŒãžãã€ã³ã¹ããŒã«ãã
ãšããæå³ã«ãªã£ãŠããŸã£ãŠããã
å¿ èŠã ã£ãã®ã¯ã
pip install -r requirements.txt
ã ã£ãã
æçµçã«ã¯ã䜿çšããPythonãæç¢ºã«ãªãããã«ã
python -m pip install -r requirements.txt
ãžå€æŽããã
5. æå°ã®Workflowãéã£ã
æçµçã«ãWorkflowã¯ãããªã£ãã
name: run-pytest
on: push
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v7
- name: Set up python
uses: actions/setup-python@v7
with:
python-version: "3.14"
- name: Install requirements
run: python -m pip install -r requirements.txt
- name: Run pytest
run: python3 -m pytest -v
ãã£ãŠããããšã䞊ã¹ããšã
ãªããžããªã®äžèº«ãååŸ
â
Python 3.14ãçšæ
â
requirements.txtããäŸåé¢ä¿ãå
¥ãã
â
pytestãå®è¡
ã ãã
ãããpushãããšããã
äžéãã®stepãéãã
pytestãç·ã«ãªã£ãã
ããã§æåã«çœ®ããŠããã
GitHubã«ã³ãŒããéã£ãã ãã§ãpytestãåæã«ç·ã«ãªã
ãšããç¶æ ãŸã§ã¯äœããã
6. ãã£ãããªã®ã§ããããšpytestãå£ããŠã¿ã
ãã ã
ç·ã«ãªã£ã
ã ãã§ã¯ã
GitHub Actionsããã¹ã倱æãã©ãæ±ãã®ãããŸã èŠãŠããªãã
ããã§äžã€ã
å¿
ã倱æãããã¹ãã远å ããŠã¿ãã
å ã®åŠçã§ã¯ã
formatted_text = ["foo", "bar", "hoge"]
ãä¿åãããšã
ãã¡ã€ã«ããèªã¿èŸŒãã å€ã¯ã
"foo\nbar\nhoge"
ãšããæååã«ãªãã
ããããããšã
assert target_path.read_text(encoding="utf-8") == formatted_text
ãšããŠã
æååãšãªã¹ããæ¯èŒãããã¹ãã远å ããã
åœç¶å€±æããã
pushãããšãGitHub ActionsåŽã§ãã
9 passed
1 failed
ãšãªãã
Error: Process completed with exit code 1.
ã§Run pytestãèµ€ããªã£ãã
ãã®ãã¹ããã³ã¡ã³ãã¢ãŠãããŠããäžåºŠpushãããšã
ä»åºŠã¯åã³ç·ã«ãªã£ãã
ð¢
â
ãããšå£ã
â
ðŽ
â
å
ãžæ»ã
â
ð¢
ãŸã§äžéã確èªã§ããã
7. GitHub Actionsãpytestãçè§£ããŠããããã§ã¯ãªãã£ã
ä»åã®æåãæŽçãããšã
GitHub Actionsãã
pytestã®ãã¹ãã1å倱æãã
ãšããå 容ãã®ãã®ãçè§£ããŠããããã§ã¯ãªãã
Workflowããã
python3 -m pytest -v
ãšããã³ãã³ããå®è¡ããã
pytestããã¹ã倱æãæ€ç¥ããŠã
exit code 1
ã§çµäºããã
ãããåãåã£ãGitHub Actionsãã
ãã®stepã¯å€±æ
â
jobã倱æ
â
èµ€
ãšå€å®ããã
éã«pytestããã¹ãŠéãã°ã
exit code 0
â
stepæå
â
jobæå
â
ç·
ã«ãªãã
æåã¯ã
GitHub Actions
â pytestãªã©ã®äœããã®ãã¹ããèªåã§ãã£ãŠããããã®
ãããã®èªèã ã£ãã
ä»åå®éã«åãããŠã¿ãŠããã£ãã®ã¯ã
ãæ°ãããŸã£ãããªç°å¢ãç«ãŠãŠã
ããã«äœã£ããã®ãé
眮ããŠã
ãã¹ãããã
ã€ãŸã
GitHub Actions
â å¥ã®ç°å¢ãçšæããŠ
â æå®ããã³ãã³ããé çªã«å®è¡ããŠ
â ãã®æåã»å€±æã管çãããã®
ãšæããæ¹ãåããããããã ã£ãã
8. ä»åã®å€±æã¯ãå šéšéãå Žæã§èµ·ããŠãã
ä»åã ãã§ããããã€ãéãçš®é¡ã®å€±æããã£ãã
ubuntu 26
â
å®è¡ããrunnerãæ±ºãŸããåŸ
æ©
pip install requirements.txt
â
äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«ã§å€±æ
pytestã«å€±æãããã¹ãã远å
â
pytestãexit code 1ãè¿ããŠå€±æ
å šéšç»é¢äžã§ã¯æçµçã«ãèµ€ãã«ãªãã
ãã ã
ã©ããŸã§æåããŠãã©ã®stepã§æ¢ãŸã£ãã®ã
ãèŠããšåå ã¯å šç¶éãã
ä»åã
Checkout repo â
Set up python â
Install requirements â
Run pytest â
ãšããç¶æ ãå®éã«èŠãããããšã§ã
ãCIã倱æããã
ã ãã§ã¯ãªãã
pytestãå®è¡ãããšãããŸã§ã¯æ£åžžã«å°éããŠããã®pytestã倱æãã
ãšåãåããããããšãåãã£ãã
9. 仿¥ã§ãããã®
ä»åã®çµäºæç¹ã§ã¯ã
GitHub Actionsçšã®Workflow
pushããã£ããã«ããèªåå®è¡
Ubuntu runneräžã§ã®å®è¡
Python 3.14ã®ã»ããã¢ãã
requirements.txtããã®äŸåé¢ä¿ã€ã³ã¹ããŒã«
pytestã®èªåå®è¡
pytestæåæã®ç·
pytest倱ææã®èµ€
Actionsäžã§ã®pytest倱æãã°ç¢ºèª
ãŸã§ãå®éã«ç¢ºèªã§ããã
èšäºæŽåœ¢ããŒã«ãã®ãã®ã®æ©èœã¯ã
ä»åã¯äžã€ãå¢ããŠããªãã
ãã ã
èªåã®PCã§pytestãå®è¡ãã
ã ãã ã£ãç¶æ ããã
ã³ãŒããGitHubãžéã
â
å¥ã®ç°å¢ã§ãpytestãå®è¡ããã
â
å£ããŠããã°èµ€ã§åãã
ãšãããšãããŸã§ã¯é²ãã ã
10. çµããã«
ä»åããããã£ãã®ã¯ã
GitHub Actionsã詳ããå匷ããããšã§ã¯ãªãã£ãã
æåã«å¿ èŠã ã£ãã®ã¯ã
pushãããpytestãåã
ãšããäžçªå°ãããšããã
å®éã«ã¯ã
runnerã®æå®ãééãã
â
requirements.txtã®ã¹ãã«ãééãã
â
-rãä»ãå¿ãã
â
ããããç·ã«ãªã
â
ãããšpytestãå£ããŠèµ€ã«ãã
â
å
ãžæ»ããŠåã³ç·ã«ãã
ãšããæµãã«ãªã£ãã
æåããæ£ããWorkflowã貌ãä»ããŠçµããããã¯ã
ã©ãã§æ¢ãŸãã®ã
â
ãã°ã«ã¯äœãšåºãã®ã
â
çŽããšæ¬¡ã®stepãžé²ãã®ã
ãäžã€ãã€èŠãããã
ååãŸã§ã¯ã
ã³ãŒããæåŸ éãåãããpytestã§åºå®ãã
ãšãããŸã§ã ã£ãã
ä»åã¯ããããå°ãé²ãã§ã
ãã®pytestèªäœããèªåã®PC以å€ã§ãèªåçã«èµ°ããã
ãšãããŸã§æ¥ãã
ãŸã æå°æ§æã§ã¯ããã
ãã ããšããããä»ã¯ã
GitHubãžpushãããšãpytestãåæã«çµæãè¿ããŠãããã
ãŸãã¯ããã§ååãªæ°ãããŠããã