GitHub Actions チートシート - 標準的な構造と最も有用なアクションのリスト
共通の GitHub Actions とその構造について。
GitHub Actions は、GitHub 内の自動化および CI/CD プラットフォームであり、プッシュ、プルリクエスト、スケジュールなどのイベントに基づいてコードのビルド、テスト、デプロイを行うために使用されます。
標準的な GitHub の他にも、セルフホスト型の Gitea サーバー で GitHub Actions を使用することができます。

アクションには公式、コミュニティ、サードパーティ製のツールが含まれており、ビルドやテストからデプロイ、リリース管理、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"などの厳選されたリストも、インスピレーションと発見に役立ちます。
有用なリンク
- https://docs.github.com/actions
- https://github.com/marketplace
- https://docs.github.com/en/actions/get-started/quickstart
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
- GIT チートシート
- Gitea - インストールとテスト
- Gitea サーバーのバックアップと復元
- Gitea Actions を使用して Hugo ウェブサイトを AWS S3 にデプロイ
- Gitflow: ステップ、代替案、長所、短所
- GitOps を活用した DevOps - Argo CD, Flux, Jenkins X, Weave GitOps など