Masayan tech blog.

  1. ブログ記事一覧>
  2. GitHub Actionsで基本的なPHPアプリケーションのCICD環境を構築する

GitHub Actionsで基本的なPHPアプリケーションのCICD環境を構築する

公開日

GitHub Actionsとは

公式ドキュメントより引用

GitHub Actions は、ソフトウェア開発ライフサイクル内のタスクを自動化するのに役立ちます。 GitHub Actions はイベント駆動型で、指定されたイベントが発生した後に一連のコマンドを実行できます。 たとえば、誰かがリポジトリのPull Requestを作成するたびに、ソフトウェアテストスクリプトを実行するコマンドを自動的に実行できます。

手順

ワークフローの作成

ワークフローの特徴

  • .github/workflows/ ディレクトリ以下に配置されるYAMLファイルが個別のワークフローとなる。
  • 複数のワークフローを設置可能
  • ワークフローは並列で実行される。

ワークフローはリポジトリにymlファイルで作成する。GitHubで作成するなら、リポジトリのActionsタブを開く。

タブを開くと、リポジトリに使用されているプログラミング言語等により分類されたテンプレートからymlファイルを自動生成してくれる(自分で作成することも可)

今回はphpで作成しているので、php.ymlのテンプレートを選択します。

ビルド時に、phpunitによるテストを行いたいので、ymlファイルに追記する

- name: Run test suite
run: composer run-script test

最終的なymlファイル

php.yml

name: PHP Composer

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

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Validate composer.json and composer.lock
        run: composer validate --strict
      - name: Cache Composer packages
        id: composer-cache
        uses: actions/cache@v2
        with:
          path: vendor
          key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
          restore-keys: |
            ${{ runner.os }}-php-

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

      # Add a test script to composer.json, for instance: "test": "vendor/bin/phpunit"
      # Docs: https://getcomposer.org/doc/articles/scripts.md

      - name: Run test suite
        run: composer run-script test

ワークフローの構成要素

ワークフローイベント

github上での何かしらのイベントをトリガーとしてワークフローの実行できる仕組み

単一のイベントを使用する例

# リポジトリ内の任意のブランチにコードがプッシュされたときにトリガーされる
on: push

イベントのリストを使用する例

# プッシュもしくはPull Requestイベントでワークフローをトリガーする
on: [push, pull_request]
ジョブ
  • ワークフローにおいて実行する処理をジョブとして定義する
  • 各ジョブは仮想環境の新しいインスタンス(ubuntuなど)で実行される。

今回は"ビルド"というjobをymlに設定

jobs:
  build:
ステップ
  • Jobが実行する処理の集合。
  • actionsでもともと用意されているコマンドや、通常のスクリプトコマンド等が指定できる
jobs:   
  build:     
    runs-on: ubuntu-latest
    
   steps:       
     - uses: actions/checkout@v2    
     - name: Validate composer.json and composer.lock        
       run: composer validate --strict
     ・・・

ワークフローの実行

指定されたイベント(push等)に応じてワークフローが実行されて、テスト等が通り、ビルドが完了していればOK

GitHubのsettingsにてFTP情報を設定する

GitHub対象リポジトリのsettings > secretsにて下記情報を設定します。

  • FTP_SERVER:ftpサーバのホスト
  • FTP_USERNAME:ftpサーバのアカウント名
  • FTP_PASSWORD:ftpサーバのパスワード

これでpushしてビルド後にデプロイできていれば完了です。

まとめ

いかがでしたでしょうか。本記事ではGitHub Actionsで基本的なPHPアプリケーションのCICD環境をしました。ぜひ参考にしてみて下さい。