프로젝트 환경설정#
이 가이드는 운영체제 수업을 위한 프로젝트 환경을 설정하는 방법을 자세히 설명합니다. 프로젝트를 시작하기 전에 아래 단계를 따라 환경을 설정해주세요.
리포 복제#
먼저, os-2024 저장소를 자신의 GitHub 계정으로 복제(Fork)합니다. 복제한 저장소의 URL은 https://github.com/your_github_id/os-2024.git
와 같은 형식이 될 것입니다.
그 다음, 복제한 저장소를 로컬 컴퓨터로 클론합니다. 아래 명령을 터미널에서 실행하세요:
mkdir -p ~/workspace/projects \
&& git clone https://github.com/your_github_id/os-2024.git ~/workspace/projects/os-2024 \
&& cd ~/workspace/projects/os-2024
mkdir -p ~/workspace/projects
:~/workspace/projects
디렉토리를 생성합니다. 이 디렉토리는 프로젝트를 저장할 공간입니다.git clone https://github.com/your_github_id/os-2024.git
: 복제한 저장소를 로컬로 클론합니다.your_github_id
부분은 본인의 GitHub 아이디로 대체해주세요.cd ~/workspace/projects/os-2024
: 클론한 저장소의 디렉토리로 이동합니다.
가상 환경 생성 및 활성화#
다음으로, 프로젝트를 위한 Python 가상 환경을 생성하고 활성화합니다. 아래 명령을 실행하세요:
direnv allow
이 명령은 리포 디렉토리에 있는 .envrc
파일을 실행합니다. .envrc
파일은 프로젝트에 필요한 환경 변수를 설정하고, 가상 환경을 활성화합니다. 파일의 내용은 다음과 같습니다:
#!/usr/bin/env bash
export PYTHON_KEYRING_BACKEND="keyring.backends.null.Keyring"
export PROJECT_NAME="os2024"
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
export PROJECT_ROOT
VIRTUAL_ENV="${WORKON_HOME}/${PROJECT_NAME}"
if [ -e "${VIRTUAL_ENV}/bin/activate" ]; then
# shellcheck disable=SC1091
source "${VIRTUAL_ENV}/bin/activate"
else
python3 -m venv "${VIRTUAL_ENV}"
# shellcheck disable=SC1091
source "${VIRTUAL_ENV}/bin/activate"
pip install --upgrade pip setuptools wheel
fi
이 스크립트는 다음과 같은 작업을 수행합니다:
필요한 환경 변수를 설정합니다.
프로젝트 이름(
os2024
)으로 Python 가상 환경을 생성합니다.가상 환경을 활성화합니다.
가상 환경에 최신 버전의
pip
,setuptools
,wheel
을 설치합니다.
direnv allow
명령을 실행하면, 이제 리포 디렉토리에 진입할 때마다 가상 환경이 자동으로 활성화됩니다.
프로젝트 의존성 설치#
프로젝트에 필요한 Python 패키지를 설치하기 위해 아래 명령을 실행합니다:
poetry install --with dev
이 명령은 pyproject.toml
파일에 정의된 모든 의존성 패키지를 설치합니다. --with dev
옵션은 개발에 필요한 패키지도 함께 설치합니다.
설치가 완료되면, 다음 명령을 실행하여 프로젝트가 제대로 설치되었는지 확인합니다:
os2024
이 명령은 프로젝트의 기본 스크립트를 실행합니다. 정상적으로 설치되었다면, 프로젝트 정보가 출력될 것입니다.
리포 동기화 및 프로젝트 브랜치 생성#
다음으로, 본인이 복제한 리포를 원본 리포(os-2024)와 동기화합니다. 이를 위해 원본 리포를 upstream
으로 추가하고, 최신 변경사항을 가져옵니다:
git remote add upstream https://github.com/chu-aie/os-2024.git \
&& git fetch upstream
git remote add upstream https://github.com/chu-aie/os-2024.git
: 원본 리포를upstream
이라는 이름으로 추가합니다.git fetch upstream
:upstream
리포의 최신 변경사항을 가져옵니다.
그런 다음, 프로젝트를 위한 새 브랜치를 생성합니다. 브랜치 이름은 your_github_id/project_patch_#
형식으로 짓습니다. 예를 들어, GitHub 아이디가 johndoe
이고 첫 번째 프로젝트라면 브랜치 이름은 johndoe/project_patch_1
이 됩니다. 아래 명령을 실행하세요:
git checkout -b your_github_id/project_patch_1 main
이 명령은 main
브랜치로부터 새 브랜치를 생성하고, 그 브랜치로 전환합니다.
Note
주의사항: 주별 과제의 경우 브랜치 이름에 주차 번호를 포함하는 것이 좋습니다. 예를 들어, 6주차 과제라면 브랜치 이름을 your_github_id/week06
로 지정합니다:
git checkout -b your_github_id/week06 main
브랜치를 최근의 main 브랜치로 업데이트하려면 다음 명령을 실행하세요:
git checkout main \
&& git pull upstream main \
&& git rebase main your_github_id/project_patch_1
프로젝트 폴더 생성#
이제 프로젝트를 위한 폴더를 생성합니다. 템플릿 폴더를 복사하여 프로젝트 폴더를 생성하세요:
cp -r src/os2024/book/projects/template src/os2024/book/projects/your_github_id
이 명령은 src/os2024/book/projects/template
폴더를 src/os2024/book/projects/your_github_id
폴더로 복사합니다. your_github_id
부분은 본인의 GitHub 아이디로 대체해주세요.
그런 다음, src/os2024/book/projects/your_github_id/index.md
파일을 열어 프로젝트 설명을 작성합니다. 이 파일은 프로젝트의 메인 페이지 역할을 합니다. 파일을 열어 다음과 같이 수정하세요:
제목을 본인의 프로젝트 이름으로 변경합니다.
프로젝트 설명을 작성합니다. 프로젝트의 목적, 주요 기능, 사용 기술 등을 설명합니다.
# 프로젝트 제목
프로젝트 설명을 여기에 작성합니다. 프로젝트의 목적, 주요 기능, 사용 기술 등을 설명합니다.
## 소제목 추가
내용 작성
프로젝트 커밋#
프로젝트 폴더를 생성하고 설명을 작성했으면, 변경 사항을 커밋합니다:
git add src/os2024/book/projects/your_github_id \
&& git commit -m "feat: initialize project directory of your_github_id" \
&& git push --set-upstream origin your_github_id/project_patch_1
이 명령은 다음과 같은 작업을 수행합니다:
src/os2024/book/projects/your_github_id
폴더를 Git 스테이징 영역에 추가합니다.“feat: initialize project directory of your_github_id”라는 메시지로 커밋을 생성합니다.
커밋을
your_github_id/project_patch_#
브랜치에 푸시합니다.
PR 생성#
GitHub에서 본인의 리포지토리로 이동하여 your_github_id/project_patch_#
브랜치를 선택합니다. 그런 다음, “Pull Request” 버튼을 클릭하여 새 PR을 생성합니다.
PR 제목은 “feat: Initialize project directory of your_github_id”로 설정하세요.
프로젝트 진행#
이제 프로젝트를 진행할 준비가 되었습니다. 프로젝트를 진행하면서 필요한 파일을 생성하고, 코드를 작성하세요.
주기적으로 다음 명령을 실행하여 변경 사항을 커밋하고, PR을 생성하세요:
git add . \
&& git commit -m "feat: update project progress by your_github_id" \
&& git push origin your_github_id/project_patch_1 \
&& gh pr create --title "feat: Update project progress by your_github_id" --body "This PR updates project progress by your_github_id"
이 명령은 다음과 같은 작업을 수행합니다:
모든 변경 사항을 Git 스테이징 영역에 추가합니다.
“feat: update project progress by your_github_id”라는 메시지로 커밋을 생성합니다.
커밋을
your_github_id/project_patch_#
브랜치에 푸시합니다.“feat: Update project progress by your_github_id”라는 제목과 “This PR updates project progress by your_github_id”라는 내용으로 새 PR을 생성합니다.
프로젝트 완료#
프로젝트를 완료했으면, 마지막으로 다음 명령을 실행하여 변경 사항을 커밋하고, 최종 PR을 생성합니다:
git add . \
&& git commit -m "feat: complete project by your_github_id" \
&& git push origin your_github_id/project_patch_1 \
&& gh pr create --title "feat: Complete project by your_github_id" --body "This PR completes project by your_github_id"
이 명령은 앞서 설명한 것과 유사한 작업을 수행하지만, 커밋 메시지와 PR 제목/내용이 프로젝트 완료를 나타낸다는 점이 다릅니다.
이상으로 프로젝트 환경설정 가이드를 마칩니다. 프로젝트를 즐겁게 진행하시기 바랍니다!