👏

GitHub Actions  上で PHP の Built-in web server を起動する

2023/04/30に公開

GitHub Actions 上で PHP の Built-in web server を起動し、 localhost へアクセスします。

サーバー起動のコマンド(php -S)を普通に実行すると、 GitHub Actions の Step がそこで止まってしまいます。なので、&を付けたバックグラウンド実行をします。
そうすることで、以降の Step で localhost にアクセスする処理を実行する出来ます。

      - name: Run server
        run: php -S localhost:8000 &

      - name: Access server
        run: curl http://localhost:8000

詳細

ファイル構成は以下の通りです。

.
├── .github
│   └── workflows
│       └── build-in-server.yml
├── README.md
└── index.php

index.phpではシンプルにhello worldを JSON で返すようにしています。

index.php
<?php

header("Content-Type: application/json; charset=utf-8");
echo '{"message": "hello world"}';

GitHub Actions の workflow では、actions/checkoutshivammathur/setup-phpを行った後、php -S localhost:8000 &を行います。

curl のアクセス結果は GITHUB_STEP_SUMMARY に出力しています。

build-in-server.yml
name: build-in server

on:
  push:
    branches:
      - main

jobs:
  run:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php-versions: [ '8.1' ]
    name: PHP ${{ matrix.php-versions }}
    steps:
      - name: checkout
        uses: actions/checkout@v3

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}

      - name: Run server
        run: |
	  php -S localhost:8000 &
          sleep 5

      - name: Access server
        run: curl http://localhost:8000 >> $GITHUB_STEP_SUMMARY

結果は Summary に表示されます。この方法は素早くサーバーを建てられるので便利でした。

Discussion