Make WordPress Core

Changeset 57124


Ignore:
Timestamp:
11/17/2023 06:22:49 PM (6 months ago)
Author:
desrosj
Message:

Build/Test Tools: Comment on PRs with WordPress Playground information.

After [56958], pull requests to wordpress-develop can be tested within a WordPress Playground instance. However this capability is not obvious.

This makes several updates to GitHub action workflows to avoid unnecessary extra runs/jobs while also commenting on pull requests with proper context for testing in Playground once a build is available for the PR.

Changes:

  • The build.yml workflow has been deleted. The WordPress build process is already being tested within the test-build-processes.yml workflow. Now that workflow will produce and upload the built artifact for the given PR.
  • A pull-request-comments.yml workflow has been added to handle the commenting. To avoid having multiple workflows that comment on PRs, the logic within the welcome-new-contributors.yml workflow has been merged into this one.
  • The pull_request event trigger lacks the needed permission to comment on or update pull requests. Instead of using pull_request_target to navigate around this, the test-build-processes.yml workflow will now use workflow_dispatch to initiate a run of the commenting workflow. This adds the ability to only comment on the PR when a build has been successfully created and uploaded as an artifact.

Props swissspidy, zieladam, jeffpaul.
See #59416.

Location:
trunk/.github/workflows
Files:
1 added
2 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/.github/workflows/callable-test-core-build-process.yml

    r56976 r57124  
    3333  # - Cleans up after building WordPress.
    3434  # - Ensures version-controlled files are not modified or deleted.
     35  # - Creates a ZIP of the built WordPress files (when building to the build directory).
     36  # - Uploads the ZIP as a GitHub Actions artifact (when building to the build directory).
    3537  build-process-tests:
    3638    name: Core running from ${{ inputs.directory }} / ${{ inputs.os == 'macos-latest' && 'MacOS' || inputs.os == 'windows-latest' && 'Windows' || 'Linux' }}
     
    7274      - name: Ensure version-controlled files are not modified or deleted during cleaning
    7375        run: git diff --exit-code
     76
     77      - name: Create ZIP of built files
     78        if: ${{ inputs.directory == 'build' && 'ubuntu-latest' == inputs.os }}
     79        run: zip -r wordpress.zip build/.
     80
     81      - name: Upload ZIP as a GitHub Actions artifact
     82        uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
     83        if: ${{ inputs.directory == 'build' && 'ubuntu-latest' == inputs.os }}
     84        with:
     85          name: wordpress-build-${{ github.event_name == 'pull_request' && github.event.number || github.sha }}
     86          path: wordpress.zip
     87          if-no-files-found: error
  • trunk/.github/workflows/test-build-processes.yml

    r56977 r57124  
    1515      - '3.[7-9]'
    1616      - '[4-9].[0-9]'
    17     paths:
    18       # These files configure npm. Changes could affect the outcome.
    19       - 'package*.json'
    20       # JavaScript files are built using npm.
    21       - '**.js'
    22       # CSS and SCSS files are built using npm.
    23       - '**.scss'
    24       - '**.css'
    25       # Changes to workflow files should always verify all workflows are successful.
    26       - '.github/workflows/**.yml'
    2717  workflow_dispatch:
    2818
     
    117107      directory: ${{ matrix.directory }}
    118108
     109  # Calls the Pull Request Commenting workflow to leave a comment detailing how to test the PR within WordPress Playground.
     110  playground-comment:
     111    name: Leave WordPress Playground details
     112    runs-on: ubuntu-latest
     113    permissions:
     114      actions: write
     115    needs: [ test-core-build-process, test-core-build-process-macos, test-gutenberg-build-process, test-gutenberg-build-process-macos ]
     116    if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name == 'pull_request' }}
     117
     118    steps:
     119      - name: Dispatch workflow run
     120        uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
     121        with:
     122          retries: 2
     123          retry-exempt-status-codes: 418
     124          script: |
     125            github.rest.actions.createWorkflowDispatch({
     126              owner: context.repo.owner,
     127              repo: context.repo.repo,
     128              workflow_id: 'pull-request-comments.yml',
     129              ref: 'trunk',
     130              inputs: {
     131                pr_number: '${{ github.event.number }}'
     132              }
     133            });
     134
    119135  slack-notifications:
    120136    name: Slack Notifications
     
    123139      actions: read
    124140      contents: read
    125     needs: [ test-core-build-process, test-core-build-process-macos, test-gutenberg-build-process, test-gutenberg-build-process-macos ]
     141    needs: [ test-core-build-process, test-core-build-process-macos, test-gutenberg-build-process, test-gutenberg-build-process-macos, playground-comment ]
    126142    if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
    127143    with:
     
    138154    permissions:
    139155      actions: write
    140     needs: [ slack-notifications ]
     156    needs: [ playground-comment ]
    141157    if: |
    142158      always() &&
Note: See TracChangeset for help on using the changeset viewer.