Project 5 Rubric

by ADMIN 17 views

Project Score: / 102

The Project 5 Rubric is a comprehensive guide to evaluating the quality and completeness of a continuous deployment project. This rubric assesses various aspects of the project, including GitHub repository contents, semantic versioning, deployment, project description and diagram, GitHub Action workflow, bash script, webhook hook definition file, and webhook service file.

Milestone Extra Credits

  • Milestone 1 = Part 1 - +5% = 5.1 pts: This milestone focuses on the initial setup of the project, including the creation of a GitHub repository, setting up semantic versioning, and configuring the GitHub Action workflow.
  • Milestone 2 = Part 1 + 2 - +5% = 5.1 pts: This milestone builds upon the previous one, focusing on the deployment of the application to an EC2 instance, setting up Docker, and configuring the webhook listener.
  • Milestone 3 = Part 1 + 2 + 3 - +5% = 5.1 pts: This milestone completes the project, focusing on the finalization of the project description and diagram, the configuration of the webhook service, and the testing of the continuous deployment pipeline.

GitHub Repository Contents ( / 7)

The GitHub repository contents are a crucial aspect of the project, as they provide a clear understanding of the project's structure and organization. The following items are expected to be present in the repository:

  • README-CD.md: This file provides a summary of the project contents and links to other relevant documents.
  • angular-site folder: This folder contains the application code and is expected to be well-organized and easy to navigate.
  • Dockerfile: This file is used to build the Docker image and is expected to be well-structured and easy to understand.
  • GitHub action yml file in .github/workflows: This file is used to configure the GitHub Action workflow and is expected to be well-structured and easy to understand.
  • deployment folder: This folder contains the deployment-related files, including the bash script, webhook definition file, and webhook service file.

Part 1 - Semantic Versioning ( / 11)

Semantic versioning is a crucial aspect of the project, as it ensures that the application is properly versioned and that the continuous deployment pipeline is triggered correctly. The following items are expected to be present in this part:

  • Generating tags: This section focuses on the creation of tags in the Git repository and is expected to include information on how to see tags in a Git repository, how to generate a tag in a Git repository, and how to push a tag in a Git repository to GitHub.
  • CI with GitHub Actions: This section focuses on the configuration of the GitHub Action workflow and is expected to include information on the summary of what the workflow does and when it does it, the explanation of workflow steps, and the explanation of values that need to be updated if used in a different repository.
  • Testing & Validating: This section focuses on the testing and validation of the continuous deployment pipeline and is expected to include information on how to test that the workflow did its tasking and how to verify that the image inHub works when a container is run using the image.

Part 2 - Deployment ( / 36)

The deployment part of the project focuses on the deployment of the application to an EC2 instance and the configuration of the webhook listener. The following items are expected to be present in this part:

  • EC2 Instance Details: This section focuses on the configuration of the EC2 instance and is expected to include information on the AMI information, instance type, recommended volume size, security group configuration, and security group configuration justification.
  • Docker Setup on OS on the EC2 instance: This section focuses on the setup of Docker on the EC2 instance and is expected to include information on how to install Docker for the OS on the EC2 instance, additional dependencies based on the OS on the EC2 instance, and how to confirm that Docker is installed and that the OS on the EC2 instance can successfully run containers.
  • Testing on EC2 Instance: This section focuses on the testing of the application on the EC2 instance and is expected to include information on how to pull the container image from DockerHub, how to run the container from the image, and how to verify that the container is successfully serving the Angular application.
  • Scripting Container Application Refresh: This section focuses on the creation of a bash script that will kill and remove the previously running container, pull the image from DockerHub, and start a new container with the freshly pulled image.
  • Configuring a webhook Listener on EC2 Instance: This section focuses on the configuration of the webhook listener on the EC2 instance and is expected to include information on how to install Adnanh's webhook, how to verify successful installation, and how to configure the webhook definition file.
  • Configuring a Payload Sender: This section focuses on the configuration of the payload sender and is expected to include information on the justification for selecting GitHub or DockerHub as the payload sender, how to enable the selection to send payloads to the EC2 webhook listener, and how to verify a successful payload delivery.
  • Configure a webhook Service on EC2 Instance: This section focuses on the configuration of the webhook service on the EC2 instance and is expected to include information on how to enable and start the webhook service, how to verify that the webhook service is capturing payloads and triggering the bash script, and how to link to the service file in the repository.

Part 3 - Project Description & Diagram ( / 12)

The project description and diagram part of the project focuses on the creation of a project overview, resources section, and README.md in the root of the repository. The following items are expected to be present in this part:

  • Continuous Deployment Project Overview: This section focuses on the creation of a project overview and is expected to include information on the goal of the project, the tools used in the project, and their roles.
  • Resources Section: This section focuses on the creation of a resources section and is expected to include information on the resources used in the project, such as documentation, images, and videos.
  • README.md in root of repository: This section focuses on the creation of a README.md in the root of the repository and is expected to include information on the project contents, links to other relevant documents and a brief summary of what users will find in each document.

GitHub Action Workflow ( / 10)

The GitHub Action workflow part of the project focuses on the configuration of the GitHub Action workflow and is expected to include information on the secrets defined in the repository settings, triggers on push of tag, collects metadata using action to generate container image tags, builds an image using the Dockerfile, and pushes images to the DockerHub repository.

bash script ( / 6)

The bash script part of the project focuses on the creation of a bash script that will kill and remove the previously running container, pull the image from DockerHub, and start a new container with the freshly pulled image. The script is expected to be well-structured and easy to understand.

webhook hook definition file ( / 6)

The webhook hook definition file part of the project focuses on the creation of a webhook hook definition file that will successfully define a hook, run the bash script when triggered, and only trigger from validated sources.

webhook service file ( / 4)

The webhook service file part of the project focuses on the creation of a webhook service file that will correctly format the file, start the webhook, and load the hook definition file.

Part 4 - Demonstration ( / 10)

The demonstration part of the project focuses on the demonstration of the continuous deployment pipeline and is expected to include information on the current state of the site running on the server, making a change to the project file, committing and pushing the change, tagging the commit and pushing the tag, the GitHub Action triggering, relevant logs that it worked, DockerHub receiving a new set of tagged images, payload sent log from DockerHub or GitHub, status of webhook running as a service on the server, webhook logs that validate container refresh has been triggered, and post-change state of the site running on the server.

Common Point Deductions

The following common point deductions are expected to be applied to the project:

  • -5% = 5.1 pts: Dockerfile does not build viable container image to run application.
  • -5% = 5.1 pts: GitHub Action does not push image(s) to DockerHub.
  • -5% = 5.1 pts: Images in DockerHub do not use semantic versions in tagging.
  • -5% = 5.1 pts: DockerHub / GitHub does not have a configured Webhook.
  • -5% = 5.1 pts: webhook on instance does not trigger with payload from DockerHub or GitHub.
  • -10% = 10.2 pts: Documentation fails to address what was not implemented / implies the project is fully functional. Always document shortcomings and note what is "research" on how the rest should be done.
  • -30% = 30.6 pts: Documentation not well organized with markdown OR includes project descriptive text.
  • No citations of referenced material: May result in Academic Integrity Violation with a penalty of a 0 on the project.

Q: What is the purpose of the Project 5 Rubric?

A: The Project 5 Rubric is a comprehensive guide to evaluating the quality and completeness of a continuous deployment project. It assesses various aspects of the project, including GitHub repository contents, semantic versioning, deployment, project description and diagram, GitHub Action workflow, bash script, webhook hook definition file, and webhook service file.

Q: What are the key components of the Project 5 Rubric?

A: The key components of the Project 5 Rubric include:

  • GitHub Repository Contents: This section focuses on the organization and structure of the GitHub repository.
  • Semantic Versioning: This section focuses on the use of semantic versioning in the project.
  • Deployment: This section focuses on the deployment of the application to an EC2 instance and the configuration of the webhook listener.
  • Project Description & Diagram: This section focuses on the creation of a project overview, resources section, and README.md in the root of the repository.
  • GitHub Action Workflow: This section focuses on the configuration of the GitHub Action workflow.
  • Bash Script: This section focuses on the creation of a bash script that will kill and remove the previously running container, pull the image from DockerHub, and start a new container with the freshly pulled image.
  • Webhook Hook Definition File: This section focuses on the creation of a webhook hook definition file that will successfully define a hook, run the bash script when triggered, and only trigger from validated sources.
  • Webhook Service File: This section focuses on the creation of a webhook service file that will correctly format the file, start the webhook, and load the hook definition file.

Q: What are the common point deductions for the Project 5 Rubric?

A: The common point deductions for the Project 5 Rubric include:

  • -5% = 5.1 pts: Dockerfile does not build viable container image to run application.
  • -5% = 5.1 pts: GitHub Action does not push image(s) to DockerHub.
  • -5% = 5.1 pts: Images in DockerHub do not use semantic versions in tagging.
  • -5% = 5.1 pts: DockerHub / GitHub does not have a configured Webhook.
  • -5% = 5.1 pts: webhook on instance does not trigger with payload from DockerHub or GitHub.
  • -10% = 10.2 pts: Documentation fails to address what was not implemented / implies the project is fully functional. Always document shortcomings and note what is "research" on how the rest should be done.
  • -30% = 30.6 pts: Documentation not well organized with markdown OR includes project descriptive text.
  • No citations of referenced material: May result in Academic Integrity Violation with a penalty of a 0 on the project.

Q: What is the significance of the Project 5 Rubric?

A: The Project 5 Rubric is a comprehensive guide to evaluating the quality and completeness of a continuous deployment project. It assesses various aspects of the project, including GitHub repository contents, semantic versioning, deployment, project and diagram, GitHub Action workflow, bash script, webhook hook definition file, and webhook service file. The rubric provides a clear understanding of the project's structure and organization, ensuring that the project meets the required standards and expectations.

Q: How can I improve my project to meet the requirements of the Project 5 Rubric?

A: To improve your project and meet the requirements of the Project 5 Rubric, focus on the following areas:

  • GitHub Repository Contents: Ensure that the GitHub repository is well-organized and structured, with clear and concise documentation.
  • Semantic Versioning: Use semantic versioning in the project to ensure that the application is properly versioned and that the continuous deployment pipeline is triggered correctly.
  • Deployment: Deploy the application to an EC2 instance and configure the webhook listener to ensure that the application is properly deployed and that the webhook listener is triggered correctly.
  • Project Description & Diagram: Create a project overview, resources section, and README.md in the root of the repository to provide a clear understanding of the project's structure and organization.
  • GitHub Action Workflow: Configure the GitHub Action workflow to ensure that the continuous deployment pipeline is triggered correctly and that the application is properly deployed.
  • Bash Script: Create a bash script that will kill and remove the previously running container, pull the image from DockerHub, and start a new container with the freshly pulled image.
  • Webhook Hook Definition File: Create a webhook hook definition file that will successfully define a hook, run the bash script when triggered, and only trigger from validated sources.
  • Webhook Service File: Create a webhook service file that will correctly format the file, start the webhook, and load the hook definition file.

By focusing on these areas, you can improve your project and meet the requirements of the Project 5 Rubric.