From 26f85d3a9e8e27b785c59f7ad5e87b94e866c5d2 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Mon, 21 Apr 2025 15:18:48 +0800 Subject: [PATCH] Add WordPress Playground GitHub Action --- .github/workflows/playground.yml | 88 ++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 .github/workflows/playground.yml diff --git a/.github/workflows/playground.yml b/.github/workflows/playground.yml new file mode 100644 index 0000000..ee87956 --- /dev/null +++ b/.github/workflows/playground.yml @@ -0,0 +1,88 @@ +name: WordPress Playground PR Testing + +# When to run tests. +on: + pull_request: + types: + - opened + - synchronize + +jobs: + build-and-deploy: + # Name. + name: WordPress Playground + + # Virtual Environment to use. + # @see: https://github.com/actions/virtual-environments + runs-on: ubuntu-latest + + # Define permissions for this action. + permissions: + id-token: write + contents: write + pull-requests: write + + # Environment Variables. + # Accessible by using ${{ env.NAME }} + # Use ${{ secrets.NAME }} to include any GitHub Secrets in ${{ env.NAME }} + # The base folder will always be /home/runner/work/github-repo-name/github-repo-name + env: + PLUGIN_SLUG: "integrate-convertkit-wpforms" # The plugin's slug + AWS_ROLE: "arn:aws:iam::048876701201:role/KitWPPluginBuildsRole" + AWS_ROLE_SESSION_NAME: "kit-wordpress" + AWS_BUCKET: "048876701201-kit-wp-plugin-builds" # The Amazon S3 bucket name + AWS_REGION: "us-east-2" # The Amazon S3 region + + # Steps to build and provide the Playground URL + steps: + # Checkout (copy) this repository's Plugin to this VM. + - name: Checkout Plugin + uses: actions/checkout@v4 + + # Installs Kit WordPress Libraries. + - name: Run Composer + run: composer install --no-dev + + # Configure AWS Credentials + - name: Configure AWS credentials + id: credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ env.AWS_ROLE }} + role-session-name: ${{ env.AWS_ROLE_SESSION_NAME }} + aws-region: ${{ env.AWS_REGION }} + + # Create ZIP file + - name: Create ZIP File + run: | + zip -r ${{ env.PLUGIN_SLUG }}.zip . -x ".git/*" ".github/*" ".scripts/*" ".wordpress-org/*" "log/*" "tests/*" "*.md" "*.yml" "*.json" "*.neon" "*.lock" "*.xml" "*.dist" "*.example" + + # Create base64 encoded version of blueprint JSON for Playground URL. + # See: https://wordpress.github.io/wordpress-playground/blueprints/using-blueprints#base64-encoded-blueprints + - name: Create Blueprint JSON, Base64 Encoded + id: blueprint + run: | + echo "blueprint_json_base64=$(echo -n '{"landingPage": "/wp-admin/index.php","login":true,"steps":[{"step":"installPlugin","pluginData":{"resource":"wordpress.org/plugins","slug":"wpforms-lite"}},{"step":"installPlugin","pluginData":{"resource":"url","url":"https://${{ env.AWS_BUCKET }}.s3.${{ env.AWS_REGION }}.amazonaws.com/${{ env.PLUGIN_SLUG }}/${{ github.event.pull_request.number }}/${{ env.PLUGIN_SLUG }}.zip"}}]}' | base64 -w 0)" >> $GITHUB_OUTPUT + + # Upload to S3 + - name: Upload to S3 + id: upload-s3 + run: | + aws s3 cp ${{ env.PLUGIN_SLUG }}.zip s3://${{ env.AWS_BUCKET }}/${{ env.PLUGIN_SLUG }}/${{ github.event.pull_request.number }}/${{ env.PLUGIN_SLUG }}.zip + + # Add comment to PR linking to Playground + - name: Comment on PR + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `## WordPress Playground + + :rocket: Your PR has been built and is ready for testing in WordPress Playground! + + [Click here to test your changes in WordPress Playground](https://playground.wordpress.net/#${{ steps.blueprint.outputs.blueprint_json_base64 }})` + }) \ No newline at end of file