From 64651cd871fcaa855169eeb252ffb91023cdf417 Mon Sep 17 00:00:00 2001 From: Sami Ahmed Siddiqui Date: Fri, 16 Aug 2024 15:17:55 +0500 Subject: [PATCH 1/3] Add actions to be trigger lint code --- .github/workflows/coding-standards.yml | 82 +++++++++++++++++++ .../reusable-coding-standards-javascript.yml | 46 +++++++++++ .../reusable-coding-standards-php.yml | 49 +++++++++++ .github/workflows/wpcs-php.yml | 19 ----- 4 files changed, 177 insertions(+), 19 deletions(-) create mode 100644 .github/workflows/coding-standards.yml create mode 100644 .github/workflows/reusable-coding-standards-javascript.yml create mode 100644 .github/workflows/reusable-coding-standards-php.yml delete mode 100644 .github/workflows/wpcs-php.yml diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml new file mode 100644 index 0000000..111ce78 --- /dev/null +++ b/.github/workflows/coding-standards.yml @@ -0,0 +1,82 @@ +name: Coding Standards + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + paths: + # Any change to a PHP or JavaScript file should run checks. + - '**.js' + - '**.php' + # These files configure npm. Changes could affect the outcome. + - 'package*.json' + # These files configure Composer. Changes could affect the outcome. + - 'composer.*' + # This file configures ESLint. Changes could affect the outcome. + - '.eslintrc.js' + # This file configures PHPCS. Changes could affect the outcome. + - 'phpcs.xml.dist' + # Changes to workflow files should always verify all workflows are successful. + - '.github/workflows/*.yml' + workflow_dispatch: + # Cancels all previous workflow runs for pull requests that have not completed. + concurrency: + # The concurrency group contains the workflow name and the branch name for pull requests + # or the commit hash for any other events. + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} + cancel-in-progress: true + +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} + +on: + # Runs the PHP coding standards checks. + phpcs: + name: PHP coding standards + uses: samiahmedsiddiqui/custom-permalinks/.github/workflows/reusable-coding-standards-php.yml@main + permissions: + contents: read + if: ${{ github.repository == 'samiahmedsiddiqui/custom-permalinks' || github.event_name == 'pull_request' }} + + # Runs the JavaScript coding standards checks. + eslint: + name: JavaScript coding standards + uses: samiahmedsiddiqui/custom-permalinks/.github/workflows/reusable-coding-standards-javascript.yml@main + permissions: + contents: read + if: ${{ github.repository == 'samiahmedsiddiqui/custom-permalinks' || github.event_name == 'pull_request' }} + + failed-workflow: + name: Failed workflow tasks + runs-on: ubuntu-latest + permissions: + actions: write + needs: [ phpcs, eslint ] + if: | + always() && + github.repository == 'samiahmedsiddiqui/custom-permalinks' && + github.event_name != 'pull_request' && + github.run_attempt < 2 && + ( + contains( needs.*.result, 'cancelled' ) || + contains( needs.*.result, 'failure' ) + ) + + steps: + - name: Dispatch workflow run + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + retries: 2 + retry-exempt-status-codes: 418 + script: | + github.rest.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: 'failed-workflow.yml', + ref: 'trunk', + inputs: { + run_id: '${{ github.run_id }}' + } + }); diff --git a/.github/workflows/reusable-coding-standards-javascript.yml b/.github/workflows/reusable-coding-standards-javascript.yml new file mode 100644 index 0000000..e9c6eb7 --- /dev/null +++ b/.github/workflows/reusable-coding-standards-javascript.yml @@ -0,0 +1,46 @@ +## +# A reusable workflow that checks the JavaScript coding standards. +## +name: JavaScript coding standards + +on: + workflow_call: + +jobs: + eslint: + name: Run coding standards checks + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x, 20.x, 22.x] + + permissions: + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + show-progress: ${{ runner.debug == '1' && 'true' || 'false' }} + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + + - name: Log debug information + run: | + npm --version + node --version + git --version + + - name: Install npm Dependencies + run: npm ci + + - name: Run ESLint + run: npm run lint:js + + - name: Ensure version-controlled files are not modified or deleted + run: git diff --exit-code diff --git a/.github/workflows/reusable-coding-standards-php.yml b/.github/workflows/reusable-coding-standards-php.yml new file mode 100644 index 0000000..0521efd --- /dev/null +++ b/.github/workflows/reusable-coding-standards-php.yml @@ -0,0 +1,49 @@ +## +# A reusable workflow that checks the PHP coding standards. +## +name: PHP coding standards + +on: + workflow_call: + inputs: + php-version: + description: 'The PHP version to use.' + required: false + type: 'string' + default: 'latest' + +jobs: + phpcs: + name: Run coding standards checks + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + show-progress: ${{ runner.debug == '1' && 'true' || 'false' }} + + - name: Set up PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ inputs.php-version }} + tools: cs2pr + + - name: Install Composer dependencies + run: composer install + + - name: Make Composer packages available globally + run: echo "${PWD}/vendor/bin" >> $GITHUB_PATH + + - name: Run PHPCS on all files + id: phpcs + run: phpcs -n --report-full --cache=./.cache/phpcs-src.json --report-checkstyle=./.cache/phpcs-report.xml + + - name: Show PHPCS results in PR + if: ${{ always() && steps.phpcs.outcome == 'failure' }} + run: cs2pr ./.cache/phpcs-report.xml + + - name: Ensure version-controlled files are not modified or deleted + run: git diff --exit-code diff --git a/.github/workflows/wpcs-php.yml b/.github/workflows/wpcs-php.yml deleted file mode 100644 index 9fd6403..0000000 --- a/.github/workflows/wpcs-php.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: WordPress Coding Standards (PHP) - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Install dependencies - run: composer install - - - name: Test WPCS - run: composer lint From 0ca31f4fea29e127da26dd1e990627697d7d8a0e Mon Sep 17 00:00:00 2001 From: Sami Ahmed Siddiqui Date: Fri, 16 Aug 2024 15:20:50 +0500 Subject: [PATCH 2/3] Update concurrency --- .github/workflows/coding-standards.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 111ce78..3a2d0dc 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -20,12 +20,13 @@ on: # Changes to workflow files should always verify all workflows are successful. - '.github/workflows/*.yml' workflow_dispatch: - # Cancels all previous workflow runs for pull requests that have not completed. - concurrency: - # The concurrency group contains the workflow name and the branch name for pull requests - # or the commit hash for any other events. - group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} - cancel-in-progress: true + +# Cancels all previous workflow runs for pull requests that have not completed. +concurrency: + # The concurrency group contains the workflow name and the branch name for pull requests + # or the commit hash for any other events. + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} + cancel-in-progress: true # Disable permissions for all available scopes by default. # Any needed permissions should be configured at the job level. From 242cc4889ed103d8acda17f1f75be63f575b84d8 Mon Sep 17 00:00:00 2001 From: Sami Ahmed Siddiqui Date: Fri, 16 Aug 2024 15:22:52 +0500 Subject: [PATCH 3/3] Add jobs --- .github/workflows/coding-standards.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 3a2d0dc..56e4c96 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -19,7 +19,6 @@ on: - 'phpcs.xml.dist' # Changes to workflow files should always verify all workflows are successful. - '.github/workflows/*.yml' - workflow_dispatch: # Cancels all previous workflow runs for pull requests that have not completed. concurrency: @@ -32,7 +31,7 @@ concurrency: # Any needed permissions should be configured at the job level. permissions: {} -on: +jobs: # Runs the PHP coding standards checks. phpcs: name: PHP coding standards