parse and set the deployment-url

This commit is contained in:
GrantBirki 2023-12-07 22:48:10 -07:00
parent 11fa60953d
commit 97c920b38e
No known key found for this signature in database
GPG key ID: 96DF969ECBD266FE
3 changed files with 38 additions and 0 deletions

View file

@ -243,6 +243,31 @@ Now when you run your workflow, you will see the full output of the Wrangler com
> Note: the `command-stderr` output variable is also available if you need to parse the standard error output of the Wrangler command.
### Using the `deployment-url` Output Variable
If you are executing a Wrangler command that results in either a workers or pages deployment, you can utilize the `deployment-url` output variable to get the URL of the deployment. For example, if you want to print the deployment URL after deploying your application, you can do the following:
```yaml
- name: Deploy
id: deploy
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy --project-name=example
- name: print deployment-url
env:
DEPLOYMENT_URL: ${{ steps.deploy.outputs.deployment-url }}
run: echo $DEPLOYMENT_URL
```
The resulting output will look something like this:
```text
https://<your_pages_site>.pages.dev
```
## Troubleshooting
### "I just started using Workers/Wrangler and I don't know what this is!"

View file

@ -49,3 +49,5 @@ outputs:
description: "The output of the Wrangler command (comes from stdout)"
command-stderr:
description: "The error output of the Wrangler command (comes from stderr)"
deployment-url:
description: "If the command was a workers or pages deployment, this will be the URL of the deployment"

View file

@ -267,6 +267,17 @@ async function wranglerCommands() {
// Set the outputs for the command
setOutput("command-output", stdOut);
setOutput("command-stderr", stdErr);
// Check if this command is a workers or pages deployment
if (command.startsWith("deploy") || command.startsWith("publish")) {
// If this is a workers or pages deployment, try to extract the deployment URL
let deploymentUrl = "";
const deploymentUrlMatch = stdOut.match(/https?:\/\/[a-zA-Z0-9-\.\/]+/);
if (deploymentUrlMatch && deploymentUrlMatch[0]) {
deploymentUrl = deploymentUrlMatch[0].trim();
setOutput("deployment-url", deploymentUrl);
}
}
}
} finally {
endGroup();