mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
The new `concurrency` setting can be used to ensure only a single workflow run or job is in progress. When used in combination with the `cancel-in-progress` setting, incomplete workflow runs can be cancelled automatically to prevent running workflows unnecessarily. The workflows that take longer to run previously had this built into a step and utilized a 3rd-party action. Now that this is natively supported by GitHub Actions, using that is preferred. This option is currently in beta, but is stable enough to use in our workflows for the time being. Props ocean90. Fixes #53080. git-svn-id: https://develop.svn.wordpress.org/trunk@50930 602fd350-edb4-49c9-b593-d223f7449a82
167 lines
5.3 KiB
YAML
167 lines
5.3 KiB
YAML
name: Test NPM
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- trunk
|
|
- '3.[7-9]'
|
|
- '[4-9].[0-9]'
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
- trunk
|
|
- '3.[7-9]'
|
|
- '[4-9].[0-9]'
|
|
paths:
|
|
# These files configure NPM. Changes could affect the outcome.
|
|
- 'package*.json'
|
|
# JavaScript files are built using NPM.
|
|
- '**.js'
|
|
# CSS and SCSS files are built using NPM.
|
|
- '**.scss'
|
|
- '**.css'
|
|
# Changes to workflow files should always verify all workflows are successful.
|
|
- '.github/workflows/**.yml'
|
|
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
|
|
|
|
env:
|
|
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
|
|
|
|
jobs:
|
|
# Verifies that installing NPM dependencies and building WordPress works as expected.
|
|
#
|
|
# Performs the following steps:
|
|
# - Checks out the repository.
|
|
# - Logs debug information about the runner container.
|
|
# - Installs NodeJS 14.
|
|
# - Sets up caching for NPM.
|
|
# _ Installs NPM dependencies using install-changed to hash the `package.json` file.
|
|
# - Builds WordPress to run from the `build` directory.
|
|
# - Cleans up after building WordPress to the `build` directory.
|
|
# - Builds WordPress to run from the `src` directory.
|
|
# - Cleans up after building WordPress to the `src` directory.
|
|
test-npm:
|
|
name: Test NPM on ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ ubuntu-latest, windows-latest ]
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
|
|
|
|
- name: Log debug information
|
|
run: |
|
|
npm --version
|
|
node --version
|
|
curl --version
|
|
git --version
|
|
svn --version
|
|
|
|
- name: Install NodeJS
|
|
uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5
|
|
with:
|
|
node-version: 14
|
|
|
|
- name: Cache NodeJS modules (Ubuntu & MacOS)
|
|
uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4
|
|
if: ${{ matrix.os != 'windows-latest' }}
|
|
with:
|
|
path: ~/.npm
|
|
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
|
|
|
|
- name: Get NPM cache directory (Windows only)
|
|
if: ${{ matrix.os == 'windows-latest' }}
|
|
id: npm-cache
|
|
run: echo "::set-output name=dir::$(npm config get cache)"
|
|
|
|
- name: Cache NodeJS modules (Windows only)
|
|
uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4
|
|
if: ${{ matrix.os == 'windows-latest' }}
|
|
with:
|
|
path: ${{ steps.npm-cache.outputs.dir }}
|
|
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
|
|
|
|
- name: Install Dependencies
|
|
run: npm ci
|
|
|
|
- name: Build WordPress
|
|
run: npm run build
|
|
|
|
- name: Clean after building
|
|
run: npm run grunt clean
|
|
|
|
- name: Build WordPress in /src
|
|
run: npm run build:dev
|
|
|
|
- name: Clean after building in /src
|
|
run: npm run grunt clean -- --dev
|
|
|
|
# Verifies that installing NPM dependencies and building WordPress works as expected on MacOS.
|
|
#
|
|
# This is a separate job in order to that more strict conditions can be used.
|
|
#
|
|
# Performs the following steps:
|
|
# - Checks out the repository.
|
|
# - Logs debug information about the runner container.
|
|
# - Installs NodeJS 14.
|
|
# - Sets up caching for NPM.
|
|
# _ Installs NPM dependencies using install-changed to hash the `package.json` file.
|
|
# - Builds WordPress to run from the `build` directory.
|
|
# - Cleans up after building WordPress to the `build` directory.
|
|
# - Builds WordPress to run from the `src` directory.
|
|
# - Cleans up after building WordPress to the `src` directory.
|
|
test-npm-macos:
|
|
name: Test NPM on MacOS
|
|
runs-on: macos-latest
|
|
if: ${{ github.repository == 'WordPress/wordpress-develop' }}
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
|
|
|
|
- name: Log debug information
|
|
run: |
|
|
npm --version
|
|
node --version
|
|
curl --version
|
|
git --version
|
|
svn --version
|
|
|
|
- name: Install NodeJS
|
|
uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5
|
|
with:
|
|
node-version: 14
|
|
|
|
- name: Cache NodeJS modules
|
|
uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4
|
|
if: ${{ matrix.os != 'windows-latest' }}
|
|
with:
|
|
path: ~/.npm
|
|
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
|
|
|
|
- name: Install Dependencies
|
|
run: npm ci
|
|
|
|
- name: Build WordPress
|
|
run: npm run build
|
|
|
|
- name: Clean after building
|
|
run: npm run grunt clean
|
|
|
|
- name: Build WordPress in /src
|
|
run: npm run build:dev
|
|
|
|
- name: Clean after building in /src
|
|
run: npm run grunt clean -- --dev
|