0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHubActionsの使用イメージのメモ

Posted at

はじめに

GitHub Actionsというものについて使用イメージを備忘記録で記載しました。

使用目的

以下のような使用目的になります。
Github Actionsはテスト、デプロイを自動化するツール。
何かをトリガーで自動で動かすこと。
テスト自体は言語によるもの(node.jsならjest、laravelならduskとか)で作成する。

使用方法

GitHub Actionsを使用してテストを自動化することが可能です。
GitHub Actionsは、リポジトリ内のコード変更に応じてワークフローを自動的に実行するCI/CD(継続的インテグレーションおよび継続的デリバリー)ツールです。この機能を利用することで、コードのプッシュやプルリクエストが行われた際に自動的にテストを実行し、その結果を確認することができます。

GitHub Actionsでテストを自動化する基本的な手順は以下の通りです:

  1. ワークフローファイルの作成: リポジトリのルートに .github/workflows ディレクトリを作成し、その中にワークフロー定義ファイル(通常はYAML形式)を作成します。

  2. トリガーの設定: ワークフローをトリガーするイベント(例えば、pushpull_request)を指定します。

  3. ジョブの定義: ワークフロー内で実行する一連のステップを定義します。これには、依存関係のインストール、テストスクリプトの実行などが含まれます。

  4. 実行環境の選択: テストを実行する環境(Ubuntu、Windows、MacOSなど)を選択します。

  5. テストコマンドの実行: 実際のテストコマンド(例えば、npm test または python -m unittest)を実行するステップを定義します。

  6. 結果の確認: テストの実行後、結果を確認し、必要に応じてアクションを取ります(例えば、テストが失敗した場合に通知を送るなど)。

GitHub Actionsを使うことで、開発プロセスをより効率的かつ信頼性高く進めることができ、品質の維持に役立ちます。

コード例

コード例1

GitHub Actionsを使用して、簡単なNode.jsプロジェクトの自動テストの例をご紹介します。この例では、プロジェクトがGitHubにプッシュされるたびに、ユニットテストを自動的に実行します。

前提条件

  • Node.jsプロジェクトがGitHubリポジトリにあること。
  • テストスクリプトがpackage.jsonに定義されていること(通常はnpm testで実行されます)。

ステップ1: ワークフローファイルの作成

  1. GitHubリポジトリのルートに.github/workflowsディレクトリを作成します。
  2. そのディレクトリ内に新しいYAMLファイル(例えばnodejs.yml)を作成します。

ステップ2: ワークフロー定義

以下はnodejs.ymlの基本的な内容です。このワークフローは、mainブランチにプッシュされるたびにトリガーされ、最新のNode.js環境でテストを実行します。

name: Node.js CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [16.x]

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

説明

  • name: ワークフローの名前。
  • on: ワークフローをトリガーするイベント。ここではmainブランチへのpushpull_requestイベント。
  • jobs: 実行するジョブ。ここではbuildという名前のジョブ。
  • runs-on: ジョブが実行される仮想環境。この例ではubuntu-latest
  • strategy: テストを実行するNode.jsのバージョンを指定。
  • steps: 実行するステップ。コードのチェックアウト、Node.jsのセットアップ、依存関係のインストール、テストの実行。

このファイルをリポジトリにコミットし、mainブランチにプッシュすると、GitHub Actionsが自動的にテストを実行します。テストの結果はGitHubのActionsタブで確認できます。

コード例2

LaravelプロジェクトでGitHub Actionsを利用してDuskテストを自動化するための基本的なワークフローの例になります。

name: Laravel CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: Set up PHP
      uses: shivammathur/setup-php@v2
      with:
        php-version: '8.0'
        extensions: mbstring, xml, ctype, json, bcmath, mysql

    - name: Install Composer dependencies
      run: composer install --prefer-dist --no-progress --no-suggest

    - name: Generate application key
      run: php artisan key:generate

    - name: Run Laravel Dusk tests
      run: php artisan dusk

この例では、LaravelプロジェクトのCIプロセスを設定しています。ここでは、PHPのセットアップ、Composer依存関係のインストール、アプリケーションキーの生成、そして最終的にLaravel Duskテストの実行が含まれます。このワークフローは、mainブランチに対するプッシュまたはプルリクエスト時にトリガーされます。

コード例3

gitへのpushではなくスケジュールに基づきテスト例です。
GitHub Actionsでは、スケジュールに基づいたトリガーを設定することが可能です。以下にそのための基本的なワークフローの例を示します:

name: Scheduled CI

on:
  schedule:
    # 毎日午前3時(UTC)に実行
    - cron:  '0 3 * * *'

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    # 以下にビルドやテストを実行するためのステップを追加
    - name: Run tests
      run: ./run-tests.sh

この例では、cronスケジュール式を使って毎日特定の時間にビルドを実行するように設定しています。このようにして、リポジトリへのプッシュやプルリクエスト以外のトリガーでCIワークフローを自動実行することができます。

デプロイメント例

以下は、GitHub Actionsを使用してデプロイメントを行う基本的なワークフローの例です。この例では、ビルドとテストが成功した後に、特定の環境へのデプロイを実行します。

name: Build and Deploy

on:
  push:
    branches: [ main ]

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Build
      run: make build
    - name: Test
      run: make test

  deploy:
    needs: build-and-test
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Deploy to Production
      run: ./deploy-prod.sh
    env:
      ENV_VAR: ${{ secrets.ENV_VAR }}

このワークフローでは、mainブランチへのプッシュ時にビルドとテストが行われ、それらが成功するとdeployジョブが実行されます。deployジョブでは、デプロイメントスクリプト(この例ではdeploy-prod.sh)が実行されます。また、環境変数やシークレットを使って、必要な設定を行うことができます。

参考記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?