Skip to content

Continuous Integration #715

Continuous Integration

Continuous Integration #715

Workflow file for this run

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/[email protected]
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
- name: setup-castor
uses: castor-php/[email protected]
- 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"