Valid since:
XL Deploy 5.0.1
Using XL Deploy with AWS CodePipeline
AWS CodePipeline is Amazon Web Services’ continuous delivery service. It allows you to model and automate your software release process.
The AWS CodePipeline plugin for XL Deploy enables XL Deploy to function as an additional deployment option for AWS CodePipeline, allowing CodePipeline users to leverage XL Deploy’s leading capabilities for deployments of existing enterprise applications to on-demand, on-premises, and hybrid cloud environments hosted in Amazon EC2 and other clouds.
This topic describes how to use XL Deploy with AWS CodePipeline.
Create a sample pipeline in AWS CodePipeline
This section describes how to create a sample pipeline in AWS CodePipeline to demonstrate a deployment action using XL Deploy.
Step 1 Log in to AWS CodePipeline
Go to the AWS Management Console and select AWS CodePipeline. Click Get started to create a pipeline.
Step 2 Create the sample pipeline
To create the sample pipeline:
-
In Pipeline name, enter petclinic-pipeline.
- Click Next step to proceed.
-
Choose a source code provider.
In a fully-fledged pipeline, you would refer to application source code here, which would be compiled and packaged in a deployable artifact during a build step. However, this example demonstrates a deployment step, so the source location points to a Deployment ARchive (DAR) file, which is XL Deploy’s standard input format. To learn more about DAR files, refer to Preparing your application for XL Deploy.
For this example, select the Amazon S3 Source provider and set the Amazon S3 location to s3://petclinic-packages/PetClinic-1.0.dar.
- Click Next step to proceed.
-
Choose a build provider to build the artifact.
In this example, the source code location already points to a deployable artifact (the DAR file), so select No Build.
-
Choose a deployment provider.
By default, AWS CodePipeline only allows you to select AWS CodeDeploy or AWS Elastic Beanstalk.
XL Deploy is not available during the pipeline creation stage; first, you must first create a pipeline with an AWS deployment provider, then edit the pipeline to change the provider to XL Deploy. This procedure will be described in step 3.
Select the Deployment provider AWS CodeDeploy.
- Click Next step to proceed.
-
Provide the AWS Service Role that you will use for AWS CodePipeline. This gives AWS CodePipeline permission to use resources in your account. You can create a new role or use an existing role.
- Click Next step to proceed.
- Review the AWS CodePipeline details and click Create pipeline to create the pipeline.
Step 3 Create XL Deploy custom action
To use XL Deploy as a deployment provider in AWS CodePipeline, you first need to create a custom action for it.
To do so, install the AWS Command Line Interface (CLI). Then, in the AWS CLI, execute the following command:
$ aws codepipeline create-custom-action-type --cli-input-json http://git.io/vYpaN
or this command using the direct link:
$ aws codepipeline create-custom-action-type --cli-input-json https://gist.githubusercontent.com/xlcommunity/41c394a82547af62363f/raw/2970533d229115e4f1a6e75946fe62ace2271234/aws-codepipeline-xl-deploy-action.json
Step 4 Add XL Deploy as the deployment provider
After the pipeline is created, you will be redirected to the petclinic-pipeline page. To change the deployment provider to XL Deploy:
-
Click Edit to edit the pipeline.
-
Click the X icon to delete the AWS deployment provider action from the Beta stage, then confirm the deletion.
- Click Action to add a new action.
- Select the Deploy Action Category.
- Set the Action name to petclinicdeployment.
-
For the Deployment provider, select XL-Deploy.
-
To configure the XL Deploy action, set the Deployment Package Name to Applications/PetClinic and Deployment Package Version to 1.0.
This is the package that contains the files and resources that make up a version of the application, as well as a manifest file (
deployit-manifest.xml
) that describes the package contents. -
For the Environment Id, enter Environments/dev.
An environment is a grouping of infrastructure and middleware items such as hosts, servers, clusters, and so on. The environment is the target of the deployment. The environment ID must match the ID of an existing environment in XL Deploy. For more information, refer to Create an environment in XL Deploy.
- In XL Deploy URL, enter the XL Deploy installation URL. AWS CodePipeline uses this URL to provide a link to your XL Deploy server in the CodePipeline user interface.
- In XL Deploy Username, enter the ID of the user that should be used to deploy the deployment package to the target environment. This user must have sufficient permissions in XL Deploy to perform this deployment. For more information, refer to Overview of security in XL Deploy.
- In XL Deploy Password, enter the password for the user.
-
For XL Deploy Server Key, provide a key to identify the XL Deploy server. If you have multiple XL Deploy servers in your organization, this key will be used to identify which XL Deploy server picks up the CodePipeline task.
The input artifact is optional for the XL Deploy action. If it is specified, XL Deploy will attempt to import the specified input artifact (that is, the deployment package) into its internal repository before starting the deployment.
After a deployment package has been imported in XL Deploy, you can deploy it to other target environments without importing it again. Therefore, in a pipeline, only the first deployment action needs to import the new deployment package. For subsequent deployment actions that deploy the same package to environments further down the pipeline, no input artifact is specified.
- Click Add action to add the XL Deploy action to the pipeline.
-
Click Save pipeline changes to save the pipeline with the XL Deploy action.
Configure XL Deploy for AWS CodePipeline
This section describes how to configure XL Deploy to communicate with AWS CodePipeline and execute deployment jobs.
Step 1 Install XL Deploy
Follow the installation procedure to install and start XL Deploy. This procedure will also install an Apache Tomcat server that will be used with the sample CodePipeline pipeline.
Step 2 Download and install the XL Deploy AWS CodePipeline plugin
To install the XL Deploy AWS CodePipeline plugin:
- Download the plugin from the XebiaLabs Software Distribution site.
- Copy the plugin file to the
plugins
directory in your XL Deploy installation. - Restart XL Deploy.
Step 3 Create the environment in XL Deploy
To create an environment where the application will be deployed:
- In XL Deploy, click Deployment in the top menu, then click New environment. A pop-up window appears.
- Click Create environment.
- For the Environment name, enter dev.
- Click Next.
- Next to Add containers, select Select existing container, then select the Tomcat virtual host from the list of containers.
- Click Next, then click Next again.
- Click Save to create the dev environment.
Step 4 Create an AWS CodePipeline job worker
An AWS CodePipeline job worker will poll AWS CodePipeline every minute for jobs that are assigned to this XL Deploy server (as determined by the XL Deploy server key). To create an AWS CodePipeline job worker:
- In XL Deploy, click Repository in the top menu, then right-click Configuration.
-
Select New > aws > CodePipelineJobWorker.
-
Enter the configuration details for the job worker.
- Click Save to save the job worker.
Step 5 Start the pipeline
To start the AWS CodePipeline pipeline, you must execute a manual command or make a commit. To start the pipeline manually:
- Install the AWS command-line client on your computer.
-
Open a command line and execute:
aws codepipeline start-pipeline-execution --name petclinic-pipeline
Step 6 Deployment
After you start the pipeline, you will see actions in an In Progress state in the AWS CodePipeline interface. XL Deploy will poll for jobs with the deployment pipeline group dev-deployments. When a job is available, the XL Deploy action state will change to In Progress.
The XL Deploy AWS CodePipeline job worker will pick up the job and perform the deployment. After the application is deployed, you can see it in the Deployment Workspace under the dev environment.
Also, you can see the PetClinic application running on your Tomcat server at http://<TOMCAT_SERVER_URL>/petclinic/
.
In the AWS CodePipeline interface, you can see that the XL Deploy action state is now Succeeded.