Skip to main content

Jenkins

Jenkins is a service that allows you to run automated workflows in response to events that are triggered in a repository. You can use Jenkins to automate tasks such as building, testing, and deploying your code.

This guide will show you how to use Jenkins to create and test on your Corellium devices.

Prerequisites

To use Jenkins with Corellium, you will need:

  • A Corellium account
  • A code repository
  • A Corellium API token
  • A Jenkins account connected to the repository

Create a Corellium API token

To use Jenkins with Corellium, you will need to create a Corellium API token, which you can do in our Web UI.

Create a repository

To use Jenkins with Corellium, you will need to create a repository in the code repository service of your choice. For example, GitLab, GitHub, Bitbucket, etc.

Add your environment variables

To use Jenkins with Corellium, you will need to add your Corellium API token and Project ID to your Jenkins environment variables.

To do this, go to your repository's settings in Jenkins and add the following environment variables:

  • CORELLIUM_API_TOKEN: Your Corellium API token
  • CORELLIUM_PROJECT: Your Corellium project ID

Create a Jenkins workflow

To use Jenkins with Corellium, you will need to create a Jenkins workflow. You can do this by creating a file called Jenkins in your repository.

The following example workflow will run the following steps every push:

  1. Create a device (an iPhone 6 running iOS 12.5.6)
  2. Show the installed apps
  3. List the device's files
  4. Stop the device
  5. Delete the device

Let's go!

pipeline {
agent {
docker {
image 'node:16'
args '-u root:root'
}
}
environment {
// Override HOME to WORKSPACE
HOME = "${WORKSPACE}"
// or override default cache directory (~/.npm)
NPM_CONFIG_CACHE = "${WORKSPACE}/.npm"
}
stages {
stage('Test') {
steps {
sh """
# Install the Corellium CLI
npm install -g @corellium/corellium-cli

# Login to Corellium
corellium login --apitoken \${CORELLIUM_API_TOKEN} --endpoint https://app.corellium.com

# Create device
# The `true` argument will wait for the device to be ready before continuing, which is useful for CI.
# We'll store the device ID in an environment variable so we can use it later.
id=\$(corellium instance create iphone6 12.5.5 \${CORELLIUM_PROJECT} true)

# List apps
# This may take a few minutes to finish as the device restores.
corellium agent apps --project \${CORELLIUM_PROJECT} --instance \$id

# List files
corellium agent files --project \${CORELLIUM_PROJECT} --instance \$id

# Stop device
# The `true` argument will wait for the device to be fully stopped before continuing, which is useful for CI.
corellium instance stop \$id true

# Delete device
corellium instance delete \$id
"""
}
}
}
}