JClouds Jenkins plugin provides option to launch jenkins slaves on any Cloud provider supported by JClouds (http://jclouds.apache.org/reference/providers/).
You can add a new Cloud in the Jenkins configuration. The plugin requires the cloud provider type (as per JClouds Compute API provider list), access id and secret key. You can generate a keypair that will be used to connect and configure the slave.
The list of providers is an auto-complete field. There's an option to test the connection settings, which will validate your credentials. A new node can be launched via Jenkin's computer list (build executors) screen.
We are working on more configuration options to configure auto-provisioning and limits etc.
You can build and test this plugin using by cloning this repository and
mvn clean install hpi:run
The above command will start jenkins with JClouds plugin pre-configured.
-
Goto Jenkins Configuration page by clicking on Manage menu or browsing to the URL http://localhost:8080/configure
-
Scroll down to Cloud Section
-
Click on the
Add a new cloud
pop-up menu button which should have an option -Cloud (JClouds)
-
Click on
Cloud (JClouds)
-
Fill in the configuration options
- Profile : the name of the profile e.g, aws-slave-profile
- Provider Name: type first two characters and you'll get an auto-completed provider name (e.g. aws-ec2 or hpcloud-compute)
- End Point URL: if your provider API needs an endpoint configuration, add it here, otherwise leave it empty.
- Max Number of Instances: The maximum number of instances to run from this cloud at one time.
- Retention Time: How long, in minutes, to wait for a slave to remain idle before disconnecting and terminating it. Defaults to 30.
- Identity : your accessId
- Credential: your secret key
- RSA Private Key/Public Key: If you have a keypair, then just copy paste the public and private key parts, otherwise click on
Generate Key Pair
button. - Click on
Test Connection
to validate the cloud settings.
-
Add Cloud Instance Template by clicking on the Add button
-
Fill in configuration options:
-
Name : the name of the instance template e.g. aws-jenkins-slave
-
Number of Executors: How many executors each slave created from this template should have.
-
Description: notes/comments for your reference.
-
Image ID: Image ID to use for this slave template, such as EC2 AMIs. Note that EC2 AMIs must include the region as well, e.g., "us-east-1/ami-00000". or
-
OSFamily: Specify the OSFamily - leave empty for default for a cloud provider
-
OS Version : Specify the OSVersion - leave empty for default for a cloud provider
-
Hardware ID: Hardware ID on provider for this slave template, such as "t1.micro" on AWS EC2. or
-
RAM : in MB
-
No. of Cores: number of virtual processor cores.
-
Location ID: Location ID where this slave will be deployed. If none is selected jclouds will automatically choose an available one.
-
Labels: (space-separated) labels/tags that you can use to attach a build to this slave template
-
Init Script: A shell script to be run when the slave is created.
-
Stop on Terminate: If true, suspend slaves rather than terminating them.
-
-
Click Save to save the configuration changes.
-
Goto Jenkins' home page, click on
Build Executor Status
link on the sidebar. -
Verify that you have a button with `Provision via JClouds - {YOUR PROFILE NAME} drop down with the slave template name you configured.
-
Click on the slave and see if your slave launched succesfully (please wait until the operation completes).
- To run your build on the newly configured slave computer, just enable the
Restrict where this project can be run
option in the build configuration page. - Enter the label which you choose for the instance template in the
Label Expression
text field. This should auto-complete labels for you. - Click save the save the configuration options.
- Schedule the build to check whether the build is executed on the selected slave template.
The plugin also provides a way to store your build artifacts on JClouds supported cloud storage providers. You can configure multiple blobstore profiles and configure the build to copy different files/artifacts to the specified container. Here's how you configure the same.
- Goto Jenkins Configuration Page
- Click Ad under the section
JClouds Cloud Storage Settings
- Provide the configuration Options:
- Profile Name: name of the profile e.g. aws-storage
- Provider Name: JClouds Supported Provider Name
- Identity : your accessId
- Credential: your secret key
- You can add multiple providers by clicking on Add.
- Click Save on the bottom of the page, to save the settings.
After you configure a cloudstorage provider, you can enable the publishing file by enabling it under Post-build Actions
in the build job configuration page.
- Click on the checkbox
Publish artifacts to JClouds Clouds Storage
- You should now see a dropdown with configured storage profiles. Select the one you want to use for this build.
- Click on Add button next to
Files to upload
. - Add the sourcd file path (relative to workspace)
- Add the destination container name.
- Add the virtual path under the container to copy to. (optional)
- Check the Keep Hierarchy box if you want the path of the file relative to the workspace to be appended to the virtual path.
- Repeat to add more files if you want to copy.
- Click save.
When the build is complete and succesful, the configured files will be published to the configured blobstore.