With CI/CD, it can be tricky to get release notes out at the same cadence as development. But why not automate your release notes with your issue tracking system? This is a proof of concept designed to show an integration with Atlassian JIRA via webhooks to a serverless changelog record system.
The CloudFormation template located in the back-end folder will deploy the follow resources into your AWS account
- 1 x Public API (API Gateway)
- 1 x NoSQL Table (DynamoDB)
- 2 x Roles with Policies (IAM)
- Dev team moves Jira issue to Done status. Jira publishes a webhook containing details about the closed issue.
- AWS API Gateway proxies directly to DynamoDB to store the details.
- End user loads the changelog page. The page makes a request to load recent changelog details.
- AWS API Gateway proxies directly to DynamoDB to load the details from the database and return them in the response.
In order to properly run and deploy this app, you must perform the following
- Setup an AWS account
- Install NodeJS
- Install the AWS CLI
- Configure the AWS CLI to use your account
- Install Git
- Install the SAM CLI
- Install the Angular CLI
- Clone the repository to your local machine
- Navigate to the back-end folder
- In package.json, change REPLACEME with the name of an S3 bucket to create in your account. a. S3 bucket names in AWS have to be globally unique, so be sure to use something nobody has used before
- Run
npm run provision-bucket
in a terminal to create the S3 bucket in your AWS account - In template.yaml, change the S3BucketName Default REPLACEME with the name of your bucket
- Deploy the resources into your AWS account by running
npm run deploy
in a terminal in the root of the backend folder - When deployment is complete, copy the value of the
APIEndpoint
output - Navigate to ./front-ent/environments/environment.ts
- Replace the Replace_Me_With_APIEndpoint_Output text with the value you copied in step 7
- You are all set! The backend is deployed in AWS, and you can run the frontend locally.
- To start the frontend locally, type
cd front-end
to get in the correct directory,ng build
to compile, andng serve
to start the local server
The backend will create two endpoints for your API:
- POST - /details - This will add new changelog details into the system. The request schema for the body is below
{
"key": "<Jira Issue Key>",
"type": "<Jira Issue Type>",
"description": "<Text to display in the changelog>"
}
- GET - /details - Retrieves all changelog details from the system. Defaults to 200 results. If you want to see more/less, you can add a
responseLimit
query string parameter
For a detailed walkthough on how to configure this in JIRA, please visit the article on my blog.