lab
lab title
AWS Continuous Integration and Delivery (CI/CD)
V1.01
Course title
BackSpace Academy
AWS Certified Associate
BackSpace Academy AWS Certified Associate
Table of Contents
Contents
Table of Contents ....................................................................................................................................................... 1
About the Lab ............................................................................................................................................................. 2
NodeJS Application Highly Available and Fault Tolerant Architecture .............................................................. 3
Create the Architecture ........................................................................................................................................ 3
Creating a Continuous Integration and Delivery (CI/CD) Pipeline ..................................................................... 8
Create a GitHub Repository .................................................................................................................................. 8
Creating the Pipeline .......................................................................................................................................... 12
Pushing Updates to our Elastic Beanstalk Environment..................................................................................... 17
Clean Up.............................................................................................................................................................. 20
Integrating CI/CD Build and Test Processes with CodeBuild ........................................................................... 22
Deploy an Elastic Beanstalk Application ............................................................................................................. 22
Fork a GitHub Repository ................................................................................................................................... 23
AWS CodeBuild Files ........................................................................................................................................... 24
Create the CI/CD Pipeline ................................................................................................................................... 25
Clean Up.............................................................................................................................................................. 29
1 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
About the Lab
Please note that not all AWS services are supported in all regions. Please use
the US-East-1 (North Virginia) region for this lab.
These lab notes are to support the hands on instructional videos of the AWS Deployment Services section of the
AWS Certified Associate Course.
Please note that AWS services change on a weekly basis and it is extremely important
you check the version number on this document to ensure you have the lastest version
with any updates or corrections.
Copyright 2017 all rights reserved - BackSpace.Academy 2
BackSpace Academy AWS Certified Associate
NodeJS Application Highly Available
and Fault Tolerant Architecture
In this section, we will use the Elastic Beanstalk Service to create a highly available and
fault tolerant architecture for deploying our application.
* Please note these notes have been created using the new Elastic Beanstalk console/user interface. You may
need to opt-in to use the new user interface.
Create the Architecture
The simplest and quickest way to get our architecture deployed is using the sample NodeJS application.
3 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
Make sure you are in US-East (N. Virginia) region. From the AWS console select “Elastic Beanstalk” from the
Compute services.
Click “Create New Application”
Give your application a name and description.
Click “Create”
Select “Actions” – “Create Environment”
Copyright 2017 all rights reserved - BackSpace.Academy 4
BackSpace Academy AWS Certified Associate
Select “Web server environment”
Click “Select”
Give your environment a name, domain name and description.
Select “Platform” - “Preconfigured platform” – “Node.js”
Select “Application code” -Sample application”
Click “Configure more options”
5 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
Select “Configuration presets” – “High availability”
Scroll down and Click “Create Environment”
Elastic Beanstalk will start creating your environment and displaying log messages
Copyright 2017 all rights reserved - BackSpace.Academy 6
BackSpace Academy AWS Certified Associate
When the environment has launched you can view the sample application by clicking on the URL
7 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
Creating a Continuous Integration
and Delivery (CI/CD) Pipeline
In this section, we will use the CodePipeline Service to create a Continuous Integration
and Continuous Delivery (CI/CD) pipeline our application. We will also create a GitHub
repository to store our code and provide updates to be pushed our AWS environment.
Create a GitHub Repository
If you don’t already have a GitHub account go to github.com and sign up (its free).
Go to github.com and select “New repository” from the “Create” menu on the top right.
Give your repository a name.
Set permission as “private”
Select “Initialize this repository with a README”
Click “Create repository”
Copyright 2017 all rights reserved - BackSpace.Academy 8
BackSpace Academy AWS Certified Associate
Download the sample NodeJS application from the Elastic Beanstalk documentation page:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/nodejs-v1.zip
Unzip the archive and drag and drop the files onto the repository code page.
Scroll down and enter a commit description.
Click “Commit changes”
9 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
Your files will now be uploaded.
Click on index.html
Click on the edit icon
Scroll down to line 38 and change the colour from #73A53E to Magenta
Copyright 2017 all rights reserved - BackSpace.Academy 10
BackSpace Academy AWS Certified Associate
Scroll down and enter a commit description.
Click “Commit changes”
11 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
Creating the Pipeline
Make sure you are in US-East (N. Virginia) region. From the AWS console select “CodePipeline” from the
Developer Tools services.
Click “Get Started”
Give your pipeline a name and click “Next Step”
Select “GitHub” as Source Location
Copyright 2017 all rights reserved - BackSpace.Academy 12
BackSpace Academy AWS Certified Associate
Click “Connect to GitHub”
Click “Authorize aws-codesuite”
*Note this step may force a re-login to the console which may reset your screen. If this occurs go back and start
the pipeline creation process again including “Connect to GitHub”.
Select the GitHub repository you created.
Select master branch
Leave advanced settings as they are and click “Next Step”
13 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
Select “No Build” for Build provider.
Click “Next step”
Select “Elastic Beanstalk” for Deployment provider
Select the Elastic Beanstalk application
Select the Elastic Beanstalk environment
Click “Next step”
Copyright 2017 all rights reserved - BackSpace.Academy 14
BackSpace Academy AWS Certified Associate
Click “Create role”
Click “Allow” to create the role
15 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
You will now be returned to the Code Pipeline console with the new role entered.
Click “Next step”
Review the pipeline and click “Create pipeline”
Copyright 2017 all rights reserved - BackSpace.Academy 16
BackSpace Academy AWS Certified Associate
Your pipeline has been created.
Pushing Updates to our Elastic Beanstalk Environment
Go back to the Elastic Beanstalk console.
Go to “Application versions” and click refresh to see the new version from your GitHub repository.
17 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
Go back to your Elastic Beanstalk environment and click the URL.
You will see the updated version with the Magenta background deployed.
Now go back to GitHub to edit index.html again.
Change the colour at line 38 to Orange.
Copyright 2017 all rights reserved - BackSpace.Academy 18
BackSpace Academy AWS Certified Associate
Add commit description and click “Commit changes”
If you go back to the Code Pipeline console you will see the change taking effect.
When complete the change will appear in “Staging”
19 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
Go back to Elastic Beanstalk and click on the environment URL to see the updated version with the orange
background
Clean Up
Go back to the Code Pipeline console and click “Edit”
Click “Delete”
Copyright 2017 all rights reserved - BackSpace.Academy 20
BackSpace Academy AWS Certified Associate
Go back to the Elastic Beanstalk console and delete the application.
21 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
Integrating CI/CD Build and Test
Processes with CodeBuild
In this section, we will integrate the CodeBuild Service with CodePipeline to create build
and test processes in our Continuous Integration and Continuous Delivery (CI/CD)
pipeline.
Deploy an Elastic Beanstalk Application
Enter details to create a NodeJS application called backspace-aws-codebuild-codepipeline.
Click “Configure more options”
Select “High Availability”
Copyright 2017 all rights reserved - BackSpace.Academy 22
BackSpace Academy AWS Certified Associate
Click “Create app”
Fork a GitHub Repository
The code for this lab is located in a GitHub repository. We can save time and simply fork a copy of this to your
GitHub account.
Sign in to your GitHub account.
Search for “backspace-academy/aws-nodejs-sample-codebuild”
Click on “Fork” to fork the repository.
23 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
You will now have a forked repository in your account that can be used to deploy the sample code.
AWS CodeBuild Files
The repository contains a modified copy of the AWS NodeJS sample application.
Additional files for AWS CodeBuild include:
test.js – code to test the application before deployment
package.json – modified to include an “npm async” package dependency (so that we have something to build!)
buildspec.yaml (see: Build Specification Reference for AWS CodeBuild)
Copyright 2017 all rights reserved - BackSpace.Academy 24
BackSpace Academy AWS Certified Associate
• Details build and test commands for CodeBuild
• Install package.json dependencies
• Install Mocha and UnitJS
• Test with Mocha
• Artifacts required for Elastic Beanstalk.
Create the CI/CD Pipeline
Go to the CodePipeline console and create a pipeleline named “backspace-aws-codebuild-codepipeline”
Select GitHub as Source provider.
Connect to GitHub and select the forked repository and master branch.
Click “Next step”
Select “AWS CodeBuild” as the Build provider.
Select “Create a new build project” and name the project
25 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
Select “Use an image managed by AWS CodeBuild”
Select “Ubuntu” for Operating system
Select “NodeJS” for Runtime
Select latest NodeJS version
Select “Use the buildspec.yml in the source code root directory”
Select “Create a service role in your account”
Copyright 2017 all rights reserved - BackSpace.Academy 26
BackSpace Academy AWS Certified Associate
Click “Save Build Project”
After Build project has been saved click “Next step”
Select “AWS Elastic Beanstalk” as Deployment provider.
Select the application and environment created by Elastic Beanstalk.
Click “Next step”
27 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
Select the service role created for the previous lab
Click “Next step”
Click “Create pipeline”
Your source will pulled from GitHub:
Your application will then be built and tested by CodeBuild:
Copyright 2017 all rights reserved - BackSpace.Academy 28
BackSpace Academy AWS Certified Associate
Your application will then be staged:
Go back to the Elastic Beanstalk console to view the updated application.
Clean Up
Go back to the Code Pipeline console and click “Edit”
Click “Delete”
29 Copyright 2017 all rights reserved - BackSpace.Academy
BackSpace Academy AWS Certified Associate
Go back to the Elastic Beanstalk console and delete the application.
Go Back to AWS CodeBuild and delete the project
Copyright 2017 all rights reserved - BackSpace.Academy 30
BackSpace Academy AWS Certified Associate
31 Copyright 2017 all rights reserved - BackSpace.Academy