mirror of
https://github.com/graycoreio/github-actions-magento2.git
synced 2026-06-13 05:04:54 +00:00
153 lines
5.7 KiB
YAML
Executable File
153 lines
5.7 KiB
YAML
Executable File
name: "M2 Coding Standard"
|
|
author: "Mage-OS"
|
|
description: "A Github Action that runs the Magento Coding Standard."
|
|
|
|
inputs:
|
|
php_version:
|
|
type: string
|
|
required: true
|
|
default: "8.2"
|
|
description: "PHP version used to do the coding standard check (default: 8.2)."
|
|
|
|
composer_version:
|
|
type: string
|
|
required: true
|
|
default: "2"
|
|
description: "The version of composer to use (default: 2)."
|
|
|
|
version:
|
|
type: string
|
|
required: false
|
|
default: "*"
|
|
description: "The version of the coding standard to use (default: latest)."
|
|
|
|
severity:
|
|
type: string
|
|
required: false
|
|
default: "5"
|
|
description: "The minimum severity required to display an error or warning (default: 5)"
|
|
|
|
warning_severity:
|
|
type: string
|
|
required: false
|
|
default: "8"
|
|
description: "The minimum severity required to display a warning (default: 8)."
|
|
|
|
error_severity:
|
|
type: string
|
|
required: false
|
|
default: "8"
|
|
description: "The minimum severity required to display an error (default: 8)."
|
|
|
|
baseline_version:
|
|
type: string
|
|
required: false
|
|
default: "*"
|
|
description: "The version of phpcs baseline to use (default: latest)."
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Checkout head
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{github.event.pull_request.head.ref}}
|
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
|
|
- name: Get all changed files
|
|
uses: tj-actions/changed-files@v39
|
|
id: changed-files-phpcs
|
|
with:
|
|
files_yaml: |
|
|
app:
|
|
- '**/*.php'
|
|
- '**/*.phtml'
|
|
- '**/*.graphqls'
|
|
- '**/*.less'
|
|
- '**/*.css'
|
|
- '**/*.html'
|
|
- '**/*.xml'
|
|
- '**/*.js'
|
|
|
|
- name: Inform if no files have changed
|
|
if: steps.changed-files-phpcs.outputs.app_any_changed == 'false'
|
|
shell: bash
|
|
run: |
|
|
echo "No files relevant to PHPCS have changed. Skipping PHPCS run."
|
|
echo "List all the files that have changed: ${{ steps.changed-files-phpcs.outputs.app_all_changed_files }}"
|
|
|
|
- name: Inform if relevant files have changed
|
|
if: steps.changed-files-phpcs.outputs.app_any_changed == 'true'
|
|
shell: bash
|
|
run: |
|
|
echo "One or more files relevant to PHPCS have changed."
|
|
echo "List all the files that have changed: ${{ steps.changed-files-phpcs.outputs.app_all_changed_files }}"
|
|
|
|
- name: Setup PHP
|
|
if: steps.changed-files-phpcs.outputs.app_any_changed == 'true'
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: ${{ inputs.php_version }}
|
|
tools: composer:v${{ inputs.composer_version }}
|
|
coverage: none
|
|
|
|
- name: Create composer project
|
|
if: steps.changed-files-phpcs.outputs.app_any_changed == 'true'
|
|
shell: bash
|
|
run: |
|
|
composer create-project --no-plugins --no-dev \
|
|
magento/magento-coding-standard \
|
|
magento-coding-standard "${{ github.event.inputs.version || '*' }}"
|
|
|
|
- name: Register coding standards
|
|
if: steps.changed-files-phpcs.outputs.app_any_changed == 'true'
|
|
working-directory: magento-coding-standard
|
|
shell: bash
|
|
run: |
|
|
composer config --no-plugins allow-plugins.digitalrevolution/php-codesniffer-baseline true
|
|
composer require --dev "digitalrevolution/php-codesniffer-baseline: ${{ github.event.inputs.baseline_version || '*' }}"
|
|
|
|
- name: Checkout base to generate baseline
|
|
if: steps.changed-files-phpcs.outputs.app_any_changed == 'true'
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{github.event.pull_request.base.ref}}
|
|
repository: ${{github.event.pull_request.base.repo.full_name}}
|
|
path: base
|
|
|
|
- name: Create phpcs.baseline.xml from base
|
|
shell: bash
|
|
working-directory: base
|
|
if: steps.changed-files-phpcs.outputs.app_any_changed == 'true'
|
|
run: |
|
|
php ${{ github.workspace }}/magento-coding-standard/vendor/bin/phpcs --standard=Magento2 \
|
|
$([ -n "${{ inputs.severity }}" ] && echo "--severity=${{ inputs.severity }}") \
|
|
$([ -n "${{ inputs.warning_severity }}" ] && echo "--warning-severity=${{ inputs.warning_severity }}") \
|
|
$([ -n "${{ inputs.error_severity }}" ] && echo "--error-severity=${{ inputs.error_severity }}") \
|
|
--report=\\DR\\CodeSnifferBaseline\\Reports\\Baseline --report-file=phpcs.baseline.xml \
|
|
${{ steps.changed-files-phpcs.outputs.app_all_changed_files }} || /bin/true
|
|
|
|
- name: Copy baseline to head
|
|
if: steps.changed-files-phpcs.outputs.app_any_changed == 'true'
|
|
shell: bash
|
|
run: |
|
|
cp ${{ github.workspace }}/base/phpcs.baseline.xml ${{ github.workspace }}/phpcs.baseline.xml
|
|
|
|
# Since we ran phpcs in the base folder, the files in phpcs.baseline.xml contain the base folder in the path.
|
|
# We need to remove /base/ so that the phpcs can locate the correct files.
|
|
- name: Remove base dir from phpcs baseline
|
|
if: steps.changed-files-phpcs.outputs.app_any_changed == 'true'
|
|
shell: bash
|
|
run: |
|
|
sed -i "s|/base/|/|" ${{ github.workspace }}/phpcs.baseline.xml
|
|
|
|
- name: Execute phpcs on head for changed files
|
|
shell: bash
|
|
if: steps.changed-files-phpcs.outputs.app_any_changed == 'true'
|
|
run: |
|
|
php ${{ github.workspace }}/magento-coding-standard/vendor/bin/phpcs --standard=Magento2 \
|
|
$([ -n "${{ inputs.severity }}" ] && echo "--severity=${{ inputs.severity }}") \
|
|
$([ -n "${{ inputs.warning_severity }}" ] && echo "--warning-severity=${{ inputs.warning_severity }}") \
|
|
$([ -n "${{ inputs.error_severity }}" ] && echo "--error-severity=${{ inputs.error_severity }}") \
|
|
${{ steps.changed-files-phpcs.outputs.app_all_changed_files }}
|