-
Notifications
You must be signed in to change notification settings - Fork 805
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added a CI job for WPCloud testing of wpcomsh. #39258
base: trunk
Are you sure you want to change the base?
Changes from 18 commits
3a57a51
2ab2c4a
0d40db9
a8da4b4
a3a5533
8b74cdf
4df8ed7
b102738
27bbd07
aad27e3
9e892e4
dfb7439
bf302d5
8f1f194
df0ed81
3618211
510482f
747555d
cdff320
a60df09
4f4f451
f2ff12f
333469a
7de6b72
3ff1bea
131ac21
6b04ffa
738ee0b
e1dbc3e
88dc9a6
6189efa
b9de362
a6b8715
805d152
e482ee5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,142 @@ | ||||||
name: WPCloud Unit Testing for WPCOMSH | ||||||
|
||||||
on: | ||||||
pull_request: | ||||||
push: | ||||||
branches: ['trunk', '*/branch-*'] | ||||||
concurrency: | ||||||
group: wpcloud-${{ github.event_name }}-${{ github.ref }} | ||||||
cancel-in-progress: true | ||||||
|
||||||
jobs: | ||||||
build: | ||||||
name: Install the Monorepo and build wpcomsh | ||||||
runs-on: ubuntu-latest | ||||||
outputs: | ||||||
wpcomsh: ${{ steps.changed.outputs.wpcomsh }} | ||||||
steps: | ||||||
- uses: actions/checkout@v4 | ||||||
with: | ||||||
# codecov.io requires a fetch depth > 1. | ||||||
fetch-depth: 2 | ||||||
|
||||||
# For pull requests, list-changed-projects.sh needs the merge base. | ||||||
# But it doesn't have to be checked out. | ||||||
- name: Deepen to merge base | ||||||
if: github.event_name == 'pull_request' | ||||||
uses: ./.github/actions/deepen-to-merge-base | ||||||
with: | ||||||
checkout: false | ||||||
|
||||||
- name: Setup tools | ||||||
uses: ./.github/actions/tool-setup | ||||||
with: | ||||||
php: ${{ matrix.php }} | ||||||
node: ${{ matrix.node }} | ||||||
- name: Monorepo install | ||||||
run: | | ||||||
echo "::group::Pnpm" | ||||||
pnpm install | ||||||
echo "::endgroup::" | ||||||
- name: Detect if wpcomsh has changed | ||||||
id: changed | ||||||
run: | | ||||||
CHANGED="$(EXTRA=test .github/files/list-changed-projects.sh)" | ||||||
|
||||||
# WPCOMSH_CHANGED="$(jq --argjson changed "$CHANGED" -n '$changed | has( "plugins/wpcomsh" ) ')" | ||||||
WPCOMSH_CHANGED="true" | ||||||
echo "wpcomsh=${WPCOMSH_CHANGED}" >> "$GITHUB_OUTPUT" | ||||||
- name: Build wpcomsh | ||||||
if: steps.changed.outputs.wpcomsh == 'true' | ||||||
run: | | ||||||
find . -path ./.github -prune -o -type f -print | sort > /tmp/before.txt | ||||||
echo "::group::Installing and building wpcomsh" | ||||||
pnpm jetpack build -v --deps plugins/wpcomsh | ||||||
echo "::endgroup::" | ||||||
|
||||||
# We only want to save the files that were actually created or changed. | ||||||
# But we can't just list them for actions/cache/save, "Argument list too long". | ||||||
# So instead we delete all the unchanged files so we can tell actions/cache/save | ||||||
# to save everything that's left. | ||||||
git -c core.quotepath=off diff --name-only | sort > /tmp/changed.txt | ||||||
if [[ -s /tmp/changed.txt ]]; then | ||||||
grep -F -x -v -f /tmp/changed.txt /tmp/before.txt > /tmp/remove.txt | ||||||
else | ||||||
cp /tmp/before.txt /tmp/remove.txt | ||||||
fi | ||||||
xargs -d '\n' rm < /tmp/remove.txt | ||||||
find . -type d -empty -delete | ||||||
|
||||||
- name: Save wpcomsh build cache | ||||||
if: steps.changed.outputs.wpcomsh == 'true' | ||||||
id: wpcomsh-build-cache-save | ||||||
uses: actions/cache/save@v4 | ||||||
with: | ||||||
path: | | ||||||
. | ||||||
!./.github/ | ||||||
key: ${{ github.sha }} | ||||||
deploy: | ||||||
name: Run PHPUnit on the WPCloud test site | ||||||
runs-on: ubuntu-latest | ||||||
needs: build | ||||||
if: needs.build.changed.outputs.wpcomsh == 'true' | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oops, this is why it skipped this time.
Suggested change
|
||||||
steps: | ||||||
- uses: actions/checkout@v4 | ||||||
|
||||||
- name: Restore wpcomsh build cache | ||||||
id: wpcomsh-build-cache | ||||||
if: needs.build.result == 'success' | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we can leave out this line, it's there in the E2E workflow because the build might be skipped when it's going to run against Atomic or something.
Suggested change
|
||||||
uses: actions/cache/restore@v4 | ||||||
with: | ||||||
path: | | ||||||
. | ||||||
!./.github/ | ||||||
key: ${{ github.sha }} | ||||||
fail-on-cache-miss: true | ||||||
|
||||||
- name: Setup tools | ||||||
uses: ./.github/actions/tool-setup | ||||||
|
||||||
- name: Install monorepo | ||||||
run: | | ||||||
pnpm install | ||||||
|
||||||
- name: Configure Github to be able to SSH to the Atomic site | ||||||
run: | | ||||||
echo "::group::Intializing" | ||||||
|
||||||
mkdir -vp ~/.ssh/ | ||||||
chmod -v 700 ~/.ssh | ||||||
|
||||||
touch ~/.ssh/id_site | ||||||
touch ~/.ssh/known_hosts | ||||||
chmod 600 ~/.ssh/id_site | ||||||
chmod 600 ~/.ssh/known_hosts | ||||||
echo "$SSH_KEY" > ~/.ssh/id_site | ||||||
echo "wrote ~/.ssh/id_site" | ||||||
echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts | ||||||
echo "wrote ~/.ssh/known_hosts" | ||||||
|
||||||
echo "::endgroup::" | ||||||
|
||||||
echo "::group::Transferring wpcomsh to the testing server" | ||||||
pnpm jetpack rsync wpcomsh [email protected]:~/htdocs/wp-content/mu-plugins | ||||||
scp -r projects/plugins/wpcomsh/bin [email protected]:/srv/htdocs/wp-content/mu-plugins/wpcomsh | ||||||
scp -r projects/plugins/wpcomsh/tests [email protected]:/srv/htdocs/wp-content/mu-plugins/wpcomsh/ | ||||||
scp projects/plugins/wpcomsh/phpunit.xml.dist [email protected]:/srv/htdocs/wp-content/mu-plugins/wpcomsh/ | ||||||
|
||||||
echo "::engroup::" | ||||||
|
||||||
echo "::group::execution" | ||||||
ssh -i ~/.ssh/id_site [email protected] "~/htdocs/github-action-handler.sh" || CODE=$? | ||||||
echo "::endgroup::" | ||||||
|
||||||
echo "::group::teardown" | ||||||
rm -rvf ~/.ssh/ | ||||||
echo "::endgroup::" | ||||||
echo "Exiting with exit code $CODE" | ||||||
exit $CODE | ||||||
env: | ||||||
SSH_KEY: ${{ secrets.UPDATEJETPACKSTAGING_SSH_KEY }} | ||||||
SSH_KNOWN_HOSTS: ${{ secrets.UPDATEJETPACKSTAGING_SSH_KNOWN_HOSTS }} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
Significance: patch | ||
Type: fixed | ||
|
||
Fixed a database password escaping issue when installing tests. |
Check warning
Code scanning / CodeQL
Workflow does not contain permissions Medium