Amplify-console: Is there a way to programmatically access the deployment URL or the PR name?

Created on 31 Mar 2020  路  7Comments  路  Source: aws-amplify/amplify-console

* Please describe which feature you have a question about? *
Is there an env variable or way to access the app URL?

If not, is there a way to access the PR branch name in a web preview build.
For example,
https://pr-375.xxxxx.amplifyapp.com/
The only env variable I can see is "USER_BRANCH" which does not give me the 'pr-375` . Also, "AWS_BRANCH" is set to the branch where the PR came from.

* Provide additional details*

feature request

Most helpful comment

Thanks for the additional information. I'll look, but I don't think that will meet the needs. I don't see how I can have the build script "know" what PR # to use. For example, if there are multiple PR's out at the same time, or if the PR gets updated and the preview builds trigger again.

Even if I stored a PR number that incremented with each build, it could easily get out of sync.

It sounds like I may not be able to get the URL prefix for the given build. Maybe I should make this a feature request?

I'll +1 this feature request, I need it to build a proper URL to the build status page to send in a webhook during my builds.

@ganipcanot 's suggestion seems like a finicky way to find out which specific # a PR has. I kind of assumed AWS_BRANCH would be the one used in the PR previews, but as you mention, it's not.

A new env variable with the PR display name would be nice, perhaps it would only be set if the build in question is a PR preview?

All 7 comments

@jonvanausdeln Can you clarify here: Is your question specifically related to the PR preview feature, or just in general are you asking is there a way to programmatically access the app URL, or both?

Sorry, I just re-read my original post and it's confusing.

We have an app that in the code needs to know it's origin URL (e.g https://master.xxxx.amplifyapp.com", so I inject that at build time.

Ideally, I'd like to get the URL for all branches/PR previews. As of now, for normal branch builds, I hardcode part of the URL, and pull the URL prefix from "AWS_BRANCH". However, this doesn't work for PR previews as the "AWS_BRANCH" for those is not the URL prefix.

@jonvanausdeln For each pull request we will increment the number against that application so for example you will see something like "https://pr-#.appId.amplifyapp.com" where "#" goes from 1-n.

The appId in this case should be the same as the root application.

Does that help?

Ref:
image

image

Thanks for the appId info, that part makes senses.
And yes, I see that the URL prefix matches the pr #. I just don't see a way to know what that is for each given PR preview build.

It should automatically increment by 1 for each new PR. You may also be able to use the aws cli to fetch information programmatically if you wanted:

For example: https://docs.aws.amazon.com/cli/latest/reference/amplify/list-branches.html

someTerminalHostName % aws amplify list-branches --app-id <APP-ID> --region <REGION>
{
    "branches": [
        {
            "branchArn": "arn:aws:amplify:<REGION>:<ACCOUNT-ID>:apps/<APP-ID>/branches/master",
            "branchName": "master",
            "tags": {},
            "stage": "SomeStageNameHere",
            "displayName": "master",
            "enableNotification": false,
            "createTime": 1585679590.136,
            "updateTime": 1585868290.707,
            "environmentVariables": {
                "USER_BRANCH": "master"
            },
            "enableAutoBuild": true,
            "framework": "React - Amplify",
            "activeJobId": "0000000001",
            "totalNumberOfJobs": "0",
            "enableBasicAuth": false,
            "thumbnailUrl": "LongStringHere",
            "ttl": "5",
            "enablePullRequestPreview": true,
            "backendEnvironmentArn": "arn:aws:amplify:<REGION>:<ACCOUNT-ID>:apps/<APP-ID>/backendenvironments/master"
        },
        {
            "branchArn": "arn:aws:amplify:<REGION>:<ACCOUNT-ID>:apps/<APP-ID>/branches/pr-8",
            "branchName": "pr-8",
            "description": "-",
            "tags": {},
            "stage": "PULL_REQUEST",
            "displayName": "pr-8",
            "enableNotification": false,
            "createTime": 1585869975.688,
            "updateTime": 1585870632.529,
            "environmentVariables": {
                "USER_BRANCH": "pri"
            },
            "enableAutoBuild": true,
            "activeJobId": "0000000002",
            "totalNumberOfJobs": "0",
            "enableBasicAuth": false,
            "thumbnailUrl": "LongStringHere",
            "ttl": "5",
            "associatedResources": [
                "arn:aws:cloudformation:<REGION>:<ACCOUNT-ID>:stack/stackName/HexNumbers"
            ],
            "destinationBranch": "master",
            "sourceBranch": "testpr",
            "backendEnvironmentArn": "arn:aws:amplify:<REGION>:<ACCOUNT-ID>:apps/<APP-ID>/backendenvironments/pri"
        }
    ]
}

Thanks for the additional information. I'll look, but I don't think that will meet the needs. I don't see how I can have the build script "know" what PR # to use. For example, if there are multiple PR's out at the same time, or if the PR gets updated and the preview builds trigger again.

Even if I stored a PR number that incremented with each build, it could easily get out of sync.

It sounds like I may not be able to get the URL prefix for the given build. Maybe I should make this a feature request?

Thanks for the additional information. I'll look, but I don't think that will meet the needs. I don't see how I can have the build script "know" what PR # to use. For example, if there are multiple PR's out at the same time, or if the PR gets updated and the preview builds trigger again.

Even if I stored a PR number that incremented with each build, it could easily get out of sync.

It sounds like I may not be able to get the URL prefix for the given build. Maybe I should make this a feature request?

I'll +1 this feature request, I need it to build a proper URL to the build status page to send in a webhook during my builds.

@ganipcanot 's suggestion seems like a finicky way to find out which specific # a PR has. I kind of assumed AWS_BRANCH would be the one used in the PR previews, but as you mention, it's not.

A new env variable with the PR display name would be nice, perhaps it would only be set if the build in question is a PR preview?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

lucaluke88 picture lucaluke88  路  4Comments

AustinZhu picture AustinZhu  路  4Comments

helloPiers picture helloPiers  路  3Comments

adamaltman picture adamaltman  路  3Comments

gherrera-gesintel picture gherrera-gesintel  路  4Comments