[Snyk] Fix for 1 vulnerabilities #19
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Performance Tests | |
on: | |
pull_request: | |
release: | |
types: [published] | |
push: | |
branches: [trunk] | |
# 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 | |
jobs: | |
performance: | |
name: Run performance tests | |
runs-on: ubuntu-latest | |
if: ${{ github.repository == 'WordPress/gutenberg' }} | |
steps: | |
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | |
- name: Use desired version of NodeJS | |
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 | |
with: | |
node-version-file: '.nvmrc' | |
cache: npm | |
- name: Npm install | |
run: | | |
npm ci | |
- name: Install specific versions of the themes used in tests | |
run: | | |
npm run wp-env start | |
npm run wp-env -- run tests-cli "wp theme update twentytwentyone --version=1.7" | |
npm run wp-env -- run tests-cli "wp theme update twentytwentythree --version=1.0" | |
npm run wp-env stop | |
- name: Compare performance with trunk | |
if: github.event_name == 'pull_request' | |
run: ./bin/plugin/cli.js perf $GITHUB_SHA trunk --tests-branch $GITHUB_SHA | |
- name: Store performance measurements | |
if: github.event_name == 'pull_request' | |
uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1 | |
with: | |
name: perf-test-results | |
path: ./__test-results/*.json | |
- name: Compare performance with current WordPress Core and previous Gutenberg versions | |
if: github.event_name == 'release' | |
env: | |
PLUGIN_VERSION: ${{ github.event.release.name }} | |
shell: bash | |
run: | | |
IFS=. read -ra PLUGIN_VERSION_ARRAY <<< "$PLUGIN_VERSION" | |
CURRENT_RELEASE_BRANCH="release/${PLUGIN_VERSION_ARRAY[0]}.${PLUGIN_VERSION_ARRAY[1]}" | |
PREVIOUS_VERSION_BASE_10=$((PLUGIN_VERSION_ARRAY[0] * 10 + PLUGIN_VERSION_ARRAY[1] - 1)) | |
PREVIOUS_RELEASE_BRANCH="release/$((PREVIOUS_VERSION_BASE_10 / 10)).$((PREVIOUS_VERSION_BASE_10 % 10))" | |
WP_VERSION=$(awk -F ': ' '/^Tested up to/{print $2}' readme.txt) | |
IFS=. read -ra WP_VERSION_ARRAY <<< "$WP_VERSION" | |
WP_MAJOR="${WP_VERSION_ARRAY[0]}.${WP_VERSION_ARRAY[1]}" | |
./bin/plugin/cli.js perf "wp/$WP_MAJOR" "$PREVIOUS_RELEASE_BRANCH" "$CURRENT_RELEASE_BRANCH" --wp-version "$WP_MAJOR" | |
- name: Compare performance with base branch | |
if: github.event_name == 'push' | |
# The base hash used here need to be a commit that is compatible with the current WP version | |
# The current one is debd225d007f4e441ceec80fbd6fa96653f94737 and it needs to be updated every WP major release. | |
# It is used as a base comparison point to avoid fluctuation in the performance metrics. | |
run: | | |
WP_VERSION=$(awk -F ': ' '/^Tested up to/{print $2}' readme.txt) | |
IFS=. read -ra WP_VERSION_ARRAY <<< "$WP_VERSION" | |
WP_MAJOR="${WP_VERSION_ARRAY[0]}.${WP_VERSION_ARRAY[1]}" | |
./bin/plugin/cli.js perf $GITHUB_SHA debd225d007f4e441ceec80fbd6fa96653f94737 --tests-branch $GITHUB_SHA --wp-version "$WP_MAJOR" | |
- uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0 | |
if: github.event_name == 'push' | |
id: commit-timestamp | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
const commit_details = await github.rest.git.getCommit({owner: context.repo.owner, repo: context.repo.repo, commit_sha: context.sha}); | |
return parseInt((new Date( commit_details.data.author.date ).getTime() / 1000).toFixed(0)) | |
- name: Publish performance results | |
if: github.event_name == 'push' | |
env: | |
COMMITTED_AT: ${{ steps.commit-timestamp.outputs.result }} | |
CODEHEALTH_PROJECT_TOKEN: ${{ secrets.CODEHEALTH_PROJECT_TOKEN }} | |
run: ./bin/log-performance-results.js $CODEHEALTH_PROJECT_TOKEN trunk $GITHUB_SHA debd225d007f4e441ceec80fbd6fa96653f94737 $COMMITTED_AT |