New scripts and updates to instructions to remove references and dele… #35
This file contains hidden or 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/CD Pipeline | ||
| on: | ||
| push: | ||
| branches: [ main, develop ] | ||
| pull_request: | ||
| branches: [ main, develop ] | ||
| release: | ||
| types: [ published ] | ||
| env: | ||
| NODE_VERSION: 18 | ||
| PHP_VERSION: 8.1 | ||
| jobs: | ||
| lint: | ||
| name: Code Quality & Linting | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: ${{ env.NODE_VERSION }} | ||
| cache: 'npm' | ||
| - name: Setup PHP | ||
| uses: shivammathur/setup-php@v2 | ||
| with: | ||
| php-version: ${{ env.PHP_VERSION }} | ||
| tools: composer | ||
| coverage: none | ||
| - name: Install Node dependencies | ||
| run: npm ci | ||
| - name: Install Composer dependencies | ||
| run: composer install --prefer-dist --no-progress --no-suggest | ||
| - name: Lint JavaScript | ||
| run: npm run lint:js | ||
| - name: Lint CSS | ||
| run: npm run lint:css | ||
| - name: Lint PHP | ||
| run: npm run lint:php | ||
| test: | ||
| name: Run Tests | ||
| runs-on: ubuntu-latest | ||
| strategy: | ||
| matrix: | ||
| php-version: [8.0, 8.1, 8.2] | ||
| wp-version: [latest, 6.4, 6.5] | ||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: ${{ env.NODE_VERSION }} | ||
| cache: 'npm' | ||
| - name: Setup PHP | ||
| uses: shivammathur/setup-php@v2 | ||
| with: | ||
| php-version: ${{ matrix.php-version }} | ||
| tools: composer | ||
| coverage: xdebug | ||
| - name: Install Node dependencies | ||
| run: npm ci | ||
| - name: Install Composer dependencies | ||
| run: composer install --prefer-dist --no-progress --no-suggest | ||
| - name: Build assets | ||
| run: npm run build | ||
| - name: Run JavaScript tests | ||
| run: npm run test:js | ||
| - name: Run PHP tests | ||
| run: npm run test:php | ||
| build: | ||
| name: Build & Package | ||
| runs-on: ubuntu-latest | ||
| needs: [lint, test] | ||
| if: github.event_name == 'release' | ||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: ${{ env.NODE_VERSION }} | ||
| cache: 'npm' | ||
| - name: Install dependencies | ||
| run: npm ci | ||
| - name: Build production assets | ||
| run: npm run build:production | ||
| - name: Create distribution package | ||
| run: | | ||
| mkdir -p dist | ||
| rsync -av --exclude-from=.distignore . dist/{{theme_slug}}/ | ||
| cd dist | ||
| zip -r {{theme_slug}}-${{ github.event.release.tag_name }}.zip {{theme_slug}}/ | ||
| - name: Upload release asset | ||
| uses: actions/upload-release-asset@v1 | ||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| with: | ||
| upload_url: ${{ github.event.release.upload_url }} | ||
| asset_path: ./dist/{{theme_slug}}-${{ github.event.release.tag_name }}.zip | ||
| asset_name: {{theme_slug}}-${{ github.event.release.tag_name }}.zip | ||
| asset_content_type: application/zip | ||
| name: build-files | ||
| path: build/ | ||
| security-audit: | ||
| name: Security Audit | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: 18 | ||
| cache: 'npm' | ||
| - name: Install dependencies | ||
| run: npm ci | ||
| - name: Run npm audit | ||
| run: | | ||
| echo "🔒 Running security audit..." | ||
| npm audit --audit-level=moderate --production || { | ||
| echo "❌ Security vulnerabilities detected." | ||
| echo "Run 'npm audit' locally for details." | ||
| exit 1 | ||
| } | ||
| - name: Check for outdated dependencies | ||
| run: | | ||
| echo "📦 Checking for outdated dependencies..." | ||
| npm outdated || true | ||
| e2e: | ||
| name: End-to-End Tests | ||
| runs-on: ubuntu-latest | ||
| needs: [lint] | ||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: ${{ env.NODE_VERSION }} | ||
| cache: 'npm' | ||
| - name: Install dependencies | ||
| run: npm ci | ||
| - name: Build assets | ||
| run: npm run build | ||
| - name: Start WordPress environment | ||
| run: npm run env:start | ||
| - name: Run E2E tests | ||
| run: npm run test:e2e | ||
| - name: Stop WordPress environment | ||
| if: always() | ||
| run: npm run env:stop | ||
| accessibility: | ||
| name: Accessibility Tests | ||
| runs-on: ubuntu-latest | ||
| needs: [lint, security-audit] | ||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: ${{ env.NODE_VERSION }} | ||
| cache: 'npm' | ||
| - name: Install dependencies | ||
| run: npm ci | ||
| - name: Build assets | ||
| run: npm run build | ||
| - name: Start WordPress environment | ||
| run: npm run env:start | ||
| - name: Run accessibility tests | ||
| run: npm run test:accessibility | ||
| - name: Stop WordPress environment | ||
| if: always() | ||
| run: npm run env:stop | ||