Final Project Setup


Setup Team on GitHub Classroom

  1. The youngest member of your team present on 3/22 should carefully create the team. Only one member needs to take this step first. Create a team named “Final Team ZN” where the Z is the Zone Number and N is the Table Number of your group. For example, “Final Team A1”. Accept the assignment on behalf of your team and, after refreshing, it will create a repository at github.com/comp423-24s/csxl-final-team-z9. Assignment acceptance link: https://classroom.github.com/a/mdWWzuiY

  2. After completing Step 1, all other members of the team should join the correct team and accept the assignment to be added to the repository. Assignment acceptance link: https://classroom.github.com/a/mdWWzuiY

Setup Project Tracking Board

  1. The oldest member of your team present on 3/22 should carefully create a project board.
  2. From your team’s repository, go to the Projects Tab. Then look for the green button regarding projects, click the down-facing triangle and select “New Project”. Click the New Project button.
  3. In the Project Templates Sidebar, select “Featured.” Then select the Kanban template.
  4. In the Project name choose “Final Team ZN” where Z is your zone and N is your table number.
  5. Confirm steps 3 and 4 are correct, then select “Create”.
  6. Go to Project Settings (top-right ellipses)
  7. Select Manage Access in the left-hand sidebar
  8. Under Invite Collaborators search for your team (Final Team ZN) and select it.
  9. Change Role to Admin.
  10. Press Invite.

Initialize Team Repository

  1. The second youngest and second oldest members of your team present on 3/22 should pair up on the second oldest member’s computer to initialize the team repository.
  2. In a terminal on your host system, not within VSCode, create a new directory with the name of your team’s final project repository and cd into it:
    • mkdir csxl-final-team-ZN (replace ZN with your team’s zone and table number)
    • cd csxl-final-team-ZN
  3. Initialize the new empty directory as a git repository:
    • git init
  4. Add a git remote repository named upstream bound to the public, open source CSXL web app repository:
    • git remote add upstream https://github.com/unc-csxl/csxl.unc.edu.git
  5. Pull the main branch from upstream:
    • git pull upstream main
  6. Add a git remote repository named origin. This will be bound to your team’s private final project repository. You will need to find the correct repository URL. Open your team’s final project repository on GitHub in a web browser, click the down triangle on the green Code button, and copy the Clone URL. Use this URL in the placeholder below:
    • git remote add origin TEAM_REPO_URL_PLACEHOLDER
  7. Switch to main: git switch main
  8. Push the main branch to the origin remote (your team’s repository): git push origin main
  9. Your team will work off of a staging branch named stage, rather than the main branch. Go ahead and establish a stage branch locally and push it:
    • git switch --create stage
    • git push origin stage

GitHub Repository Configuration

After the team repository has been initialized, the youngest member of the team needs to setup the following repository branch settings in GitHub. This can only be done after completing the prior steps:

  1. Settings
  2. General > Default Branch > Change Branch to stage
    • Press the Swap Button (not the Pencil!) and select stage
    • If you do not see stage, be sure you completed all the steps in “Initialize Team Repository”, then refresh this page and try again.
  3. Change to the Branches tab in the sidebar
    1. Add Branch Protection Rule to prevent any pushing to main
    2. Branch name pattern: main
    3. (Check) Lock branch
    4. (Check) Do not allow bypassing the above settings
    5. Save Changes with Create Button
  4. Add Branch Protection Rule to enforce a professional team workflow on stage
    1. Branch name pattern: stage
    2. (Check) Require a pull request before merging
      1. (Check) Require approvals: 1 required
      2. (Check) Dismiss stale pull request approvals when new commits are pushed
      3. (Check) Require approval of the most recent reviewable push
    3. (Check) Require conversation resolution before merging
    4. (Check) Require linear history
    5. (Check) Do not allow bypassing the above settings
    6. Save Changes

Setting up Team Member’s Development Repositories

After the GitHub Repository Configuration step has been completed, the other members of the team can setup their local development repositories. The team member who completed “Initialize Team Repository” can forego these steps.

  1. In a terminal on your host system, not within VSCode, clone your team’s final project repository and cd into it:
    • git clone FINAL-TEAM-REPOSITORY - Find the Final Team Repository Clone link from the Code dropdown in your GitHub project’s page.
    • cd csxl-final-team-ZN - Replace ZN with your team’s zone and table number.
  2. Fetch all branches:
    • git fetch --all
  3. Switch to the stage branch. This is the primary branch your team will work off of and merge into:
    • git switch stage
  4. Add a git remote repository named upstream bound to the public, open source CSXL web app repository:
    • git remote add upstream https://github.com/unc-csxl/csxl.unc.edu.git

Setting up your Development Environment

Go ahead and delete your Docker DevContainers for earlier exercises in the course. Delete their corresponding Volumes, as well. Don’t worry, your work is still secure on your host machine’s hard drive.

Before opening your cloned project in a DevContainer, remember there is a step required before the DevContainer will start up successfully. First open your project directory in a local VSCode instance and do not attempt to open it in a DevContainer. If you directly open in a DevContainer, you will certainly see an error.

Follow the instructions to get started found in the project’s docs directory: docs/get_started.md

Contributor(s): Kris Jordan