Skip to content

[ci] split tests and code quality tests #9

[ci] split tests and code quality tests

[ci] split tests and code quality tests #9

Workflow file for this run

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']
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.'