Waypoint
Create an action
For day 1 operations, HCP Waypoint lets you create templates to define common infrastructure patterns and add-ons to let users add modular components to their applications. After an application is deployed and running, users may need to perform day 2 operations to maintain their application, such as rotate secrets, rebuild a database index, or flush an application's cache.
HCP Waypoint actions let platform engineers standardize and expose day 2 operations to developers, so application developers can run these operations quickly and safely.
In this tutorial, you will create an HCP Waypoint action to merge a development branch in the main branch of your GitHub repository and deploy a new version of the static website.
Prerequisites
To complete this tutorial, you will need the following:
- A HashiCorp Cloud Platform (HCP) account with HCP Terraform Standard tier subscription.
- A GitHub account and a personal access token with repoanddelete_repopermissions.
This tutorial builds on the Use a Waypoint template tutorial. You must complete it before you start this tutorial.
Create a Waypoint action
Log in to HCP and navigate to the Waypoint page. Click on the Actions option from the left navigation and then click on the Create an action button.
Enter the following information for the action:
| Field | Value | 
|---|---|
| Action name | Merge Branch | 
| Description | Merge the specific branch into the main branch | 
Under Variables, create the follow variables:
| Key | Value | Sensitive | Enable this value to be defined when the action is triggered | 
|---|---|---|---|
| branch | dev | No | Yes | 
| gh_token | Your GitHub personal access token | Yes | No | 
The Enable this value to be defined when the action is triggered option lets users define the branch value when they run the action. It will default to dev.
Set the Action type to Custom.
Under Action details, set the following values:
| Field | Value | 
|---|---|
| Method | POST | 
| Source URL | https://api.github.com/repos/${application.outputs.repo_name}/merges | 
| Body | {"base":"main","head":"${var.branch}","commit_message":"Merged from Waypoint"} | 
Notice that the Source URL refers to the application.outputs.repo_name variable. HCP Waypoint makes the outputs for the application the action is associated with available to you when you create the action. The Body refers to the var.branch variable you created in this step, which the user can define when they run the action.
Under Headers, create the following headers for the request:
| Key | Value | 
|---|---|
| Accept | application/vnd.github+json | 
| Authorization | Bearer ${var.gh_token} | 
| X-GitHub-Api-Version | 2022-11-28 | 
The Authorization header refers to the gh_token variable you created in this step.
To finish creating the action, click Create action.
Assign the action to the application
After you create the action, HCP Waypoint brings you back to the Actions page and shows all of the actions in your HCP project. Click the Merge Branch action name to navigate to the action overview page.
Click Assignments, then click Applications. This page shows all of the applications that have access to this action. To assign this action to your application, click Manage, then click Edit assignments.
HCP Waypoint shows you the list of all applications in your HCP project. Check the checkbox next to the mywebapp application, then click Confirm. HCP Waypoint shows a summary of the assignment changes. Click Apply to assign the action to your application.
Update the website
Next, you will push some changes to a development branch of the GitHub repository you created in the Use a Waypoint template tutorial.
Create a new branch in your cloned mywebapp that you will push your changes to.
$ git checkout -b dev
Next, open the main.css stylesheet and update the background-color and color attributes in the body element to match what is below.
app/style/main.css
body {
    background-color: #1d1e1f;
    margin-top: 5%;
    color: #14c6cb;
}
Commit your changes locally.
$ git commit -a -m "Update style"
Then push your changes to the remote dev branch.
$ git push origin dev
Run the action
Now that you've made a new branch and committed changes to it, use the action to merge the changes to the main branch. Once you merge the changes, GitHub will automatically deploy a new version of the static website.
- Navigate to the Applications page.
- Choose your mywebappapplication.
- Click the Actions dropdown.
- Click the Merge Branch action.
- Click Run.
HCP Waypoint prompts you to provide a value for the branch variable. For this example, leave the default value of dev you configured earlier. Since this action lets users define the variable when they run the action, they can merge any branch into main. This makes the action more flexible.
When you run the action, HCP Waypoint sends the HTTP POST request you configured earlier to GitHub to merge the dev branch into the main branch. Since your static website is based on the main branch, GitHub automatically deploys the new version of the website.
Verify that the action merged the dev branch into the main branch by navigating to the GitHub repository. You will see that the latest commit to the main branch has the comment "Merged from waypoint" that you defined in the action definition.
Next, open the website that you deployed with Waypoint. You can find the website URL under the Outputs tab of your application overview. You will see the changes you made to the website.
Next steps
In this tutorial, you created an HCP Waypoint action to merge an arbitrary branch into the main branch of your repository. Actions enable platform operators to automate and standardize common steps for application teams to perform day 2 operations. To learn more, refer to the following resources.
- HCP Waypoint concepts: actions
- Create and mange actions documentation
- Using HCP Waypoint as your Internal Developer Platform
Continue on to the next tutorial to learn how to clean up your Waypoint application and the infrastructure associated with it.