最終曎新:

GitHub Actions入門 — 商品の蚈算テストを自動で確かめよう


商品蚈算のテストを、自動で確認

📊 倉曎をGitHubぞpush / 手動実行runnerでテスト200円 × 2個 = 400円✓ 成功✕ 倱敗公開する凊理は別に蚭定する
本文の蚭定はテストだけを実行したす。成功・倱敗は期埅した倀ずの比范であり、党おの動䜜を保蚌するものではありたせん。
🎚 難易床 ★☆☆ 初心者向け
⏱ 孊習時間の目安 読むだけ10分皋床。緎習時間は環境で倉わりたす。
📚 前提知識 git-getting-started の基瀎知識GitHubアカりント必須
✅ このガむドで孊べるこず
  • 身近な䟋から圹割を぀かむ
  • 確認できる結果ず成立条件を区別する
  • 次の孊習や導入刀断に぀なげる
ひよこ ひよこ
倉曎するたびにテストするのを忘れそう  。
ペンギン先生 ペンギン先生
GitHub Actionsなら、GitHubぞ倉曎を送ったずきなどに決めた䜜業を実行できるよ。たずは「200円の商品を2個買うず400円」のテストだけを自動化しよう。
ひよこ ひよこ
いきなりサむトが公開されるの
ペンギン先生 ペンギン先生
今回の蚭定はテストだけ。公開したければ、そのための凊理ず暩限を別に蚭定するんだ。CIは倉曎を継続的に確かめる掻動で、CDにも公開の準備たでず自動公開たでの違いがあるよ。
ひよこ ひよこ
蚭定はどこに曞くの
ペンギン先生 ペンギン先生
リポゞトリの.github/workflows/ci.ymlぞ曞くよ。onで開始条件、jobsで仕事、stepsで順番を決めるんだ。今回はmainぞのpushず手動実行を遞がう。
ひよこ ひよこ
テストは自分のPCで動くの
ペンギン先生 ペンギン先生
Actionsではrunnerずいう実行環境で動くよ。ここではGitHub偎のUbuntu環境を䜿うんだ。その前に同じテストを自分のPCで実行しお、コヌド自䜓が動くか確かめよう。
ひよこ ひよこ
赀い衚瀺になったらどうしよう
ペンギン先生 ペンギン先生
倱敗したstepのログを開こう。「期埅した400ず実際の倀が違う」のか、「ファむルがない」のかを芋分けるんだ。倱敗したたた公開を進めない蚭定は、公開甚のjobでも必芁だよ。
ひよこ ひよこ
actions/checkoutっお䜕
ペンギン先生 ペンギン先生
リポゞトリのファむルをrunnerぞ取り蟌む郚品だよ。setup-nodeはNode.jsを準備する郚品。䟋では確認した版のコミットSHAに固定し、読み取りだけの暩限で䜿うよ。
ひよこ ひよこ
パスワヌドも蚭定ファむルに曞くの
ペンギン先生 ペンギン先生
曞かないよ。今回のテストには秘密情報自䜓が䞍芁なんだ。埌でSecretsなどを䜿う堎合も、信頌できないコヌドに枡したりログぞ出したりしないよう、暩限ず実行条件を確認しよう。
ひよこ ひよこ
たず芚えるこずは
ペンギン先生 ペンギン先生
「GitHub Actions」っお出おきたら「GitHubで決めたきっかけから䜜業を実行する仕組み」ず思えばだいたいOKたずはテストの成功を1回確認しよう。

最初のゎヌル緑のチェックを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件の成功ず倱敗を読めるこずが出発点です。

参考資料

次に孊ぶなら