diff_months: 13

COSC2759-CI/CD pipeline coding Assignment

Download Solution Now
Added on: 2023-03-29 05:11:19
Order Code: 487939
Question Task Id: 0
  • Subject Code :

    COSC2759

Scenario

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.

The source code for this application is stored in GitHub but the code itself is built and deployed manually from the lead developer’s (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 ?x 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.

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 con?guration and scaffolding scripts.

Tools to use:

  • GitHub (GitHub Classroom)
  • GitHubActions – used for creating the pipelines
  • Docker
  • DockerCompose
  • Basicnpm commands

After a lengthy and heated debate amongst the team, it was decided to use  GitHub Flow as the branching strategy. Rather than committing directly to the “main” branch, it was agreed to always use feature branches and pull requests. However it was also agreed that engineers could approve their own PR’s.

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 ?les.

You task is to:

  1. De?nea CI pipeline by creating a ?le in the .github/work?ows  Your pipeline will automatically execute on GitHub Action runners.
  2. De?neyour md.

Note that when you implement things like linting and end-to-end testing, you might discover bugs or errors which the development team had not noticed before! You will need to ?x them so that your pipeline passes. (Hint: some of the package versions pinned by the dev team in package.json might need to be “bumped” to operate in a more current environment.)

Access GitHub Classroom

We will be using Github classroom to edit and manage the code base. All the core ?les 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. Jointhe classroom https://classroom.github.com/a/ghul3XDe and login with your Github 
  2. Chooseyourstudent number from the list you are 
  1. Clickon the “Accept the assignment” button
  1. Afteryou accept the invitation, wait until the process is 
  1. Clickon the link to go to your newly created repository
  1. Youwill be taken to your new  The core ?les for this assignment have been provided to you. Click the code button and clone this repo to your local machine to start working.

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. Createa md at the root of your git repo that contains the following sections:
    • Analysisof the problem (What are you trying to solve?) (5%)
    • Explainand justify the solution (How does the solution work?) (10%)
    • Writingquality, layout, and accuracy (5%)
  1. Thingsthat need to be added to your Continuous Integration build
    • Static CodeAnalysis / Lint (4%)
    • Unittesting (4%)
    • Ensurecode coverage is checked (Hint: Research how you enable code coverage with Jest)

(4%)

  • Implementa failure scenario (4%)
  • Generatingan artefact that can be deployed (4%)
  1. Ensureproper branching is implemented (GitHub Flow is required)
    • Ensurenew features are developed on feature branches and merged into main with Pull Requests. Pull requests can be reviewed and approved by  (10%)

For Credit

  1. Performall tasks from the previous level and in addition:
  • Haveyour CI builds trigger when a change occurs to any branch (4%)
  • Ensurethe pipeline works with multiple branches (12%)
  • Ensureartefacts are generated on the main branch ONLY (4%)

For Distinction

  1. Performall tasks from the previous level and in addition:
  • Runintegration testing as part of the  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%)
  • Ifthe tests fail, break the build and report back why it failed in the  (5%)

For High-Distinction

  1. Performall tasks from the previous level and in addition:
  • Runend-to-end tests as part of the  End-to-end testing is a test that checks if the ?ow of an application from start to ?nish is behaving as expected. The purpose of performing end-to-end testing is to ?nd system dependencies and to ensure that the data integrity is maintained between various system components and systems. Please read the ReadMe ?le on the project.

(10%)

  • Executeautomated tests that validate that the application functions as expected from the user 

(5%)

  • Ifthe tests fail, break the build and report back why it failed in the  (5%)

Plagiarism

All assignments will be checked with plagiarism-detection software; any student found to have plagiarized would be subject to disciplinary action.

Plagiarism includes:

  • CONTRACTCHEATING: paying someone to do your work
  • CONTRACTCHEATING: getting someone else to write the test or attend demo
  • submittingwork that is not your own or submitting text that is not your own
  • copyingwork from/of previous/current semester students
  • allowingothers to copy your work via email, printouts, social media 
  • postingassignment questions (in full or partial) on external technical forums
  • sendingor passing your work to your friends
  • postingassignment questions on technical forums to get them 

A disciplinary action can lead to:

  • ameeting with the disciplinary committee
  • a score of zero for the assignment
  • apermanent record of copying in your personal university records and/or
  • expulsionfrom 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/academi c-integrity

Generative AI tools such as ChatGPT should be approached with caution. The AI is basically re-packaging text that somebody else has written. (We will discuss the issue in class, both in terms of academic standards and because the technology will be important in your careers.) Keep it simple and only submit work which you did yourself. Please ask if you have any questions or are not sure about anything.

Submission Procedure

Submit your assignment by using Website URL submission option:

  • Website URL, is the URL of your GitHub repository formatted likehttps://github.com/rmit-computing-technologies/cosc2759-assignment-1- github username>
  • Commentshould 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 course coordinator Shekhar Kalra (shekhar.kalra@rmit.edu.au) for extension related queries.

  • Uploaded By : Katthy Wills
  • Posted on : March 29th, 2023
  • Downloads : 0
  • Views : 254

Download Solution Now

Can't find what you're looking for?

Whatsapp Tap to ChatGet instant assistance

Choose a Plan

Premium

80 USD
  • All in Gold, plus:
  • 30-minute live one-to-one session with an expert
    • Understanding Marking Rubric
    • Understanding task requirements
    • Structuring & Formatting
    • Referencing & Citing
Most
Popular

Gold

30 50 USD
  • Get the Full Used Solution
    (Solution is already submitted and 100% plagiarised.
    Can only be used for reference purposes)
Save 33%

Silver

20 USD
  • Journals
  • Peer-Reviewed Articles
  • Books
  • Various other Data Sources – ProQuest, Informit, Scopus, Academic Search Complete, EBSCO, Exerpta Medica Database, and more