GitHub Actions チートシート - 標準的な構造と最も有用なアクションのリスト

共通の GitHub Actions とその構造について。

目次

GitHub Actions は、GitHub 内の自動化および CI/CD プラットフォームであり、プッシュ、プルリクエスト、スケジュールなどのイベントに基づいてコードのビルド、テスト、デプロイを行うために使用されます。

標準的な GitHub の他にも、セルフホスト型の Gitea サーバー で GitHub Actions を使用することができます。

github actions flow

アクションには公式、コミュニティ、サードパーティ製のツールが含まれており、ビルドやテストからデプロイ、リリース管理、QA、通知までの自動化をサポートしています。


このまとめでは、GitHub Actions の構造、簡単な説明、およびオープンソースおよび商用ワークフローで一般的に使用される最も一般的なアクションについて解説します。 これは、開発者ツール:モダンな開発ワークフローの完全ガイド の一部です。

基本的な構成構造

GitHub Actions のワークフローは、リポジトリ内の .github/workflows ディレクトリにある YAML ファイルで定義されます。

name: Workflow Name
on:
  push:
    branches: [ main ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      - name: Run tests
        run: npm test
  • on ブロックは、トリガーイベントを指定します。
  • job は、独自のランナー上で実行されます。
  • steps は、シェルコマンドを実行するか、再利用可能なアクションを呼び出します。

ワークフローのコアコンポーネント

コンポーネント 説明
Workflow イベントによってトリガーされる自動化プロセス (YAML)
Event ワークフローをトリガーするアクティビティ(push、pull_request など)
Job ランナー上で実行されるステップのシリーズ。シーケンシャルまたは並列で実行可能
Step ジョブ内の各コマンドまたはアクション
Runner ジョブが実行される VM またはコンテナ
Action タスクをカプセル化した再利用可能な拡張機能/アドオン

トリガーイベント

  • push
  • pull_request
  • schedule (cron 構文を使用)
  • workflow_dispatch (手動トリガー、入力パラメータを許可)
  • release, issue など

例:

on:
  push:
    branches: [ main ]
  workflow_dispatch:
    inputs:
      environment:
        description: 'Deployment Environment'
        required: true
        default: 'production'
        type: string

有用な組み込みアクション

アクション 目的 一般的なパラメータ
actions/checkout リポジトリのコードをチェックアウト ref, token, submodules, persist-credentials
actions/setup-node Node.js 環境を設定 node-version, cache, architecture, check-latest
actions/setup-python Python を設定 python-version, architecture
actions/cache 依存関係をキャッシュ path, key, restore-keys
docker/build-push-action Docker イメージのビルドとプッシュ context, file, platforms, tags, push, build-args
actions/upload-artifact ビルドアーティファクトをアップロード name, path, if-no-files-found
actions/download-artifact アーティファクトをダウンロード name, path
github/email-actions メール通知を送信 to, subject, content, attachments
peter-evans/create-pull-request ワークフロー経由で PR を作成 branch, title, body, labels, base
actions/github-script ワークフロー内で任意の JavaScript を実行 script, github-token

アクションパラメータ

任意のアクション呼び出し用の一般パラメータ:

- name: Some Action or Step
  uses: owner/repo@ref
  with:
    param1: value
    param2: value
  env:
    ENV_VAR: value
  if: ${{ condition }}
  run: command_to_run
  shell: bash|pwsh|python|sh
  continue-on-error: true|false
  • with: アクションに渡される引数(すべてのオプションについてはアクションのドキュメントを参照)
  • env: ステップ用の環境変数
  • if: 条件付き実行
  • run: シェルコマンド(アクションを使用しない場合)
  • shell: ステップを実行するためのシェル
  • continue-on-error: ステップが失敗しても続行する

カスタムアクション入力の定義

アクションメタデータ (action.yml) 内:

inputs:
  example-input:
    description: 'An example input'
    required: false
    default: 'default-value'

ワークフローで使用する場合:

- uses: my/action@v1
  with:
    example-input: 'custom-value'

アクションが実行されると、環境変数 INPUT_EXAMPLE_INPUT としてアクセスされます。

例:手動パラメータ付きのワークフロー

name: Deploy
on:
  workflow_dispatch:
    inputs:
      environment:
        description: 'Deployment Environment'
        required: true
        default: 'production'
        type: string
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Deploy to environment
        run: echo "Deploying to ${{ github.event.inputs.environment }}"

アクションマーケットプレイス

  • 数千の再利用可能なアクションが GitHub Marketplace に利用可能です。
  • カテゴリには、クラウドデプロイメント、通知ツール、テストフレームワーク、コード分析などが含まれます。
  • 探索:actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact など。

クイックヒント

  • ワークフローファイルを .github/workflows に配置します。
  • 手動およびパラメータ化された実行には、inputs と共に workflow_dispatch を使用します。
  • 依存関係のインストールを高速化するには cache アクションを使用します。
  • 複数の OS/ランタイムバージョンをテストするには、ジョブの matrix を使用します。
  • センシティブなデータにはシークレットを使用し、${{ secrets.SECRET_NAME }} として参照します。

このチートシートでは、自動化、CI/CD などにおける GitHub Actions の使用、構成、拡張の基本的な要素をカバーしています。詳細と最新情報については、常に公式の GitHub ドキュメントとアクションリポジトリを確認してください。

一般的な GitHub Actions

以下は、CI/CD、テスト、ビルド、デプロイ、およびワークフロータスクの自動化を支援する頻繁に使用される GitHub Actions の実践的なリストです:

コア公式アクション

アクション 目的 主要な例パラメータ
actions/checkout リポジトリのコードをチェックアウト ref, submodules
actions/setup-node Node.js 環境を設定 node-version, cache
actions/setup-python Python 環境を設定 python-version
actions/setup-java Java JDK を設定 distribution, java-version
actions/cache 依存関係とビルド出力をキャッシュ path, key, restore-keys
actions/upload-artifact ビルドアーティファクトをアップロード name, path
actions/download-artifact ワークフローからアーティファクトをダウンロード name, path
actions/github-script GitHub コンテキストと API を使用して JavaScript を実行 script
actions/create-release GitHub リリースを作成 tag_name, release_name
actions/upload-release-asset アセットをリリースにアップロード upload_url, asset_path
actions/labeler 問題/PR にラベルを自動的に適用 repo-token, configuration-path

人気のあるコミュニティおよびサードパーティ製アクション

アクション 目的
docker/build-push-action Docker イメージのビルドとプッシュ
actions/setup-go Go 環境を設定
super-linter/super-linter ユニバーサルな自動化コードリンティング
trufflesecurity/trufflehog シークレットと認証情報のスキャン
peaceiris/actions-gh-pages GitHub Pages に静的サイトをデプロイ
JamesIves/github-pages-deploy-action プロジェクトを GitHub Pages にデプロイ
peter-evans/create-pull-request プルリクエストを自動的に作成
softprops/action-gh-release GitHub リリースの作成とアップロード
ad-m/github-push-action 変更を GitHub リポジトリにプッシュ
actions/setup-dotnet .NET SDK を設定
azure/login Azure への認証
google-github-actions/auth Google Cloud への認証

テスト、QA、およびレポートアクション

アクション 目的
actions/setup-ruby Ruby 環境を設定
codecov/codecov-action Codecov へのコードカバレッジレポートをアップロード
coverallsapp/github-action Coveralls へのカバレッジ結果をアップロード
dorny/test-reporter テスト結果を GitHub チェックに添付
stefanzweifel/git-auto-commit-action ファイル変更の自動コミットとプッシュ

デプロイメントおよび通知アクション

アクション 目的
appleboy/scp-action SCP を使用してファイルをアップロード
SamKirkland/FTP-Deploy-Action FTP/FTPS を通じてファイルをデプロイ
cypress-io/github-action Cypress エンドツーエンドテストを実行
slackapi/slack-github-action Slack にメッセージを送信
dawidd6/action-send-mail ワークフロー実行中にメールを送信

ユーティリティおよびワークフロー管理

アクション 目的
peter-evans/repository-dispatch 外部リポジトリのワークフローをトリガー
fregante/setup-git-user コミット用の Git ユーザー認証情報を設定
andymckay/labeler パスに基づいて問題と PR にラベルを付与
actions/configure-pages GitHub Pages への公開を構成
EndBug/add-and-commit ワークフロー内でファイルの追加とコミット
dangoslen/changelog-enforcer PR に対して CHANGELOG が更新されたか確認

さらに探す方法

自動化テスト、本番環境へのデプロイ、通知、および他のサービスとの統合など、ワークフロー自動化を可能にする多くの GurHub Actions(GitHub Actions)があります。 GitHub Marketplace には、テスト、セキュリティ、デプロイ、通知、コード品質、統合など、さまざまなカテゴリに数千のアクションがリストされています。 “Awe some Actions"などの厳選されたリストも、インスピレーションと発見に役立ちます。

有用なリンク