Assignment 2 - CI/CD (resit)

This assignment is individual.

To resit, you must fill out a form so that we can arrange the presentation day. Deadline for registering: 07/07/2024 (Sunday).

1. Goal

The goal of this assignment is to master the core of continuous integration and delivery. To achieve this goal, you are required to implement workflows with GitHub Actions on a new repository.

2. Deliverables and Presentation

Each student will create a new private GitHub repository. The URL of the repository must be submitted on Canvas, and access should be given to the organization team (vu-sep) and to the TA assigned to evaluate your work (you will find this information in the presentation spreadsheet on the presentation day). The README.md file of your project should follow the provided report template.

Deadline (Canvas): 11/07/2024.

Each student must present their work with slides through screen sharing and answer questions. Each student must sign in for a presentation slot. We will share a spreadsheet for that as soon as the deadline for registering for the resit passes.

Presentation day (Zoom): 12/07/2024.

In summary:

1. Forked Repository URL: Submit on Canvas.

2. Final Report (README.md): Follow the provided template.

3. Presentation: Present slides and answer questions.

3. Tasks

3.0 Repository preparation

Your new private GitHub repository should only contain a README.md file and a LICENSE when created. Then, you should choose between Python and Java, and then add application and test code there. The code to be added must be from one of the following sources:

You must choose a different programming language than the one you chose for the normal assingment. That is, if you had previously submitted the assingment with the Java code, now you must use the Python code.

3.1 Workflows with GitHub Actions

In total, you must create 3 workflows in their repositories:

  1. Testing (testing.yml): This workflow is dedicated to compiling and testing the project each time a commit is made on the repository. Compilation and testing should be done by calling a build tool.

  2. Static analysis (static_analysis.yml): This workflow is dedicated to executing one static analysis tool to check for code quality attributes each time a pull request is created in the repository

  3. Release (release.yml): This workflow is dedicated to creating a release (with a new tag) on GitHub each time a commit containing the word "release" in its message is made on the main branch of the repository.

At the end of this task, your repository should have the following structure:

your_project/
├── .github/
│   └── workflows/
│       ├── testing.yml
│       ├── static_analysis.yml
│       └── release.yml
├── src/
├── tests/
├── LICENSE
├── README.md
└── <other files, depending on the build tools your group is using>

3.2 Report (README.md)

The README.md file in the root of your repository should document your work following the provided template (see Section 2).

4. Evaluation and Grading

4.1 Grading Rubrics

4.2 Eligibility

To qualify for a grade, the following criteria must be met:

  • Repository URL is submitted on Canvas by the deadline;

  • No modifications in the repository after the deadline;

  • Registration to a presentation slot by the deadline;

  • README.md follows the template;

  • You present your work with slides on the presentation day.

5. Ethics

Cases of plagiarism and assignment contents exchange will be reported to and managed by the official fraud committee. In case of fraud, the consequences of those acts may potentially lead to formal warning, inclusion of the formal warning in your VU student file, suspension from taking exams for a given period, expulsion from the VU.

Last updated