diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000000..d211f1247874e --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,67 @@ +name: Build WordPress + +on: + pull_request: + workflow_dispatch: + +# Cancels all previous workflow runs for pull requests that have not completed. +concurrency: + # The concurrency group contains the workflow name and the branch name for pull requests + # or the commit hash for any other events. + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} + cancel-in-progress: true + +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} + +# Exposes WordPress builds as a GitHub artifact to enable +# previewing Pull Requests inside WordPress Playground. +# +# @see https://github.com/WordPress/wordpress-playground/pull/700 +# @see https://github.com/WordPress/wordpress-develop/pull/5481 +jobs: + build-wordpress: + name: Upload WordPress build as an artifact + runs-on: ubuntu-latest + permissions: + contents: read + timeout-minutes: 20 + if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }} + + steps: + - name: Checkout repository + uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + with: + show-progress: ${{ runner.debug == '1' && 'true' || 'false' }} + + - name: Set up Node.js + uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3.8.1 + with: + node-version-file: '.nvmrc' + cache: npm + + - name: Log debug information + run: | + npm --version + node --version + curl --version + git --version + svn --version + + - name: Install npm Dependencies + run: npm ci + + - name: Build WordPress + run: npm run build + + - name: Zip WordPress build + run: cd build && zip -r wordpress.zip . + + - name: Upload the build directory as GitHub artifact + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + if: always() + with: + name: wordpress-build-${{ github.event_name == 'pull_request' && github.event.number || github.sha }} + path: build/wordpress.zip + if-no-files-found: error