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環境をしました。ぜひ参考にしてみて下さい。