GitHub Actions ワークフロージェネレーター

次へ

CI のない新しい GitHub リポジトリは、次のデプロイ失敗まで git push 一回分の距離しかありません。このジェネレーターは、Node、PHP、または Laravel 向けにスターターの .github/workflows/ci.yml を書き出し、チェックアウト、正しいランタイムアクション、依存関係のインストール、標準のテストコマンドを一通り配線します。緑/赤のドットを点灯させるのに必要なものがすべて揃います。

ワークフローを生成する方法

  1. 1

    スタックを選択します

    Node(`actions/setup-node`を使用)、PHP(`shivammathur/setup-php`を使用)、または Laravel(PHP + `php artisan test`を使用)。

  2. 2

    メインブランチを設定します

    `main`がデフォルトです。リポジトリでまだ`master`またはカスタム名を使用している場合は、これを上書きしてください。

  3. 3

    生成

    このツールは、該当ブランチに対して`push`および`pull_request`のトリガーを含むYAMLファイルを構築します。

  4. 4

    .github/workflows/にコミットします

    `.github/workflows/ci.yml`にファイルを作成し、「プッシュ」を実行すると、次のコミット時に「アクション」タブが点灯します。

ワークフローの様子

name: CI
on:
  push:
    branches: [main]
  pull_request:
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with:
          php-version: '8.4'
      - run: composer install --no-interaction
      - run: php artisan test

ジェネレーターが固定するアクション

アクション 目的
actions/checkout@v4 リポジトリをランナーにクローンする
actions/setup-node@v4 Node ツールチェーンをインストールする
shivammathur/setup-php@v2 拡張機能付きの PHP バージョンをインストールする

次に追加するとよいもの

  • テストステップの前に置く Lint ステップnpm run lint./vendor/bin/phpstan analyse)。
  • マトリックスビルドstrategy.matrix を使い、複数の Node/PHP バージョンで実行します。
  • カバレッジのアップロード:テストステップの後に codecov-action または coveralls-action を実行します。
  • シークレット:トークンを絶対にハードコードしないでください。secrets.XXX を使い、Settings → Actions で定義します。

よくある落とし穴

  • タグの取得忘れ:リリースロジックがタグを読み取る場合は、checkoutwith: { fetch-depth: 0 } を指定します。
  • latest の Docker イメージを使う:数ヶ月後も再現性を保つため、バージョンを固定してください。
  • プッシュのたびに 30 分かかるテストスイートを実行する:needs: で長いジョブを分割して並列化しましょう。

よくある質問

リポジトリのルートディレクトリ内の.github/workflows/ci.ymlにあります。GitHubはそのディレクトリ内にあるすべてのYAMLファイルを取得し、「アクション」タブでそれぞれを個別のワークフローとして表示します。

フォークからのプルリクエストではワークフローが実行されますが、GITHUB_TOKENは読み取り専用に設定されています。外部の貢献者は、明示的に同意しない限り、あなたの機密情報にアクセスできません。

setup-phpステップにstrategy.matrix.php: [8.2, 8.3, 8.4]ブロックを追加し、${{ matrix.php }}を参照します。ランナーは各バージョンに対して並列に1つのジョブを生成します。

いいえ。生成されたYAMLはページに表示されるだけで、どこにもアップロードも保存もされません。あとはご自身でコピーしてください。

関連ツール

このツールは他の言語でも利用できます