Oracle Cloud Infrastructure Compute Pluginallows allows users to access and manage cloud resources on the Oracle Cloud Infrastructure (OCI) from Jenkins.
A Jenkins master instance with Oracle Cloud Infrastructure Compute Plugin can spin up instances OCI Instances (slaves or agents) on demand within OCI, and remove the instances Instances and free its resources automatically once the Job completes.
|Table of Contents|
Oracle Cloud Infrastructure Compute Plugin provides functionality to dynamically allocate OCI resources for continuous integration tasks, and to bring up and down services or nodes as required to serve Jenkins Build Jobs allows users to access and manage cloud resources on the Oracle Cloud Infrastructure (OCI) from Jenkins. A Jenkins master instance with Oracle Cloud Infrastructure Compute Plugin can spin up OCI Instances (slaves or agents) on demand within OCI, and remove the Instances and free its resources automatically once the Job completes.
After installing the Oracle Cloud Infrastructure Compute Plugin, you can add an OCI Cloud(s) and Template(s) with the preferred instance Clouds and Templates with your required OCI Instance configuration. The Template will have a Label that you can use in your Jenkins Job. Multiple Templates are supported. The Template options include Labels, Domains, Credentials, Shapes, Images, Virtual Cloud Network, Template Instance Cap, etc.
After your Jenkins Job completes its work, the instance OCI Instance is cleanly removed and resources are released back to the OCI pool.
View Oracle Cloud Infrastructure Compute Plugin page on theplugins.jenkins.io site for more information.
1. Oracle Cloud Account. To sign up, visit Oracle Cloud.
2. Jenkins installed with JDK 8 or higher.
1. Plugin is tested on minimum Jenkins version 1.625.3, it may not work with versions early than 1.554.
2. For Jenkins versions between 1.554 and 1.625, pre-install 'bouncycastle API Plugin' plugin.
There are a number of ways to install the Oracle Cloud Infrastructure Compute Plugin.
- Using the "Plugin Manager" in the web UI.
- Using the Jenkins CLI install-plugin command.
- Copying the .hpi file to the JENKINS_HOME/plugins directory.
Using the "Plugin Manager" in the web UI
The simplest and most common way of installing plugins is through the Manage Jenkins > Manage Plugins view, available to administrators of a Jenkins environment.
To install the Plugin in Jenkins:
- Click on Manage Jenkins in Home
- Click Manage Plugins
- Click Available tab
- Search for "Oracle Cloud Infrastructure Compute Plugin" or "oracle-cloud-infrastructure-compute"
- Click Install
- Restart Jenkins
Using the Jenkins CLI install-plugin command
Administrators may also use the Jenkins CLI which provides a command to install plugins.
The Oracle Cloud Infrastructure Compute Plugin is available via Jenkins Update Center or can be installed manually. To install the plugin through Jenkins Update Center navigate to Manage Jenkins > Manage Plugins > Available, and search "Oracle Cloud Infrastructure Compute Plugin"
To build the plugin from repos
java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin SOURCE ... [-deploy] [-name VAL] [-restart] Installs a plugin either from a file, an URL, or from update center. SOURCE : If this points to a local file, that file will be installed. If this is an URL, Jenkins downloads the URL and installs that as a plugin.Otherwise the name is assumed to be the short name of the plugin i.e. "oracle-cloud-infrastructure-compute",and the plugin will be installed from the update center. -deploy : Deploy plugins right away without postponing them until the reboot. -name VAL : If specified, the plugin will be installed as this short name (whereas normally the name is inferred from the source name automatically). -restart : Restart Jenkins upon successful installation.
Link to latest .hpi version can be found here.
Copying the .hpi file to the JENKINS_HOME/plugins directory
Using the .hpi file that has been explicitly downloaded by a systems administrator, the administrator can manually copy the downloaded .hpi file into the JENKINS_HOME/plugins directory on the Jenkins master. Link to latest .hpi version can be found here.
The master will need to be restarted before the plugin is loaded and made available in the Jenkins environment.
Building the Plugin from Repository
Jenkins plugins are packaged as self-contained .hpi files, which have all the necessary code, images, and other resources which the plugin needs to operate successfully.
If desired, you can build the Oracle Cloud Infrastructure Compute Plugin Plugin .hpi from the source code, and then install the .hpi file in Jenkins.
To build the .hpi file, OCI Java SDK is required. OCI Java SDK is currently not published to Maven center
so first install OCI Java SDK to the local Maven repository. Steps are outlined below.
Refer to OCI Java SDK
Installing OCI Java SDK
$ git clone https://github.com/oracle/oci-java-sdk $ cd oci-java-sdk $ mvn compile install
Compile the Plugin
1. git clone repo
2. Update pom.xml with OCI Java SDK you have installed
``` <oci-java-sdk.version>1.23.34<1</oci-java-sdk.version> ```
3. Compile and Install package
$ mvn package
Install the Plugin
A logged-in Jenkins administrator may upload the file from within the web UI.
- Navigate to the Manage Jenkins > Manage Plugins
- page in the web UI.
- Click on the Advanced tab
- Choose the .hpi file under the Upload Plugin section
- Upload the plugin file.
The System Administrator can copy the .hpi file into the JENKINS_HOME/plugins directory on the Jenkins master.
The master will need to be restarted before the plugin is loaded and made available in the Jenkins environment.
Add New Cloud
- From Jenkins Server console, click Manage Jenkins > Configure System
- In Cloud section, click Add a new cloud and select Oracle Cloud Infrastructure Compute. Enter credentials to access your OCI account. You can create multiple Clouds.
- Name - Provide a name for this OCI Compute Cloud.
- Fingerprint - Enter the Fingerprint from your OCI API Signing Key. If you do not have one, it can be left blank. For more information see Security Credentials.
- API Key - Enter the OCI API Signing Private Key. For more information see Security Credentials.
- User Id - Enter your User OCID.
- Tenant Id - Enter your Tenant OCID.
- Region - Enter Region, for example, us-phoenix-1.
- Click Test Connection to verify that Jenkins can successfully connect to the Oracle Cloud Infrastructure Service. Click Advanced and if required, enter a number in the Instance Cap field
- Click Advanced for more options.
Instance Cap - Enter a number to limit the maximum number of instances that can be created for this Cloud configuration. Leave this field empty to remove a cap.
Max number of async threads - The max number of async threads to use to load the Templates configuration. Consider reducing this value for Cloud configurations with a large number of Templates and if some values fail to load due to OCI API limit being exceeded. In this case the logs will show "User-rate limit exceeded" errors.
- Click Test Connection to verify that Jenkins can successfully connect to the Oracle Cloud Infrastructure Service.
Add New Template
Click Add in Instance Templates section to add the OCI configuration. You can add multiple Templates to a Cloud configuration.
2. Input or select values in the 'Instance Template' section:
- Description - Provide a description for this Template.
- Usage - It's recommended that you select "Only build jobs with label expressions matching this node" for now.
- Labels - Enter a unique identifier which allows Jenkins to pick the right instance template to run Job.
- Compartment - Select a compartment where the instance will be created.
- Availability Domain - Select the Availability Domain for your instance.
- Shape - Select the Shape for your instance.
- Image Compartment - The compartment from which to select the Instance's image. Note: if upgrading from v1.0.2 (or earlier) and Images are in a separate compartment than the default Compartment above, you may have to update the values in your existing Template configuration.
- Image - Select the Image the instance will use. The Drop Down values are in the format - Image(Compartment). Note: Java should be installed on the image as a Jenkins requirement. Alternatively refer to "Init Script" in Step 10 to install Java on the newly launched instances.
- Virtual Cloud Network Compartment - The compartment from which to select the Virtual Cloud Network and Subnet.Note: if upgrading from v1.0.3 (or earlier) and the VCN is in a separate compartment than the default Compartmentabove, you may have to update the values in your existing Template configuration.
- Virtual Cloud Network - Select the Virtual Cloud Network for your instance.
- Subnet - Select Subnet of your Virtual Cloud Network.
- Assign Public IP Address - By default, the plugin will assign a public IP to an instance, provided the subnet has an available public IP range. If this Option is unchecked, only the private IP is assigned.
- Connect Agent using Public IP - By default the Plugin will connect to the public IP of the instance (agent). If this Option is unchecked, the Plugin will connect to the private IP of the instance.
- SSH Public Key Name - Enter ssh public key for your instance. For more information see Security Credentials.
- SSH Private Key - Enter ssh private key for your instance. For more information see Security Credentials.
3. Click Verify SSH Key Pair to verify the public key and private key entered are a match.
4. Click Advanced for more configuration options:
- Remote FS root - Dedicated directory for Jenkins agent in instance.
- Remote SSH user - ssh user used for Jenkins master to access instance. The ssh user should have written permission on Remote FS root directory.
- Instance Creation Timeout - Number of seconds to wait for instance to reach state "ready", default value is 300.
- Instance SSH Connection Timeout - Number of seconds to wait for instance from state "ready" to be able to ssh connect from Jenkins master. Default value is 60.
- Idle Termination Minutes - Number of minutes for Jenkins to wait before deleting and completely removing an idle instance. A value of 0 (or an empty string) indicates that instance should never be stopped/deleted.
- Number of Executors - Number of concurrent builds that Jenkins can perform. Value should be at least 1.
- Init Script - You can define several lines of shell based commands to configure the instance (one-time) before the Jenkins Job runs. For example, if the image selected does not have Java pre-installed, you can add command "sudo yum -y install java"
- Init Script Timeout - Number of seconds to wait for the completion of Init Script. Default value is 120 seconds.
- Template Instance Cap - Places a limit on the number of OCI Instances that Jenkins may launch from this Template. Leave this field empty to remove the Template Instance Cap.
5. Click Save or Apply
Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
Oracle gratefully acknowledges the contributions to Oracle Cloud Infrastructure Compute Plugin that have been made by the community.