Skip to content

Setting Up GitHub CodeSpaces for Developer Convenience #14

@wopox1337

Description

@wopox1337

Proposal

We propose to configure GitHub CodeSpaces for all repositories within the ReHLDS organization that involve C/C++ development. CodeSpaces offer a cloud-based development environment, allowing developers to quickly set up a fully configured instance of their projects without local setup. This initiative aims to enhance productivity, streamline onboarding, and provide a consistent development experience across the team.

Objectives

  1. Streamlined Onboarding: New contributors can easily access a pre-configured development environment, significantly reducing the time required to get started with the project.

  2. Consistent Development Environment: CodeSpaces ensure that all developers work in the same environment, minimizing the "it works on my machine" problem and reducing inconsistencies caused by different local setups.

  3. Increased Productivity: Developers can quickly access their projects and start coding from anywhere, eliminating the need for complex local configurations.

Implementation Steps

  1. Create a .devcontainer Directory:

    • Within each repository, create a .devcontainer directory that will contain configuration files necessary for setting up the CodeSpaces environment.
  2. Define devcontainer.json:

    • Create a devcontainer.json file within the .devcontainer directory. This file will specify the development environment, including:
      • Base image (e.g., a Linux distribution with C/C++ tools)
      • Extensions to install (e.g., C/C++ IntelliSense)
      • Any required packages or tools to install (e.g., compilers, build systems)

    Example devcontainer.json:

    {
      "name": "C/C++ Development",
      "image": "ubuntu:20.04",
      "extensions": [
        "ms-vscode.cpptools",
        "ms-vscode.cmake-tools"
      ],
      "settings": {
        "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
        "cmake.configureOnOpen": true
      },
      "postCreateCommand": "apt-get update && apt-get install -y build-essential cmake"
    }

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

Status

Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions