Traffine I/O

日本語

2023-02-03

GitHub Actionsとは

GitHub Actionsとは

GitHub Actionsは、GitHubに組み込まれた強力な自動化プラットフォームであり、開発者がソフトウェア開発プロセスを効率化し最適化するためのツールです。この柔軟なツールを使用することで、継続的インテグレーション(CI)、継続的デプロイメント(CD)、テストなどの繰り返しタスクをリポジトリ内で直接自動化するカスタムワークフローを作成できます。

GitHub Actionsは、GitHubプラットフォームと連携するように設計されており、問題追跡、プルリクエスト、コードレビューなどのGitHubの他の機能と簡単に統合できます。

GitHub Actionsを利用することで、次のようなことが可能です。

  • 繰り返しタスクを自動化することで時間を節約し、エラーを減らす
  • CI/CDワークフローにより、ソフトウェア開発ライフサイクルを改善
  • コードスタンダードやベストプラクティスを自動的に強制することで、コラボレーションやコード品質を向上させる
  • Docker、Node.js、AWSなどのサードパーティーツールやサービスと統合する
  • 特定のニーズに合わせてワークフローをカスタマイズし拡張する

GitHub Actionsのコンポーネント

GitHub Actionsの主要なコンポーネントには以下があります。

  • Event
    GitHub Actionsワークフローをトリガーする特定のアクティビティです。リポジトリへのプッシュ、プルリクエスト、問題へのコメント、または定期的なインターバルなどがイベントの例です。

  • Job
    ワークフロー内の同じランナー(仮想マシン)で実行される一連のタスクまたはステップです。ジョブは、依存関係に応じて順次または並列に実行できます。

  • Action
    ジョブのステップとして使用できる再利用可能なコードの一部です。アクションは、自身、コミュニティ、またはGitHubによって作成されることができます。GitHub Marketplaceで見つけることができ、ワークフローに統合することができます。

リポジトリのセットアップ

GitHub Actionsを使用するには、リポジトリが正しく設定されている必要があります。次の手順に従ってセットアップを行ってください。

  1. 新しいGitHubリポジトリを作成するか、既存のリポジトリに移動
  2. リポジトリのルートディレクトリに.githubフォルダがあることを確認。存在しない場合は作成。
  3. .githubフォルダ内に、workflowsという新しいフォルダを作成。ここに全てのGitHub Actionsワークフローファイルを保存。

アクションの書き方

ワークフローファイルの構造

ワークフローは、YAML(Yet Another Markup Language)ファイルを使用して定義されます。これらのファイルは、リポジトリ内の.github/workflowsフォルダに保存されます。典型的なワークフローファイルには次の構成要素が含まれます。

  • Name
    ワークフローの人間に読みやすい名前。

  • Triggers
    ワークフローを開始するイベント(push、pull_request、scheduleなど)。

  • Jobs
    ワークフローが実行するタスクのセット。

  • Steps
    ジョブ内の個々のタスク。ステップは、事前定義されたアクションまたはカスタムスクリプトで構成される。

基本的な構文と構造

以下は、mainブランチにpushイベントが発生した場合に「Hello, World!」を出力する単純なワークフローファイルの例です。

.github/workflows/example.yaml
name: My First Workflow

on:
  push:
    branches:
      - main

jobs:
  hello_world:
    runs-on: ubuntu-latest
    steps:
      - name: Print message
        run: echo "Hello, World!"

この例では、ワークフローはmainブランチにpushイベントによってトリガーされます。ジョブhello_worldは、Ubuntuの最新バージョンで実行され、1つのステップがecho "Hello, World!"コマンドを実行します。

事前定義されたアクションの使用

GitHub Actionsは、一般的なタスクを実行するための事前定義されたアクションを提供しています。これらのアクションは、GitHub Marketplaceで利用でき、わずか数行のYAMLでワークフローに追加できます。人気のある事前定義されたアクションには以下があります。

  • actions/checkout: ランナーにリポジトリをチェックアウト。
  • actions/setup-node: Node.js環境をセットアップ。
  • `actions/cache: 依存関係やビルドアウトプットをキャッシュして、ワークフローの実行時間を短縮。

以下は、Node.js環境をセットアップし、依存関係をインストールし、テストを実行するワークフローの例です。

.github/workflows/example.yaml
name: Node.js CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [12.x, 14.x, 16.x]

    steps:
    - uses: actions/checkout@v2
    - name: Set up Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v2
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm ci
    - run: npm test

この例では、pushpull_requestのイベントによってワークフローがトリガーされます。ジョブbuildは、指定されたバージョンのNode.js環境をセットアップし、npm cinpm testコマンドを実行します。

価格

GitHub Actionsには、公開リポジトリ向けにリソースが制限された無料のティアがあり、プライベートリポジトリ向けには従量制のモデルがあります。

公開リポジトリでは、無制限の分数と20の同時ジョブを取得できます。

プライベートリポジトリでは、無料のティアで1ヶ月あたり2,000分と5つの同時ジョブが提供されます。アカウントタイプと使用状況に応じて、さまざまなレートで追加の分数やリソースを購入することができます。詳細な価格情報については、GitHub Actionsの価格ページを参照してください。

https://github.com/pricing

参考

https://docs.github.com/en/actions
https://github.com/features/actions
https://github.com/pricing

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!