GitHub Actions チートシート - 標準的な構造と最も役立つアクションのリスト
GitHub Actions の一般的な構造について少し説明します。
GitHub Actions
は、プッシュ、プルリクエスト、またはスケジュールなどのイベントに基づいてコードを構築、テスト、デプロイするためのGitHub内での自動化およびCI/CDプラットフォームです。
標準的なGitHubだけでなく、自己ホスト型のGiteaサーバーでもGitHub Actionsを使用できます。
この概要では、GitHub Actionsの構造、簡単な説明、オープンソースおよび商用ワークフローでよく使われるアクションについて説明しています。
アクションは、公式、コミュニティ、およびサードパーティのツールを含み、ビルドやテストからデプロイ、リリース管理、QA、通知までをサポートします。
基本的な構成構造
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
に配置してください。 - workflow_dispatchとinputsを使用して、手動およびパラメータ付きの実行を行ってください。
- cacheアクションを使用して、依存関係のインストールを高速化してください。
- job matrixを使用して、複数のOS/ランタイムバージョンでテストしてください。
- 敏感なデータは、
${{ secrets.SECRET_NAME }}
として参照するセキュリティで保護してください。
このチートシートは、GitHub Actionsを使用して自動化、CI/CD、およびその他のタスクを構成、設定、拡張するための基本的な情報をカバーしています。詳細や更新については、常に公式の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 Checksにテスト結果を添付 |
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に対して変更履歴が更新されたかを確認 |
より多くのアクションを探す方法
自動テスト、プロダクションへのデプロイ、通知、他のサービスとの統合など、ワークフロー自動化を可能にする多くのGitHub Actionsがあります。 GitHub Marketplaceには、テスト、セキュリティ、デプロイ、通知、コード品質、統合など、カテゴリごとに数千のアクションが掲載されています。 「Awesome 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など