[ci] split tests and code quality tests #7
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Code Analysis | |
on: | |
push: | |
branches: | |
- '[0-9].*' | |
pull_request: | |
merge_group: | |
schedule: | |
# Run every day at 10:45 AM UTC to discover potential issues with dependencies like PHP updates etc. | |
- cron: '45 10 * * *' | |
jobs: | |
misc: | |
# We don't want the scheduled jobs to run on forks of Mautic | |
if: (github.event_name == 'schedule' && (github.repository == 'mautic/mautic' || github.repository == 'mautic/api-library') ) || (github.event_name != 'schedule') | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
commands: ['PHPSTAN', 'Rector', 'Twig Lint', 'scaffolded files mismatch', 'PHPStan baseline changes', 'composer install', 'composer lock check'] | |
php-versions: ['8.1'] | |
actions: | |
- | |
name: 'CS Fixer' | |
run: 'bin/php-cs-fixer fix' | |
- | |
name: 'Composer Validate' | |
run: 'composer validate --ansi' | |
- | |
name: 'Composer Install' | |
run: | | |
# create a temp dir and mimic a composer install via mautic/recommended-project | |
mkdir test_composer | |
cd test_composer | |
cp ../.github/ci-files/composer.json ./ | |
composer install | |
# test if media/css and media/js folder contain the same files as the tarball releases | |
test -z "$(comm -23 <(ls ../media/js | sort) <(ls docroot/media/js | sort))" | |
test -z "$(comm -23 <(ls ../media/css | sort) <(ls docroot/media/css | sort))" | |
# test if console is executable | |
./bin/console cache:clear | |
name: ${{ matrix.commands }} - ${{ matrix.php-versions }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup PHP, with composer and extensions | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-versions }} | |
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, mysql, pdo_mysql | |
# composer install https://github.com/ramsey/composer-install | |
- name: Install dependencies | |
uses: "ramsey/composer-install@v2" | |
- name: Run ${{ matrix.commands }} | |
run: | | |
if [[ "${{ matrix.commands }}" == "PHPSTAN" ]]; then | |
export SYMFONY_ENV=dev | |
export APP_ENV=dev | |
export APP_DEBUG=1 | |
composer phpstan -- --no-progress | |
elif [[ "${{ matrix.commands }}" == "Rector" ]]; then | |
export SYMFONY_ENV=test | |
bin/console cache:warmup | |
bin/rector --dry-run --ansi | |
elif [[ "${{ matrix.commands }}" == "Twig Lint" ]]; then | |
bin/console lint:twig app plugins | |
elif [[ "${{ matrix.commands }}" == "scaffolded files mismatch" ]]; then | |
wget -q -O /tmp/jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 && chmod 755 /tmp/jq | |
/tmp/jq -r '.extra["mautic-scaffold"]["file-mapping"] | to_entries[] | "diff -q \(.key | sub("\\[(project|web)-root\\]";".")) app/\(.value)"' app/composer.json > diff_commands.sh | |
/tmp/jq -r '.extra["mautic-scaffold"]["file-mapping"] | to_entries[] | "diff -rui \(.key | sub("\\[(project|web)-root\\]";".")) app/\(.value)"' app/composer.json > diff_commands_verbose.sh | |
bash diff_commands.sh 2>&1 | tee /tmp/diff_command_output.txt | |
rm diff_commands.sh | |
if [[ $(wc -l </tmp/diff_command_output.txt) -ge 1 ]]; then | |
echo "some scaffolded files were not updated or deleted" | |
echo "Please apply the same changes in the files mentioned above" | |
echo "verbose diff:" | |
bash diff_commands_verbose.sh | |
exit 1 | |
fi | |
else | |
# handle elsewhere | |
echo "Else command" | |
fi | |
- name: Slack Notification if tests fail | |
uses: rtCamp/action-slack-notify@v2 | |
if: ${{ failure() && github.event_name == 'schedule' }} | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
SLACK_MESSAGE: 'The daily GitHub Actions tests in mautic/mautic have failed. Most likely something external has changed, like a PHP version update.' |