Skip to content

Commit

Permalink
Merge branch 'trunk' into delete/help-center-styles
Browse files Browse the repository at this point in the history
  • Loading branch information
alshakero authored Aug 29, 2024
2 parents 0205c9c + 48ac019 commit 5084a52
Show file tree
Hide file tree
Showing 2,232 changed files with 30,644 additions and 25,649 deletions.
2 changes: 1 addition & 1 deletion .github/actions/tool-setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ runs:
- name: Setup pnpm
if: steps.versions.outputs.node-version != 'false'
uses: pnpm/action-setup@v3.0.0
uses: pnpm/action-setup@v4.0.0
with:
version: ${{ steps.versions.outputs.pnpm-version }}
- name: Setup Node
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ const getCheckComments = require( './get-check-comments.js' );
* meaning that Jetpack is being built. Or `packages/jetpack-mu-wpcom`,
* for the jetpack-mu-wpcom-plugin used on WordPress.com is being built.
*
* @param {GitHub} github - Initialized Octokit REST client.
* @param {string} owner - Repository owner.
* @param {string} repo - Repository name.
* @param {string} number - PR number.
* @param {Core} core - A reference to the @actions/core package
* @returns {Promise} Promise resolving to an array of project strings needing testing.
* @param {GitHub} github - Initialized Octokit REST client.
* @param {string} owner - Repository owner.
* @param {string} repo - Repository name.
* @param {string} number - PR number.
* @param {Core} core - A reference to the @actions/core package
* @return {Promise} Promise resolving to an array of project strings needing testing.
*/
async function touchedProjectsNeedingTesting( github, owner, repo, number, core ) {
const changed = JSON.parse( process.env.CHANGED );
Expand Down Expand Up @@ -46,7 +46,7 @@ async function touchedProjectsNeedingTesting( github, owner, repo, number, core
* @param {github} github - Pre-authenticated octokit/rest.js client with pagination plugins
* @param {object} context - Context of the workflow run
* @param {core} core - A reference to the @actions/core package
* @returns {Promise} Promise resolving to an object with the following properties:
* @return {Promise} Promise resolving to an object with the following properties:
* - {commentId} - a comment ID, or 0 if no comment is found.
* - {projects} - an array of project strings needing testing.
*/
Expand Down
6 changes: 3 additions & 3 deletions .github/files/build-reminder-comment/get-check-comments.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const cache = {};
* @param {string} number - Issue number.
* @param {string} testCommentIndicator - A piece of text unique to all test reminder comments.
* @param {core} core - A reference to the @actions/core package
* @returns {Promise<Array>} Promise resolving to an array of comment IDs.
* @return {Promise<Array>} Promise resolving to an array of comment IDs.
*/
async function getCheckComments( github, owner, repo, number, testCommentIndicator, core ) {
const testCommentIDs = [];
Expand All @@ -30,11 +30,11 @@ async function getCheckComments( github, owner, repo, number, testCommentIndicat
issue_number: +number,
per_page: 100,
} ) ) {
response.data.map( comment => {
for ( const comment of response.data ) {
if ( comment.body.includes( testCommentIndicator ) ) {
testCommentIDs.push( comment.id );
}
} );
}
}

cache[ cacheKey ] = testCommentIDs;
Expand Down
169 changes: 89 additions & 80 deletions .github/files/gh-autorelease/files/autorelease.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,42 @@

set -eo pipefail

: "${GH_TOKEN:?Build argument needs to be set and non-empty.}"
: "${GITHUB_REF:?Build argument needs to be set and non-empty.}"
: "${GITHUB_SHA:?Build argument needs to be set and non-empty.}"
: "${API_TOKEN_GITHUB:?Build argument needs to be set and non-empty.}"
: "${GITHUB_API_URL:?Build argument needs to be set and non-empty.}"
: "${GITHUB_REPOSITORY:?Build argument needs to be set and non-empty.}"

## Determine tag
if [[ ! "$GITHUB_REF" =~ ^refs/tags/v?[0-9]+(\.[0-9]+)+(-[a-z0-9._-]+)?$ ]]; then
echo "::error::Expected GITHUB_REF like \`refs/tags/v1.2.3\` or \`refs/tags/1.2.3\`, got \`$GITHUB_REF\`"
if [[ ! -f composer.json ]]; then
echo '::error::No composer.json. Did it get excluded from the mirror?'
exit 1
fi
TAG="${GITHUB_REF#refs/tags/}"

## Check for alphas
if [[ "$TAG" =~ -(alpha|a\.[0-9]*[02468])$ ]]; then
echo "Not creating a release for alpha version $TAG"
exit 0
fi
echo "Creating release for $TAG"
## Determine tag
ROLLING_MODE=
if [[ "$GITHUB_REF" =~ ^refs/tags/v?[0-9]+(\.[0-9]+)+(-[a-z0-9._-]+)?$ ]]; then
TAG="${GITHUB_REF#refs/tags/}"

## Determine slug and title format.
if [[ ! -f composer.json ]]; then
echo '::error::No composer.json. Did it get excluded from the mirror?'
## Check for alphas
if [[ "$TAG" =~ -(alpha|a\.[0-9]*[02468])$ ]]; then
echo "Not creating a release for alpha version $TAG"
exit 0
fi
elif [[ "$GITHUB_REF" == "refs/heads/trunk" ]]; then
if ! jq -e '.extra.autorelease["rolling-release"]? // false' composer.json > /dev/null; then
echo "::notice::Skipping trunk release because autorelease rolling mode is not enabled."
exit 0
fi
ROLLING_MODE=true
CURRENT_VER=$( sed -nEe 's/^## \[?([^]]*)\]? - .*/\1/;T;p;q' CHANGELOG.md || true )
GIT_SUFFIX=$( git log -1 --format=%h . )
TAG="$CURRENT_VER+rolling.$GIT_SUFFIX"
else
echo "::error::Expected GITHUB_REF like \`refs/tags/v1.2.3\` or \`refs/tags/1.2.3\` or \`refs/heads/trunk\` for rolling releases, got \`$GITHUB_REF\`"
exit 1
fi

echo "Creating release for $TAG"

## Determine slug and title format.
SLUG="$(jq -r '.extra.autorelease.slug? // .extra["wp-plugin-slug"] // .extra["beta-plugin-slug"] // ( .name | sub( "^.*/"; "" ) )' composer.json)"
if [[ -z "$SLUG" ]]; then
echo '::error::Failed to get slug from composer.json.'
Expand All @@ -48,76 +58,75 @@ echo "::group::Creating $SLUG.zip"
git archive -v --output="$SLUG.zip" --prefix="$SLUG/" HEAD 2>&1
echo "::endgroup::"

## Create the release note.
# Extract the changelog section.
echo "::group::Extracting release notes"
if [[ ! -f CHANGELOG.md ]]; then
echo '::endgroup::'
echo '::error::No CHANGELOG.md for release notes.'
exit 1
fi
SCRIPT="
/^## \\[?$(sed 's/[.\[\]\\*^$\/()+?{}|]/\\&/g' <<<"${TAG#v}")\\]? - / {
bc
if [[ -z "$ROLLING_MODE" ]]; then
## Create the release note.
# Extract the changelog section.
echo "::group::Extracting release notes"
if [[ ! -f CHANGELOG.md ]]; then
echo '::endgroup::'
echo '::error::No CHANGELOG.md for release notes.'
exit 1
fi
SCRIPT="
/^## \\[?$(sed 's/[.\[\]\\*^$\/()+?{}|]/\\&/g' <<<"${TAG#v}")\\]? - / {
bc
:a
n
/^## / {
q
}
:c
s/^## \[([^]]+)\]/## \1/
p
ba
}
"
ENTRY=$(sed -n -E -e "$SCRIPT" CHANGELOG.md)
if [[ -z "$ENTRY" ]]; then
echo '::endgroup::'
echo "::error::Failed to find section for ${TAG#v} in CHANGELOG.md"
exit 1
fi

# Strip unwanted sections.
SCRIPT="
:a
n
/^## / {
q
/^### .* This section will not be copied to readme\.txt/ {
:b
n
/^#/ ba
bb
}
:c
s/^## \[([^]]+)\]/## \1/
p
ba
}
"
ENTRY=$(sed -n -E -e "$SCRIPT" CHANGELOG.md)
if [[ -z "$ENTRY" ]]; then
echo '::endgroup::'
echo "::error::Failed to find section for ${TAG#v} in CHANGELOG.md"
exit 1
"
ENTRY=$(sed -n -E -e "$SCRIPT" <<<"$ENTRY")

echo "Release notes:"
echo "-----"
echo "$ENTRY"
echo "-----"
echo "::endgroup::"
else
## Using a brief explanation for the rolling release note.
ENTRY="### Rolling release based on the trunk branch."
fi

if [[ -n "$ROLLING_MODE" ]]; then
echo "::group::Deleting stale rolling release"

for R in $( gh release list --limit 100 --json tagName --jq '.[].tagName | select( contains( "rolling" ) )' ); do
echo "Found $R, deleting"
gh release delete "$R" --cleanup-tag --yes
done

echo "::endgroup::"
fi

# Strip unwanted sections.
SCRIPT="
:a
/^### .* This section will not be copied to readme\.txt/ {
:b
n
/^#/ ba
bb
}
p
"
ENTRY=$(sed -n -E -e "$SCRIPT" <<<"$ENTRY")

echo "Release notes:"
echo "-----"
echo "$ENTRY"
echo "-----"
echo "::endgroup::"

echo "::group::Creating release"
curl -v -L \
--write-out '%{response_code}' \
--output out.json \
--request POST \
--header "authorization: Bearer $API_TOKEN_GITHUB" \
--header 'content-type: application/json' \
--header 'accept: application/vnd.github.v3+json' \
--url "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases" \
--data "$(jq -n --arg tag "$TAG" --arg sha "$GITHUB_SHA" --arg title "$TITLE" --arg body "$ENTRY" '{ tag_name: $tag, target_commitish: $sha, name: $title, body: $body}')" \
2>&1 > code.txt
cat out.json
echo
[[ "$(<code.txt)" =~ ^2[0-9][0-9]$ ]] || exit 1
echo "::endgroup::"
gh release create "$TAG" "$SLUG.zip" \
--notes "$ENTRY" \
--target "$GITHUB_SHA" \
--title "$TITLE"

echo "::group::Uploading artifact to release"
curl -v --fail -L \
--request POST \
--header "authorization: Bearer $API_TOKEN_GITHUB" \
--header "content-type: application/zip" \
--url "$(jq -r '.upload_url | sub( "{\\?[^}]*}$"; "" )' out.json)?name=$SLUG.zip" \
--data-binary "@$SLUG.zip" \
2>&1
echo "::endgroup::"
4 changes: 3 additions & 1 deletion .github/files/gh-autorelease/workflows/autorelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ on:
- 'v?[0-9]+.[0-9]+.[0-9]+-*'
- 'v?[0-9]+.[0-9]+.[0-9]+.[0-9]+'
- 'v?[0-9]+.[0-9]+.[0-9]+.[0-9]+-*'
branches:
- 'trunk'

jobs:
publish:
Expand All @@ -18,5 +20,5 @@ jobs:
- uses: actions/checkout@v4
- name: Create release
env:
API_TOKEN_GITHUB: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./.github/files/autorelease.sh
13 changes: 0 additions & 13 deletions .github/files/pr-update-to.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,6 @@ function update_tag {
cd $(dirname "${BASH_SOURCE[0]}")/../..
BASE="$PWD"

# If this commit updated a changelog, assume it was a release and update the tag.
echo "Checking for changes to changelogs..."
FILES=()
for FILE in projects/*/*/composer.json; do
PROJECT="${FILE%/composer.json}"
cd "$BASE/$PROJECT"
FILES+=( "$(realpath -m --relative-to="$BASE" "$(jq -r '.extra.changelogger.changelog // "CHANGELOG.md"' composer.json)")" )
done
cd "$BASE"
for F in $(git -c core.quotepath=off diff --name-only HEAD^..HEAD "${FILES[@]}"); do
update_tag "pr-update-to-${F%/*}"
done

# If this commit changed tool versions, update the tag so PRs get rechecked with the new versions.
echo "Checking for changes to .github/versions.sh..."
git diff --exit-code --name-only HEAD^..HEAD .github/versions.sh || update_tag "pr-update-to"
Expand Down
11 changes: 1 addition & 10 deletions .github/files/renovate-post-upgrade.sh
Original file line number Diff line number Diff line change
Expand Up @@ -60,16 +60,7 @@ for DIR in $(git -c core.quotepath=off diff --name-only HEAD | sed -nE 's!^(proj
echo "Adding change file for $SLUG"
cd "$DIR"

CHANGES_DIR="$(jq -r '.extra.changelogger["changes-dir"] // "changelog"' composer.json)"
if [[ -d "$CHANGES_DIR" && "$(ls -- "$CHANGES_DIR")" ]]; then
changelogger_add 'Updated package dependencies.' '' --filename="${CHANGEFILE}" --filename-auto-suffix
else
changelogger_add 'Updated package dependencies.' '' --filename="${CHANGEFILE}" --filename-auto-suffix
echo "Updating version for $SLUG"
PRERELEASE=$(alpha_tag composer.json 0)
VER=$(changelogger version next --default-first-version --prerelease="$PRERELEASE") || { echo "$VER"; exit 1; }
"$BASE/tools/project-version.sh" -u "$VER" "$SLUG"
fi
changelogger_add 'Updated package dependencies.' '' --filename="${CHANGEFILE}" --filename-auto-suffix
cd "$BASE"
done

Expand Down
18 changes: 10 additions & 8 deletions .github/workflows/block-performance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ name: Jetpack block performance
on:
schedule:
- cron: '0 */12 * * *'
workflow_dispatch:

env:
# Work around a bug in node 18.18.0. See https://github.com/webpack-contrib/thread-loader/issues/191 for details.
Expand All @@ -18,27 +19,27 @@ jobs:

- uses: actions/setup-node@v4
with:
node-version: 16
node-version: 20

- uses: actions/checkout@v4
with:
repository: 'WordPress/gutenberg'
path: 'gutenberg'

- name: Build Gutenberg
working-directory: gutenberg
run: |
npm ci
npx playwright install chromium --with-deps
npm run build:packages
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('gutenberg/**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Build Gutenberg
working-directory: gutenberg
run: |
npm ci
npx playwright install chromium --with-deps
npm run build:packages
- name: Setup tools for J
uses: ./.github/actions/tool-setup

Expand Down Expand Up @@ -87,6 +88,7 @@ jobs:
with:
name: test-output-block-perf
path: tools/e2e-commons/results
include-hidden-files: true

test-reports:
name: "Trigger test report workflow"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ jobs:
org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/trunk/tools/docker/README.md
- name: Build and push Docker image
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: tools/docker
platforms: linux/amd64,linux/arm64
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,7 @@ jobs:
with:
name: test-output-${{ matrix.project }}
path: ${{ matrix.path }}/output
include-hidden-files: true

test-report:
name: "Test report"
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,7 @@ jobs:
with:
name: ${{ matrix.artifact }}
path: artifacts
include-hidden-files: true
retention-days: 7

storybook-test:
Expand Down
2 changes: 1 addition & 1 deletion .husky/pre-push
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
if test -c /dev/tty && sh -c ': < /dev/tty' >/dev/null 2>/dev/null; then
exec < /dev/tty
fi
node tools/js-tools/git-hooks/pre-push-hook.js
node tools/js-tools/git-hooks/pre-push-hook.mjs
Loading

0 comments on commit 5084a52

Please sign in to comment.