3. 3
Jenkins Overview
“Jenkins is an open source continuous integration tool written in Java. The project was forked from
Hudson after a dispute with Oracle.
Jenkins provides continuous integration services for software development. It is a server-based
system running in a servlet container such as Apache Tomcat.” -
https://en.wikipedia.org/wiki/Jenkins_(software)
Easy Integration
900+ Plugins
Easy Installation
Customization
9. 9
Jenkins Plugins
Plugins are the key to enhancing Jenkins functionality, usability, and interoperability. Most plugins are
OSS.
Cloudbees - https://www.cloudbees.com/products/cloudbees-jenkins-platform/enterprise-
edition/features
Some are better supported than others.
Integration
900+
Customization
11. 11
EC2 Plugin
Easy to use EC2 IAM Roles
EC2 instances and IAM Roles (Don’t use *s)
Starting and managing slaves, to achieve dynamic horizontal scaling across the AWS cloud.
Setup AWS CLI as Jenkins user (sudo su -s /bin/bash jenkins, aws configure)
Demo
12. 12
CodeDeploy Setup
IAM Users, Groups, Roles, Policies, Trust Relationships (resources that can assume the role)
AWS CodeDeploy Plugin
Deployment target EC2 instances run codedeploy-agent, and use IAM Role
Code deployment agent will run on deployment targets
Setup S3 bucket for Jenkins Code Deployment Plugin
13. 13
CodeCommit Setup
Create IAM user, with groups and permissions (polices).
Use as Git repository.
Deployment target EC2 instances run codedeploy-agent, and use IAM Role
Use aws-cli that supports CodeCommit and Credential Helper commands.
Disable OSX Keychain Access Utility (Code Commit 15 minute password expiration)
14. 14
Syncing Jenkins Config to AWS Code Commit
SCM Sync Config shared additionnal includes
SCM Sync configuration plugin
15. 15
AWS CodePipeline
Visualization of CD stages
CD Service
Requires role with appropriate CodePipeline policies
Requires S3 bucket versioning enabled.
Can be integrated with remote Jenkins via AWS CodePipeline Plugin
Set <useSecurity> element to false to disable security settings.
Labels – control where builds execute.
Choose whether for not to use auto-install options for Java/Maven or use AWS AMIs to pre-configure slaves.
YAML
appsepc.yml
Similar to Travis CI
Control app configuration at the project level.
http://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.html
Allows multiple stages and actions to be configured.
Issues: Jenkins jobs names does not support nesting in folders.
No way to stop long running pipeline without deleting pipeline.