개발을 하다 보면 로컬에서 작업 중인 파일과 원격 저장소의 최신 커밋이 충돌하는 상황을 꽤나 자주 볼 수 있다. 로컬에서 수정한 파일을 커밋하지 않은 상태에서 git pull을 시도할 경우에 충돌이 발생한다. 우선 시나리오를 간단하게 생각해보자. 원격 저장소에 A 커밋이 추가되고 내가 수정 중인 파일도 그 커밋에 포함되어 있는 파일이다. 로컬 -> 로컬 워킹 디렉토리에서 3개의 커밋을 완료한 후이고 수정 중인 파일이 있다. 이 파일은 아직 커밋되지 않았다. 원격 -> 이미 3개의 커밋이 추가된 상태에서 A 커밋이 추가되었는데 거기에 내가 수정 중인 파일이 포함되어 있었다. 로컬에서 작업 중이던 파일을 수정하고 있던 중 원격 저장소에 A 커밋이 추가된 사실을 인지했다. 너무 오래 git pull을 하지 ..
Git, CICD

git과 github는 개발자라면 절대로 빼놓을 수 없는 협업 툴이다. 이번 시간엔 4명의 팀원과 함께 파이썬 streamlit을 활용한 간단한 코드 퀴즈 프로그램을 만들면서 github를 어떻게 활용하였는지 알아보겠다. 협업 내용을 좀 자세하게 보고 싶다면 https://github.com/CodeQuizz CodeQuizzCodeQuizz has one repository available. Follow their code on GitHub.github.com 여기로 와서 보면 된다. github에선 그냥 맘대로 커밋을 하고 푸시를 해버리면 누가 어떤 걸 올렸는지 어떤 부분에 대한 내용인지 정확히 파악을 할 수 없다. 최대한 사람들이 알아보기 좋게 github에 꼭 추가 해야 하는 것들이 있다. ..

오늘은 쉽지만 중요한 깃의 branch 생성 & 병합에 대해 공부해보겠다. 이런 식으로 브랜치를 생성하고 머지하는 연습을 해보겠다. 의도적으로 충돌도 한 번 내어 보겠다. 먼저 touch work.txt 파일을 만들고 저장소를 초기화 해주는 명령어를 사용해보자 git init 이러면 이제 .git 저장소가 생기는 것이다. 여기서 이제 작업을 시작하면 된다. 첫 번째 메인 브랜치에서 작업을 해보자. git add.git commit -m "first commit" git commit -am을 통해 바로 스테이징에 왜 안올리는가 싶을 수 있으나 git commit -am 명령어가 처음에 동작하지 않는 이유는 -a 옵션이 수정된 파일을 자동으로 스테이징(stage)하는 역할을 하지만, ..

스프링 부트를 공부하며 간단하게 쇼핑몰 시스템을 구현하는 서비스를 git 연습도 같이 하는 김에 github에 연결하여 하려고 했다. 기능을 하나씩 구현하면서 저장소에 올리면서 관리하려고 했는데 이런 오류가 생겼다. 처음엔 develop 브랜치가 로컬에 없어서 git checkout -b develop 명령어로 develop을 만들고 push를 했는데 add와 commit은 되는데 push가 자꾸 이런 오류가 생겨서 왜 그런지 고민을 했다. hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushin..

이전에 Docker와 EC2를 활용하여 내가 만든 스프링부트 사이트를 띄우는 것까지 했다. 이번 시간엔 Github Actions를 활용한 CI/CD 파이프라인을 구축하여 자동배포를 해보는 시간을 가지겠다. 1. Github Actions 접속 먼저 깃허브에서 내 레포지토리에 들어온 후 상단에 있는 actions에 들어간다. 2. 워크플로우 작성 이제 워크플로우를 작성하면 된다. 스프링 프로젝트 이므로 Java with Gradle을 선택해준다. yml 파일의 이름을 설정하고 스크립트를 넣어준다. workflow 이름이나 브랜치명, jdk 버전은 내가 하고 있는 프로젝트의 환경에 맞춰서 수정하면 된다. # Workflow 이름name: Spring Boot & AWS CI/CD#..

Terraform과 같은 유명한 IaC는 전부터 한 번 해보려고 했으나 미루기만 했다. CI/CD에 관심이 많은 이 참에 한 번 해보겠다. aws를 사용할 것이다, Terraform이란? Terraform은 인프라스트럭처를 코드(Infrastructure as Code, IaC)로 관리할 수 있게 해주는 오픈 소스 도구이다. 클라우드 리소스 및 물리적 인프라를 선언적으로 정의하고 관리할 수 있도록 돕는 역할을 한다. 간단하게 기능과 장점에 대해 알아보자. 1. 선언적 구성사용자가 원하는 인프라의 상태를 코드로 정의하고 테라폼이 실제 환경에서 구현.인프라를 코드로 관리함으로써 반복 가능하고 자동화된 인프라 배포를 가능하게 한다. 2. 다양한 공급자 지원aws, azure,gcp 등 여러 클라우..

프로젝트를 하기 전 작성해야 하는 WBS( Work Breakdown Structure )를 위해 Jira에 대해 공부하게 되었다. Jira는 CI/CD는 아니지만 어떠한 프로젝트를 하기 위해 필요한 WBS 작성과 협업에 도움이 되기에 공부하는 것이 좋다. 서론으로 WBS와 CI/CD와의 차이를 간단하게 알아보자.구분WBSCI/CD목적프로젝트 범위 정의, 작업 관리소프트웨어 자동화, 빠른 출시기능워크 패키지 분해, 예상 시간/책임자/자원 정의, 시각적 표현코드 통합, 자동 테스트, 자동 배포, 배포 후 모니터링사용 시점프로젝트 초기프로젝트 후반활용 분야다양한 분야소프트웨어 개발도구마인드맵, 스프레드시트, WBS 전용 도구Jenkins, GitLab CI/CD, CircleCI 등 먼저 WBS ..

git은 버전 관리를 위한 소프트웨어고github는 이 git으로 저장돼서 원격전송된 파일들이 저장되는 공간을 제공하는 서비스다. git은 영상 찍는 앱. github는 유튜브! 이해 가지? 깃허브(GitHub)에서 사용되는 주요 Git 명령어 몇 가지를 알아보자. 깃허브는 Git을 기반으로 하는 코드 호스팅 플랫폼이다, Git 명령어를 사용하여 버전 관리와 협업을 할 수 있다. 개발자들한텐 필수임. git clone: 저장소를 복제한다.git clone 이 명령어는 저장소를 내려받는 것이라고 생각할 수 있다. 저장소는 마치 책상 위의 문서 모음이라고 상상해보자. git clone은 그 문서 모음을 통째로 복사해와서 내 책상 위에 똑같은 모음을 만들어 놓는 것이라고 할 수 있다. ..