Skip to content

Add live playground links using woocommerce as inspiration #2

Add live playground links using woocommerce as inspiration

Add live playground links using woocommerce as inspiration #2

name: Build Live Branch
on:
pull_request:
types:
- opened
- reopened
- synchronize
- ready_for_review
paths-ignore:
- 'docs/**'
- 'examples/**'
- 'bin/**'
- '**/tests/**'
- '**/*.md'
- '.github/**'
- '!.github/workflows/pr-build-live-branch.yml'
concurrency:
# Cancel concurrent jobs on pull_request but not push, by including the run_id in the concurrency group for the latter.
group: build-${{ github.event_name == 'push' && github.run_id || 'pr' }}-${{ github.ref }}
cancel-in-progress: true
env:
FORCE_COLOR: 1
permissions: {}
jobs:
build:
if: github.repository_owner == 'Automattic' && github.event.pull_request.draft == false && github.event.pull_request.user.login != 'github-actions[bot]'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
repository-projects: write
id-token: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get current version
id: version
uses: actions/[email protected]
with:
script:
const { getVersion } = require( './.github/workflows/scripts/get-plugin-version' );
const version = await getVersion( 'remote-data-blocks' );
core.setOutput( 'version', version );
- name: Prepare plugin zips
id: prepare
env:
CURRENT_VERSION: ${{ steps.version.outputs.version }}
run: |
# Current version must compare greater than any previously used current version for this PR.
# Assume GH run IDs are monotonic.
VERSUFFIX="${GITHUB_RUN_ID}-g$(git rev-parse --short HEAD)"
CURRENT_VERSION="$CURRENT_VERSION-$VERSUFFIX"
sed -i -e 's/Version: .*$/Version: '"$CURRENT_VERSION"'/' "$GITHUB_WORKSPACE/remote-data-blocks.php"
echo "$CURRENT_VERSION" > "$GITHUB_WORKSPACE/version.txt"
echo "Generating zip file..."
cd "$GITHUB_WORKSPACE" || exit
ls -la
cd ../
zip -q -r -9 "remote-data-blocks.zip" "remote-data-blocks/"
mkdir "$GITHUB_WORKSPACE/zips"
mv "remote-data-blocks.zip" "$GITHUB_WORKSPACE/zips/remote-data-blocks.zip"
mkdir -p "$GITHUB_WORKSPACE/unzips/remote-data-blocks"
cd "$GITHUB_WORKSPACE/zips"
unzip -qq remote-data-blocks.zip
mv "$GITHUB_WORKSPACE/zips/remote-data-blocks" "$GITHUB_WORKSPACE/unzips/remote-data-blocks/remote-data-blocks"
# Plugin data is passed as a JSON object.
PLUGIN_DATA="{}"
PLUGIN_DATA=$( jq -c --arg slug "remote-data-blocks" --arg ver "$CURRENT_VERSION" '.[ $slug ] = { version: $ver }' <<<"$PLUGIN_DATA" )
echo "plugin-data=$PLUGIN_DATA" >> $GITHUB_OUTPUT
- name: Create plugins artifact
uses: actions/upload-artifact@v4
if: steps.prepare.outputs.plugin-data != '{}'
with:
name: plugins
path: zips
# Only need to retain for a day since the beta builder slurps it up to distribute.
retention-days: 1
- name: Create playground artifact
uses: actions/upload-artifact@v4
if: steps.prepare.outputs.plugin-data != '{}'
with:
name: plugins-${{ github.run_id }}
path: unzips/remote-data-blocks
retention-days: 30
- name: Comment on PR with WordPress Playground details
uses: actions/github-script@v7
if: steps.prepare.outputs.plugin-data != '{}' && ! github.event.pull_request.head.repo.fork
with:
script: |
const { run } = require('./.github/workflows/scripts/generate-playground-blueprint');
run({ github, context, core });