联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codehelp

您当前位置:首页 >> OS程序OS程序

日期:2023-04-10 09:14

COSC2759 Assignment 1 Specifications

Page 1

Deadline

% allocated to this assignment. To be submitted via

To be attempted

Scenario

Sunday 9 April 2023 (11:59 pm AEST)

35% (to be marked out of 100) GIT & Canvas

Individually

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

Docker Compose

Basic npm 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 files.

You task is to:

1. DefineaCIpipelinebycreatingafileinthe.github/workflowsdirectory.Your

pipeline will automatically execute on GitHub Action runners.

2. Defineyourreadme.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 fix 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 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. Jointheclassroomhttps://classroom.github.com/a/ghul3XDeandloginwith your Github account.

2. Chooseyourstudentnumberfromthelistyouareshown.

3. Clickonthe“Accepttheassignment”button

4. Afteryouaccepttheinvitation,waituntiltheprocessisdone.

5. Clickonthelinktogotoyournewlycreatedrepository



Page 5

6. Youwillbetakentoyournewrepository.Thecorefilesforthisassignmenthave 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. CreateaReadme.mdattherootofyourgitrepothatcontainsthefollowing 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. ThingsthatneedtobeaddedtoyourContinuousIntegrationbuild

● 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. Ensureproperbranchingisimplemented(GitHubFlowisrequired)

● 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%)

For Credit

4. Performalltasksfromthepreviouslevelandinaddition:

● 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. Performalltasksfromthepreviouslevelandinaddition:

● 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. Performalltasksfromthepreviouslevelandinaddition:

● 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%)

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 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 like

https://github.com/rmit-computing-technologies/cosc2759-assignment-1-
github username>

● 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 course coordinator Shekhar Kalra (shekhar.kalra@rmit.edu.au) for extension related queries

版权所有:留学生编程辅导网 2021,All Rights Reserved 联系方式:QQ:99515681 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。