Merge pull request #160 from ConductionNL/development #827
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: CI Workflow | ||
on: [push, master] | ||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Setup PHP | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: '8.2' | ||
extensions: mbstring, zip, xml, curl, intl, sqlite, gd, pdo_mysql | ||
tools: cs2pr, phpcbf, phpcs, phpmd, phpunit | ||
- name: Install Composer dependencies | ||
run: composer install | ||
- name: Install npm dependencies | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: '18.x' # Specify Node.js version | ||
# Documentation: https://github.com/actions/setup-node | ||
# Explanation: This step sets up a Node.js environment and installs the project's dependencies listed in the `package.json` file using npm. | ||
- run: npm install | ||
# Documentation: https://docs.npmjs.com/cli/v7/commands/npm-install | ||
# Explanation: This step runs `npm install` to install the Node.js dependencies required for the project. | ||
- name: Run phpcbf | ||
run: phpcbf . | ||
continue-on-error: ${{ github.ref != 'refs/heads/main' }} | ||
#- name: Commit code formatting changes | ||
# if: success() && github.ref != 'refs/heads/main' | ||
# run: | | ||
# git config user.name "GitHub Actions" | ||
# git config user.email "[email protected]" | ||
# git add src | ||
# git diff --cached --quiet || (git commit -m "Update src from PHP Codesniffer" && git pull origin $(git rev-parse --abbrev-ref HEAD) --rebase --autostash && git push) | ||
- name: Run phpcs | ||
run: phpcs -q --report=checkstyle src | cs2pr | ||
continue-on-error: ${{ github.ref != 'refs/heads/main' }} | ||
- name: Run phpmd | ||
run: phpmd src xml phpmd.xml --not-strict | ||
continue-on-error: ${{ github.ref != 'refs/heads/main' }} | ||
- name: List files in repository root | ||
run: ls -alh | ||
- name: List files in tests directory | ||
run: ls -alh ./tests | ||
- name: List files in vendor directory | ||
run: ls -alh ./vendor | ||
- name: Run PHPUnit tests | ||
env: | ||
XDEBUG_MODE: coverage | ||
run: | | ||
phpunit --bootstrap ./tests/bootstrap.php --configuration phpunit.xml --coverage-html ./coverage --coverage-text | tee coverage.txt | ||
continue-on-error: ${{ github.ref != 'refs/heads/main' }} | ||
lint: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Install remark presets | ||
run: npm install remark-cli remark-preset-lint-consistent remark-preset-lint-recommended remark-lint-list-item-indent | ||
- name: Run remark | ||
run: npx remark . --output --use remark-preset-lint-consistent --use remark-preset-lint-recommended --use remark-lint-list-item-indent | ||
- name: Check for linting errors | ||
run: | | ||
npx remark . --use remark-preset-lint-consistent --use remark-preset-lint-recommended --use remark-lint-list-item-indent | ||
continue-on-error: ${{ github.ref != 'refs/heads/main' }} | ||
- name: Git commit | ||
if: success() && github.ref != 'refs/heads/main' | ||
run: | | ||
git config user.name "GitHub Actions" | ||
git config user.email "[email protected]" | ||
git add . | ||
git add package.json package-lock.json | ||
git diff --cached --quiet || (git commit -m "Update src from remark-lint" && git pull origin $(git rev-parse --abbrev-ref HEAD) --rebase --autostash && git push) | ||
checks: | ||
needs: [build, lint] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v3 | ||
- name: Setup PHP (for checks) | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: '8.2' | ||
extensions: mbstring, zip, xml, curl, intl, sqlite, gd, pdo_mysql | ||
tools: cs2pr, phpcs, phpmd, phpunit | ||
- name: Run Checks | ||
run: | | ||
if ! command -v phpcs &> /dev/null; then | ||
echo "phpcs could not be found. Please ensure it's installed." | ||
exit 1 | ||
fi | ||
if ! command -v phpmd &> /dev/null; then | ||
echo "phpmd could not be found. Please ensure it's installed." | ||
exit 1 | ||
fi | ||
if phpcs -q --report=checkstyle src | grep -q "ERROR"; then | ||
echo "PHP CodeSniffer found issues. Please fix them before merging." | ||
exit 1 | ||
fi | ||
if phpmd src xml phpmd.xml --strict | grep -q "ERROR"; then | ||
echo "PHP Mess Detector found issues. Please fix them before merging." | ||
exit 1 | ||
fi | ||
# if ! phpunit --bootstrap ./tests/bootstrap.php --configuration phpunit.xml; then | ||
# echo "PHPUnit tests failed. Please fix them before merging." | ||
# exit 1 | ||
#fi | ||
if ! npx remark . --use remark-preset-lint-consistent --use remark-preset-lint-recommended --use remark-lint-list-item-indent; then | ||
echo "Markdown linting failed. Please fix them before merging." | ||
exit 1 | ||
fi | ||
continue-on-error: false |