% allocated to this assignment. To be submitted via
To be attempted
Please read this first
Sunday 10/04/2022 (11:59 pm AEST)
Copyright By Assignmentchef assignmentchef
35% (to be marked out of 100) GIT & Canvas
Individually
RMIT Classification: Trusted
COSC2759 Assignment 1 Specifications
All of us have been affected by the unfortunate COVID-19 scenario and its aftermath. It is often hard to concentrate and study online; but as a student enrolled in this course, it is your responsibility to regularly attend online lecture, your respective labs and consultation session(s).
Bring your questions to online discussion board, consultation sessions or email
Watch the online recordings on a regular basis if you cannot attend the live sessions.
Do NOT start the assignment at the last minute.
Do NOT ask for last minute extensions, these are often rejected. Extensions can only
be granted for personal and medical reasons, provided you can supply some evidence.
DevOps is a very important skill to have. There is a clear lack of training in this area for the graduates and as such doing well in this course will give you a competitive edge over graduates from other universities.
Finally, please do NOT give up on this semester thinking of online study as a waste of time. Global industry projects involving teams at geographically different locations often run fully online. Think of this semester as a training for future. In the fast-evolving CS&IT industry, the online medium is very popular and vastly used.
You have more than 4 weeks to complete this assignment. The best time to get started is now.
RMIT Classification: Trusted
Alpine Inc has recently built a web application that allows users to record simple Notes application. The application is built using NodeJs, Express and backed by a NoSQL MongoDB. A demo version of the app is https://notes-tonight.herokuapp.com.
The source code for this application is stored in GitHub but the code itself is built and deployed manually from the lead developers (Pete) laptop. Although this process has worked in the past, Pete had recently taken leave from work which has meant that Alpine Inc missed a critical release that contained a new feature for one of their largest clients.
There have also been instances where bugs have been introduced into production which has caused an 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 reduced morale among the teams, as well as impacting the revenue of Alpine Inc.
As the newly hired DevOps practitioner, Alpine Inc has turned to you to help resolve their issues and enable their teams to better deliver new features and ensure releases into production are quick and reliable.
To help kick off this transformation, you have proposed that Alpine Inc start looking at establishing a CI pipeline to help reduce dependency on Pete by introducing automated builds and automate their testing processes. This will reduce the strain on the QA team and ensure bugs and development defects are picked up quickly and fed back to developers to be resolved before any changes are promoted to production.
RMIT Classification: Trusted
The Approach
To make this easier for Alpine Inc, which is rather immature with DevOps methodologies and practices, you have opted to use SaaS tools where possible 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 (GitHub Classroom)
GitHub Actions used for creating the pipelines
Docker Compose
Basic npm commands
Deliverable
Alpine Inc expects you update your GitHub classroom repository with the code and documentation required to run the Continuous Integration build you are creating for them including all files.
You task is to:
1. Define a CI pipeline by creating a file in the .github/workflows directory. Your pipeline
will automatically execute on GitHub Action runners.
2. Define your readme.md.
RMIT Classification: Trusted
Access GitHub Classroom
We will be using Github classroom to edit and manage the code base. All the core files for the application will be provided to you here. Please accept the invite below to join the classroom and get access to Assignment #1. You will be expected to work and make your commits to this repo.
1. Join the classroom https://classroom.github.com/a/f4UhorMp and login with your Github account.
2. Choose your student number from the list you are shown.
3. Click on the Accept the assignment button
4. After you accept the invitation, wait until the process is done.
5. Click on the link to go to your newly created repository
RMIT Classification: Trusted
6. You will be taken to your new repository. The core files for this assignment have been provided to you. Click the code button and clone this repo to your local machine to start working.
RMIT Classification: Trusted
Marking Guide
The Alpine Inc team needs to be able to understand why you chose to approach your solution the way you did. Create a document with details for each of the elements in your solution, explain how the element works and how it forms part of the overall DevOps process. Write as little as possible to communicate your message. Add screenshots where appropriate to demonstrate that you have completed the requirements of each section.
For a Pass
1. Create a Readme.md at the root of your git repo that contains the following sections:
Analysis of the problem (What are you trying to solve?) (5%)
Explain and justify the solution (How does the solution work?) (10%)
Writing quality, layout, and accuracy (5%)
2. Things that need to be added to your Continuous Integration build
Static Code Analysis / Lint (4%)
Unit testing (4%)
Ensure code coverage is checked (Hint: Research how you enable code coverage with
Jest) (4%)
Implement a failure scenario (4%)
Generating an artefact that can be deployed (4%)
3. Ensure proper branching is implemented (GitHub Flow is recommended)
Ensure new features are developed on feature branches and merged into main with Pull
Requests. Pull requests can be reviewed and approved by yourself. (10%)
RMIT Classification: Trusted
For Credit
4. Perform all tasks from the previous level and in addition:
Have your CI builds trigger when a change occurs to any branch (4%)
Ensure the pipeline works with multiple branches (12%)
Ensure artefacts are generated on the main branch ONLY (4%)
For Distinction
5. Perform all tasks from the previous level and in addition:
Run integration testing as part of the pipeline. Have the CI Pipeline ensure automated tests validate that the application integrates properly with the MongoDB Backend. You should be leveraging docker to stand up a containerised version of the DB and run tests against it. Integration tests are written in Jest and details on how to run these are included in the project ReadMe. (5%)
If the tests fail, break the build and report back why it failed in the log. (5%) For High-Distinction
6. Perform all tasks from the previous level and in addition:
Run end-to-end tests as part of the pipeline. End-to-end testing is a test that checks 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 the ReadMe file on the project. (10%)
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%)
RMIT Classification: Trusted
Plagiarism
All assignments will be checked with plagiarism-detection software; any student found to have plagiarized 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 RMITs page on Academic Integrity at https://www.rmit.edu.au/students/student-essentials/assessment-and- exams/academic-integrity
RMIT Classification: Trusted
Submission Procedure
Submit your assignment by using Website URL submission option:
Website URL, is the URL of your GitHub repository formatted like https://github.com/rmit-
computing-technologies/cosc2759-assignment-1-
Comment should be: Your full name and Student ID
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.
Contact the lecturer for extension related queries.
CS: assignmentchef QQ: 1823890830 Email: [email protected]
Reviews
There are no reviews yet.