name: Continuous Integration "on": push: branches: ["main"] pull_request: branches: ["main"] schedule: - cron: "0 0 * * MON" permissions: contents: read env: # Fix for symfony/color detection. We know GitHub Actions can handle it ANSICON: 1 CASTOR_CONTEXT: ci jobs: check-dockerfiles: name: Check Dockerfile runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Check php/Dockerfile uses: hadolint/hadolint-action@v3.1.0 with: dockerfile: infrastructure/docker/services/php/Dockerfile ci: name: Test with PHP ${{ matrix.php-version }} strategy: fail-fast: false matrix: php-version: ["8.1", "8.2", "8.3"] runs-on: ubuntu-latest env: DS_PHP_VERSION: ${{ matrix.php-version }} steps: - uses: actions/checkout@v4 # Setup - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: 8.2 tools: castor - name: "Build and start the infrastructure" run: "castor start && sleep 5" - name: "Check PHP coding standards" run: "castor qa:cs" - name: "Run PHPStan" run: "castor qa:phpstan" - name: "Test HTTP server" run: | set -e set -o pipefail curl --fail --insecure --silent -H "Host: app.test" https://127.0.0.1 | grep "Hello world" curl --fail --insecure --silent -H "Host: app.test" https://127.0.0.1 | grep "${{ matrix.php-version }}" - name: "Test builder" run: | set -e set -o pipefail cat > .castor/test.php <<'EOPHP' <?php use Castor\Attribute\AsTask; use function docker\docker_compose_run; #[AsTask()] function test() { docker_compose_run('echo "Hello World"'); } EOPHP castor test | grep "Hello World" - name: "Test communication with DB" run: | set -e set -o pipefail cat > application/public/index.php <<'EOPHP' <?php $pdo = new PDO('pgsql:host=postgres;dbname=app', 'app', 'app'); $pdo->exec('CREATE TABLE test (id integer NOT NULL)'); $pdo->exec('INSERT INTO test VALUES (1)'); echo $pdo->query('SELECT * from test')->fetchAll() ? 'database OK' : 'database KO'; EOPHP # FPM seems super slow to detect the change, we need to wait a bit sleep 3 curl --fail --insecure --silent -H "Host: app.test" https://127.0.0.1 | grep "database OK"