WordPress / wordpress-playground

Run WordPress in the browser via WebAssembly PHP
https://w.org/playground/
GNU General Public License v2.0
1.6k stars 239 forks source link

Gutenberg PR Preview: Broken check for the build artifact availability #1568

Open WunderBart opened 2 months ago

WunderBart commented 2 months ago

The endpoint for checking the zipped build availability returns a different payload depending on the artifact availability, but it's always a 200:

Request Artifact unavailable Artifact available
Code 200 200
Payload JSON: { "error": "Request failed" } zip file

The code that validates the artifact availability checks only whether it's a 200 or not, meaning it always passes that check. The consequence is that a wrong error is thrown, which can be misleading:

JavaScript Error: Error when executing the blueprint step #2 ({"step":"writeFile","path":"/wordpress/pr/pr.zip","data":{"resource":"url","url":"/plugin-proxy.php?org=WordPress&repo=gutenberg&workflow=Build%20Gutenberg%20Plugin%20Zip&artifact=gutenberg-plugin&pr=59242","caption":"Downloading Gutenberg PR 59242"},"progress":{"weight":2,"caption":"Applying Gutenberg PR 59242"}}) : Could not download "/plugin-proxy.php?org=WordPress&repo=gutenberg&workflow=Build%20Gutenberg%20Plugin%20Zip&artifact=gutenberg-plugin&pr=59242".
Check if the URL is correct and the server is reachable.
If it is reachable, the server might be blocking the request.

The correct error thrown should be:

The PR 12345 does not exist or GitHub CI did not finish building it yet.
bgrgicak commented 1 month ago

@brandonpayton I could use your help with this one because it looks like a server issue.

Production

I get a 200 and an empty plugin-proxy.php is downloaded.

https://playground.wordpress.net/plugin-proxy.php?org=WordPress&repo=gutenberg&workflow=Build%20Gutenberg%20Plugin%20Zip&artifact=gutenberg-plugin&pr=59242&verify_only=true

Locally

Start a server:

cd packages/playground/website/public/
php -S localhost:4321 -d .

I get a 400 error as expected.

http://localhost:4321/plugin-proxy.php?org=WordPress&repo=gutenberg&workflow=Build%20Gutenberg%20Plugin%20Zip&artifact=gutenberg-plugin&pr=59242&verify_only=true