RMIT Classification: Trusted
COSC2759 Assignment 1 specifications
Deadline Sunday 19.04.2020 (11:59 pm AEST)
% allocated to this assignment 20
To be submitted via Canvas
To be attempted Individually
_______________________________________________________________________
Scenario
ACME corp. has developed a web application using NodeJS. Vue.js, and
PostgreSQL, and are running this in their AWS cloud account. The source for the
application is stored in GitHub, but they have been building and deploying this
manually from Tom the lead developer’s laptop. This approach has worked for a
while, but last month Tom was sick with the flu, and this prevented an important
deployment that their biggest customer was waiting for.
There have also been instances where bugs have been introduced into their
public website which has caused and increase in the number of support calls from
their customers, and the support and development teams have had to work
overtime to manage the load and fix the issues.
These issues are causing a reduced morale with the teams, as well as impacting
the revenue of ACME corp. They have reached out to you, as an expert in DevOps
and Automation, to help resolve their issues around a single point of failure and
help their teams focus on delivering new features rather than supporting old and
broken ones.
To help resolve their issues, you have suggested setting up an automated build, or
continuous integration, to help reduce the dependency on Tom and his laptop.
And to add automated testing to reduce the number of defects that is missed
during testing.
The application source code can be found here: https://tinyurl.com/vdo79fr
NOTE: Download the zipped archive from above url, unzip it. Those of who have
never created a web application in the format provided as a part of this source
code need to understand the directory structure, what each of the files are?, what
are they doing? Look at the “test” folder, make sure you have a good
understanding of the source code.
It will be crucial to completing the assignment tasks.
2
RMIT Classification: Trusted
The Approach
To make this easier for ACME corp., which doesn’t have extensive experience with
DevOps, we will be using well known SaaS tools to help reduce the learning curve
for their development team. You will follow best practice principles and make as
much of your solution using code, this includes your CI build configuration and
scaffolding scripts.
Tools to use:
• GitHub
• CircleCI
• Docker
• Docker Compose
Deliverable
ACME corp. expects a Zip file with all the code and documentation required to run
the Continuous Integration build you are creating for them. This includes the files
that define the CircleCI pipeline, any shell scripts, and Docker files you use. The
goal is for ACME corp to be able to commit the files into their own GitHub
repository and set up a CircleCI pipeline, and have it work with no modification to
the files necessary.
You should also include the “.git” folder in your zip file so ACME corp can learn
from your approach to branching.
PA-DI Tasks
a. It will be important that you document each of the elements in your solution
and explain not only what it does, but the intent behind it, so the ACME corp.
team can understand why you chose to approach it the way you did. [20%]
Please consider:
• Analysis of the problem ( 5%)
• Explain and Justify the solution (10%)
• Writing quality, layout and accuracy (5%)
To include in zip file:
Add a readme.md file into the root of your folder explaining all the elements
you have chosen to include, what it does, and why you chose to include it.
3
RMIT Classification: Trusted
b. Set up a private repository in GitHub and commit the application there to be
built, tested, and packaged using CircleCI. [5%]
To include in zip file:
Provide a screenshot of your CircleCI pipeline having executed with the url
visible in your browser
c. Things that needs to be added to your Continuous Integration build [25%]
• Unit testing (5%)
• Static Code Analysis / Lint (5%)
• Code Coverage Report (5%)
• Multiple failure scenarios (5%)
• Generating an artefact that can be deployed (5%)
To include in zip file:
Include the CircleCI configuration file
any scripts required for the pipeline to execute properly
d. Your pipeline needs to be able to support multiple branches and have CI
builds trigger on all branches. [15%]
To include in zip file:
Include the CircleCI configuration file
any scripts required for the pipeline to execute properly
e. Artefacts should only be generated on the master branch [15%]
To include in zip file:
Include the CircleCI configuration file
any scripts required for the pipeline to execute properly
HD Tasks
If you can finish all above tasks, then you can start working on HD tasks.
No help or consultation will be provided for these tasks. You are welcome to ask
general questions regarding the tasks, but this is a strictly self-research section à
4
RMIT Classification: Trusted
f. Run integration testing as part of the pipeline [10%]
Execute automated test that validates that the application integrates
properly with the PostgreSQL database backend by standing up a database
in a docker container and running tests against it. Integration tests are
written by Mocha, please read ReadMe file on the project. (5%)
If the tests fail, break the build and report back why it failed in the log.(5%)
To include in zip file:
Include the CircleCI configuration file
any scripts required for the pipeline to execute properly
g. Run end-to-end tests as part of the pipeline [10%]
End-to-end testing is a test that check if the flow of an application from start
to finish is behaving as expected. The purpose of performing end-to-end
testing is to find system dependencies and to ensure that the data integrity
is maintained between various system components and systems. Please
read ReadMe file on the project.
Execute automated tests that validate that the application functions as
expected from the user interface. (5%)
If the tests fail, break the build and report back why it failed in the log. (5%)
To include in zip file:
Include the CircleCI configuration file
any scripts required for the pipeline to execute properly
Assessment criteria
You will be assessed on:
5
RMIT Classification: Trusted
• Your ability to automate the build and packaging of the ACME web
application
• Using YAML to define CircleCI build tasks
• Integrating unit testing into your pipeline and validate that they are
successful
• How well you document your solution.
• How well you analyse the problem and justify your solution for each task.
• Does the provided Zip file contain everything required for ACME corp to be
able to use the pipeline you have designed?
• Do you use branching and commit changes often?
PLAGIARISM
All assignments will be checked with plagiarism-detection software; any student
found to have plagiarised would be subject to disciplinary action. Plagiarism
includes:
• CONTRACT CHEATING: paying someone to do your work
• CONTRACT CHEATING: getting someone else to write the test or attend
demo
• submitting work that is not your own or submitting text that is not your own
• copying work from/of previous/current semester students
• allowing others to copy your work via email, printouts, social media etc.
• posting assignment questions (in full or partial) on external technical forums
• sending or passing your work to your friends
• posting assignment questions on technical forums to get them solved
A disciplinary action can lead to
• a meeting with the disciplinary committee
• a score of zero for the assignment
• a permanent record of copying in your personal university records and/or
• expulsion from the university, in some severe cases
All plagiarism will be penalised. There are no exceptions and no excuses. You
have been warned. For more details please read RMIT’s page on Academic
Integrity at
https://www.rmit.edu.au/students/student-essentials/assessment-and-exams/academic-integrity
6
RMIT Classification: Trusted
Submission Procedure
One single zipped archive (only .zip file extensions allowed) containing
- readme.md file:
o things you have been asked to document in each of the
tasks on pages 2,3 and 4
o this file should also contain your full name, student id and
any other relevant information.
- Any other file that you may wish to submit
Late submissions and Extension-related information
A penalty of 10% per day of the total marks for each assignment will apply
for each day a submission is late, including both weekdays and the
weekend. After 5 days, you will receive zero marks for that assignment.
Email your Head Tutor; Homy (amirhomayoon.ashrafzadeh@rmit.edu.au)
for extension related queries.
版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。