This is an example project for creating JIRA Data Centre cloud formation on AWS and testing the performance of your JIRA addon using Gatling framework.
This example uses the following maven plugins:
- jira-cloudformation-maven-plugin - For creating, launching, restoring, and terminating JIRA Data Centre cloud formation on AWS.
- jira-upload-addon-maven-plugin - For uploading JIRA addon of your choice and updating its license.
- gatling-maven-plugin - For running local instance of Gatling tests.
- gatling-aws-maven-plugin - For launching remote AWS EC2 instances of Gatling
1. An AWS Account
You will need an AWS account with ability to create RDS Postgres database, EC2 instances, Launch Configurations, Cloud Formation, Subnets, Elastic System Storage, and Security Groups.
2. SSH key-pair
Due to SSH problems, generate two SSH keys, one which will be used by Gatling maven plugin and one that will be used
by cloud formation. In the pom.xml, I have chosen two key-pairs: gatling-keypair
and jira-keypair
. Modify the
pom.xml to your needs.
3. IAM User Credentails
You will need IAM user with the correct access key and secret key. Log into AWS console https://console.aws.amazon.com/iam/home and create two users:
- One with S3 bucket read only permission
- Second one with read and write permissions to create the necessary resources for creating a cloud formation:
- Access to EC2 instances
- Access to RDS
- Access to S3 (used by Gatling plugin to upload results)
- Access to VPC (if you use template that creates one)
- Access to Elastic File System
- Access to Cloud Formation
You will need to update src/test/resources/s3.aws.user
credentials file with S3 IAM user. Also updating
aws.properties
with the second IAM user to launch cloud formation.
4. S3 bucket
Any S3 bucket that will be used for downloading backup of the JIRA sample data.
5. JIRA Data Centre template
You can use a template provided by AmazonAWS: https://s3.amazonaws.com/quickstart-reference/atlassian/jira/latest/templates/JiraDataCenter.template Please note that this template attaches to already existing VPC and subnets. You will have to modify the pom.xml template properties and change the VPC value to the correct one! The reason of choosing this template is that we can access the EC2 instances remotely. The default JIRA quick start template creates private subnets and therefore disabling SSH access from remote machine.
You can read more about the template here: https://aws.amazon.com/quickstart/architecture/jira/
And the PDF manual is located here: https://s3.amazonaws.com/quickstart-reference/atlassian/jira/latest/doc/jira-software-data-center-on-the-aws-cloud.pdf
6. Sample project Data
Sample data, a Postgre SQL backup and indexes. You can use the sample project data from here: https://github.com/hindsightsoftware/upkeep-jira-cloudformation-maven-plugin/sample-data which contains a sample project data generated by JIRA.
Upload the data (the tar file and psql data) into your bitbucket and update the pom.xml properties:
- jira.cloudformation.s3.restore.bucket
- jira.cloudformation.s3.restore.psql
- jira.cloudformation.s3.restore.index
If you wish not to restore any data, set jira.cloudformation.s3.restore.enabled
to false.
7. EC2 AMI image ID
Depending on your region, you will need to find the Amazon Linux AMI ID. For example, us-east-1 uses ami-8c1be5f6
for the default Amazon Linux image. You might need to update the ec2.ami.id
in pom.xml
8. Optional JIRA addon
This example contains a tutorial sample JIRA addon myPlugin-1.0.0-SNAPSHOT.obr
which will be uploaded including a
timebomb license. If you wish not to upload any addon, simply remove the jira-upload-addon-maven-plugin
plugin from
the pom.xml. If you wish not to upload any license, add jira.addon.license.enabled
property and set it to false.
To run the example using local instance of Gatling, run:
$ mvn verify -Plocal
To run using remote instances of Gatling EC2 machines, run:
$ mvn verify -Premote
The reports will be generated in target/gatling/basicsimulation-ID
where the ID is a unix timestamp. The reports
will also be uploaded to S3 bucket. If you wish to not to upload the reports, set s3.upload.enabled
property to false.