Skip to content

QIT Environment Test - Linux #16

QIT Environment Test - Linux

QIT Environment Test - Linux #16

name: QIT Environment Test - Linux
on:
# Every day at 11am and 11pm UTC (6am and 6pm ET)
schedule:
- cron: '0 11 * * *'
- cron: '0 23 * * *'
# Manually
workflow_dispatch:
jobs:
environment_tests:
strategy:
matrix:
os: [ubuntu-20.04, windows-latest, macos-latest]
#php: ['7.2', '7.4', '8.0'] # Example PHP versions, adjust as necessary
runs-on: ${{ matrix.os }}
env:
NO_COLOR: 1
QIT_DISABLE_ONBOARDING: yes
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.2'
- name: Enable dev mode
run: ./qit dev
- name: Connect to Staging QIT
run: ./qit backend:add --environment="staging" --qit_secret="${{ secrets.QIT_STAGING_SECRET }}" --manager_url="https://stagingcompatibilitydashboard.wpcomstaging.com"
- name: Add "qit.test" to hosts file (Linux)
if: matrix.os == 'ubuntu-20.04'
run: sudo echo "127.0.0.1 qit.test" | sudo tee -a /etc/hosts
- name: Add "qit.test" to hosts file (Windows)
if: matrix.os == 'windows-latest'
run: echo "127.0.0.1 qit.test" | Out-File -Append -Encoding ASCII -FilePath C:\Windows\System32\drivers\etc\hosts
- name: Add "qit.test" to hosts file (macOS)
if: matrix.os == 'macos-latest'
run: sudo sh -c 'echo "127.0.0.1 qit.test" >> /etc/hosts'
- name: Start environment and get URL
run: |
php -r "$envOutput = shell_exec('./qit env:up --json');
if ($envOutput === null) {
echo 'Failed to start environment';
exit(1);
}
echo 'Raw environment output: ' . $envOutput;
$data = json_decode($envOutput, true);
$siteUrl = $data['site_url'] ?? '';
if (empty($siteUrl)) {
echo 'site_url not found in environment output';
exit(1);
}
file_put_contents(getenv('GITHUB_ENV'), 'SITE_URL=' . $siteUrl . PHP_EOL, FILE_APPEND);"
- name: Print site URL
run: |
php -r "echo 'Site URL: ' . getenv('SITE_URL');"
- name: Test Site Up
run: |
php -r "$siteUrl = getenv('SITE_URL');
$ch = curl_init($siteUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($statusCode === 200) {
echo 'Site is up';
} else {
echo 'Site is not up, status code: ' . $statusCode;
exit(1);
}"
- name: Query WP JSON
run: |
php -r "$siteUrl = getenv('SITE_URL');
$response = file_get_contents($siteUrl . '/wp-json');
echo $response;"