🚰 You will be implementing a deployment strategy into a production environment and integrating into your pipeline tool.
The deployment strategy can be one of {blue/green deployment or canary release}.
# Provision and configure computing environment for pipeline
$ pipeline init
<connection information>
# Trigger a build job, running steps outlined by build.yml, wait for output, and print build log.
$ pipeline build [job-name] [build.yml]
<build output>
SUCCESS|FAILURE
# Provision cloud instances
$ pipeline prod up
<output inventory file with production assets>
# Trigger a deployment, running steps outlined by build.yml, wait for output, print log, and determine success or failure.
$ pipeline deploy inventory [job] build.yml
<infrastructure details>
<deployment output>
SUCCESS | FAILURE
Your prod up
command should provision instances for your target infrastructure on a cloud provider. It should also generate an inventory file with connection information for your cloud resources. You may want to reuse/extend code from the provision workshop and homework to accomplish this goal.
Deploy iTrust to your production environment provided in inventory.
You will need to extend your build job to create a war file for deployment---add the step mvn package
to create the war file, if the build is successful. Your deploy command can then use the last built project as part of the deployment process.
The production environment will need a tomcat webserver (Tomcat 9) that can serve the iTrust war file, in addition to java and mysql dependencies.
Implement one of a {blue/green deployment or canary release} strategy, by setting up the necessary components in your production environment and control and monitoring needed to execute your release strategy.
You may automatically generate traffic, using tools such as siege or simple http requests in order to faciliate your release strategy.
Document the design of your deployment strategy and experiences you have in designing and implementing your provisioning step and deployment strategy.
This can be described in your submission's README.md.
Your analysis be evaluated based on expressiveness and generalizablity of your build specification, and effectiveness, soundness, and quality of your implementation.
Your pipeline must remain compatible with existing pipeline build jobs (M1+M2).
- Provisioning on cloud service (20%)
- iTrust deployment job spec (20%)
- Deployment strategy (40%)
- Screencast and milestone report. (20%)
Points may be deducted for not following constraints, poor quality of implementation, poor task communication and delegation, or failing to include sufficient detail required to evaluate capabilities.
- Updating and placing the provided .env file in README.md in root directory of project
- Running
npm install
- Running
node index.js init
- Running
node index.js build itrust-build build.yml
- Running
node index.js build mutation-coverage build.yml
- Running
node index.js prod up
- Running
node index.js deploy inventory itrust-deploy build.yml
Points will be deducted for non-contributing members, including receiving zero credit.
Commit your all your work related to your project into your designated repository in the master branch before the final deadline.
When you have finished the submission, create a branch called M3
to hold a snapshot of your work related to this milestone.
Ensure your repository contains:
- a top-level node.js project supporting the required commands for running your pipeline.
- a sample .env file that describes any necessary settings needed for running your pipeline.
- a README.md, with your report details.
- a link to screencast that demostrates your deployment.
Due Monday, April 25th, before midnight.