---
title: "Continuous Integration Tools"
canonical: "https://docs.getxray.app/space/XRAYCLOUD/44565135/Continuous%20Integration%20Tools"
format: markdown
---
Xray supports integration with Continuous Integration tools, thanks to its [REST API](https://getxraydocs.atlassian.net/wiki/spaces/XRAYCLOUD/pages/44565892).

Xray team has made some add-ons for Jenkins and Bamboo that make this integration easy. While we're working on making them also compatible with Xray Cloud (soon available), you can still integrate your CI pipeline using the instructions provided here. 


> ℹ️ **Please note**
> ℹ️ 
> ℹ️ For TeamCity, there is a free plugin that already supports Xray Cloud. More info [here](https://getxraydocs.atlassian.net/wiki/spaces/XRAYCLOUD/pages/44565140).



> Macro (toc)

## CI in a project using Cucumber tests

The steps include: 

1. Authenticate
2. Export Cucumber, Gherkin base tests from Jira
3. Run the tests
4. Import the results back to Jira


### Authenticate base on the credentials associated with a given API Key

```
token=$(curl -H "Content-Type: application/json" -X POST --data '{ "client_id": "${***}","client_secret": "${***}" }' https://xray.cloud.getxray.app/api/v1/authenticate| tr -d '"')
```


### Export Cucumber tests

```
curl -H "Content-Type: application/json" --output featureBundle.zip -X GET -H "Authorization: Bearer ${token}"  "https://xray.cloud.getxray.app/api/v1/export/cucumber?keys=CALC-1;CALC-3"
```


### Unzip the tests (Cucumber .feature files)

```
unzip -o featureBundle.zip -d features/
```


### Run the tests and save the report

```
cucumber -x -f json -o report.json
```


### Import the test results to Jira

```
curl -H "Content-Type: application/json" -X POST -H "Authorization: Bearer ${token}" --data @report.json https://xray.cloud.getxray.app/api/v1/import/execution/cucumber
```

##   
CI in a project using non-Cucumber tests

If you are using any other framework to specify your test cases, you can also use a CI tool to import the execution results into Xray and Jira.

Xray supports the most common Test Runner reports when importing execution results. These are listed bellow:

- JUnit
- TestNG
- NUnit

If the Test cases being imported are not yet created in Xray/Jira, then Xray will create them automatically. The created tests will have the Generic test type and will contain the identifier or the name in the definition field. Xray will reuse the same Test issues in JIRA for subsequent imports of execution results.

Only one additional step is needed in order to import the execution results using the test runners specified above:

1. Run the Tests
2. Authenticate with the Xray REST API
3. Import the results back into Jira

### Authenticate base on the credentials associated with a given API Key

```
token=$(curl -H "Content-Type: application/json" -X POST --data '{ "client_id": "${***}","client_secret": "${***}" }' https://xray.cloud.getxray.app/api/v1/authenticate| tr -d '"')
```

###   
Import the test results to Jira

```
curl -H "Content-Type: text/xml" -X POST -H "Authorization: Bearer ${token}" --data @report.xml https://xray.cloud.getxray.app/api/v1/import/execution/junit
```