name: Release WordPress Plugin on: push: tags: - 'v*.*.*' jobs: build: name: Build and Release runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '7.4' extensions: mbstring, intl, curl tools: composer, wp-cli - name: Get the version id: get_version run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '18' cache: 'npm' - name: Install PHP dependencies run: composer install --no-dev --optimize-autoloader - name: Install Node dependencies run: npm ci - name: Verify version matches run: | WP_VERSION=$(grep -m 1 "Version: " wp-multisite-waas.php | awk -F' ' '{print $2}') README_VERSION=$(grep -m 1 "Stable tag: " readme.txt | awk -F' ' '{print $3}') PKG_VERSION=$(node -p "require('./package.json').version") if [ "$WP_VERSION" != "${{ env.VERSION }}" ] || [ "$README_VERSION" != "${{ env.VERSION }}" ] || [ "$PKG_VERSION" != "${{ env.VERSION }}" ]; then echo "Error: Version mismatch detected!" echo "Tag version: ${{ env.VERSION }}" echo "Plugin version: $WP_VERSION" echo "readme.txt version: $README_VERSION" echo "package.json version: $PKG_VERSION" exit 1 fi echo "All version numbers match: ${{ env.VERSION }}" - name: Choose build method id: build_method run: | # Check if we have TypeScript files if ls assets/js/*.ts &> /dev/null; then echo "USE_MODERN_BUILD=true" >> $GITHUB_ENV echo "Using modern build process with TypeScript" else echo "USE_MODERN_BUILD=false" >> $GITHUB_ENV echo "Using compatibility build process" fi - name: Modern Build - Generate translation files if: env.USE_MODERN_BUILD == 'true' run: npm run translations - name: Modern Build - Process CSS and JS if: env.USE_MODERN_BUILD == 'true' run: | npm run css npm run js - name: Modern Build - Create ZIP file if: env.USE_MODERN_BUILD == 'true' run: npm run zip - name: Compatibility Build - Run build process if: env.USE_MODERN_BUILD == 'false' run: npm run build:compat - name: Create Release id: create_release uses: softprops/action-gh-release@v1 with: files: | build/wp-multisite-waas-${{ env.VERSION }}.zip wp-multisite-waas.zip name: WP Multisite WaaS ${{ env.VERSION }} draft: false prerelease: false body: | # WP Multisite WaaS ${{ env.VERSION }} ## What's Changed For a complete list of changes, please refer to the [changelog](https://github.com/wpallstars/wp-multisite-waas/blob/main/readme.txt). ## Installation 1. Download the ZIP file from this release 2. Upload and activate the plugin in your WordPress Network installation 3. Follow the setup wizard to configure the plugin ## Notes - Compatible with WordPress 5.3+ - Requires PHP 7.4.30+ - Always backup your site before upgrading - name: Send notification on success if: success() uses: rtCamp/action-slack-notify@v2 env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} SLACK_CHANNEL: releases SLACK_COLOR: good SLACK_MESSAGE: "🚀 WP Multisite WaaS ${{ env.VERSION }} has been released! https://github.com/wpallstars/wp-multisite-waas/releases" SLACK_TITLE: New Release SLACK_USERNAME: GitHub SLACK_ICON_EMOJI: ":github:"