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

GitHub Actions の一般的な構造について少し説明します。

目次

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

標準的なGitHubだけでなく、自己ホスト型のGiteaサーバーでもGitHub Actionsを使用できます。

github actions flow

この概要では、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_dispatchinputsを使用して、手動およびパラメータ付きの実行を行ってください。
  • 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」などのキュレーション済みリストも、インスピレーションや発見に役立ちます。

有用なリンク