git

문제 제기 Git Action을 사용하는 도중, 브랜치 별로 다른 설정을 해야 할 일이 생겼습니다. 정확히는 main 브랜치에 push가 들어올 경우에만 review를 받은 후 action을 동작시켜야 했습니다. 팀에서 해결 방법을 찾지 못해 똑같은 파이프라인 yaml 파일을 두 개(ci-prd.yaml, ci.yaml) 만들어 사용했습니다. 한 파일은 main 브랜치에 push가 들어왔을 때, 다른 파일은 dev, stg 브랜치에 push가 들어왔을 때. 이러면 코드를 수정할 때 두 파일을 모두 수정해주어야 하고, 이로 인해 휴먼에러가 생기겠다 싶었습니다. 처음엔 브랜치 별로 job을 나눠서 job을 두 개 돌릴까도 생각해봤는데, 그러면 똑같은 코드를 두 번 써야하는 건 마찬가지라 패스했습니다. env..
목적Git Action과 AWS CodeDeploy 스택이 필요해서 직접 사용해보려고 합니다. Git Action으로도 CI/CD를 모두 진행할 수 있는데 왜 그렇게 하지 않는지도 생각해보았습니다. 제가 찾은 Git Action 배포 방식은 워크플로우에서 서버에 접속하여 수동으로 배포하는 방법 뿐 입니다. 그런데 워크플로우에서 실행시킨 프로세스는 워크플로우 종료와 함께 모두 종료시키는 것이 워크플로우의 원칙입니다. 실제로 Git Action에서 nohup으로 프로세스를 실행시키는 명령을 주더라도 워크플로우가 종료될 때 프로세스도 함께 종료됩니다. 임의로 뭔가를 건드려서 종료시키지 않을 수도 있지만 그러라고 만든 게.. 아니니까 다른 방법을 쓰는 것이 맞다고 생각합니다. 제가 Git Action을 사용하는..
실행 환경 AWS EC2 - Ubuntu 22.04 window Git Action Spring Boot 에러 파악 Git Action을 이용해 SpringBoot gradle 빌드를 진행 했습니다. Action에서 제공하는 yml을 사용하여 build를 했는데 gradlew를 실행할 수 없다는 에러가 발생했습니다. gradle 동작 방식을 몰라서 삽질을 좀 했습니다. Error: Gradle script '/home/runner/work/cloud-skills-sample-spring-boot-app/cloud-skills-sample-spring-boot-app/gradlew' is not executable. 원인 분석 찾아보니 gradlew 파일에 대한 실행 권한이 없어서 발생한 에러였습니다. A..
해당 글에서는 깃에 대한 개념은 다루지 않고 명령어만 다룹니다. 1. clone Git 저장소를 복사하고 싶을 때 사용합니다. 프로젝트의 히스토리를 전부 받아옵니다. git clone [url] git clone [] [--] [] clone 명령은 기본적으로 저장소의 main 브랜치를 클론합니다. clone하여 저장소가 로컬에 복제되었습니다. 디렉토리의 이름은 기본적으로 저장소의 이름과 동일하게 설정됩니다. 디렉토리 명 변경하기 저장소 뒤에 디렉토리 명을 붙여주면 됩니다. 2. branch 새 브랜치를 생성합니다. 옵션과 함께 사용하여 브랜치를 관리합니다. git branch # 로컬 저장소의 모든 브랜치 확인 git branch [브랜치명] # 새 브랜치 생성 git branch -a # 로컬과 원격..
Terraform 스터디 프로젝트로 이전에 AWS 3Tier를 구축했던 걸 Terraform을 활용해 다시 구축해 보기로 했습니다. 전체 아키텍쳐 구상(진행하며 변경 사항 추가할 예정)입니다. 주제 Terraform을 이용한 AWS 3-Tier 구성 중점 과제 인스턴스 모듈화 및 쉘 스크립트 작성 내용 WEB-WAS-DB 구조 인스턴스 모듈화 컴파일 설치로 진행 Terraform 코드를 Git에 push하면 GitAction을 이용해 AWS에 프로비저닝 되는 방식 수동으로 관리하는 부분 없이 Terraform으로 프로비저닝 했을 때 DB에서 불러온 내용을 웹에서 확인할 수 있어야 함 state 파일은 Terraform Cloud 사용 생각해 볼 내용 1. prod/dev을 어떻게 구분해서 쓸지? 일단 d..
· 개발
github 토큰 인증을 사용하려니 push할 때마다 토큰을 알려달라고 해서 SSH 접속 방식을 찾았다. hh@DESKTOP-4UIU15G:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hh/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hh/.ssh/id_rsa Your public key has been saved in /home/hh/.ssh/id_rsa.pub The key ..
최종 발표까지 모두 끝났다. 하고 싶었던 것들 거의 다 적용했고 팀원이 열심히 해줘서 너무 좋았다. 프로젝트에 적용한 것 슬랙봇 기능 랜덤 인사 구현 학교 중식 식단 크롤링 및 식단 평가 학과 사무실 위치 안내(Levenshtein distance 사용) 제곱한 숫자 알려주기 Husky pre-commit으로 ESLint 강제 오토 픽스(ESLint-staged 적용) prepare-commit-msg로 브랜치 타입과 이슈번호 자동으로 커밋에 붙이고 커밋 규칙 주석으로 띄우기 테스트 단위 테스트 - Mocha Test 통합 테스트 - 또 다른 슬랙봇을 사용한 통합 테스트 구축 로그 winston 모듈 사용 GitHub 브랜치 별 규칙 적용 Issue template, PR template 적용 Actio..
배경 슬랙봇을 서버에서 항상 돌리고 싶었다. 원래는 도커파일 작성해서 올리려고 했는데 마감이 코앞이라 거기까진 못할 것 같고 이번엔 rsync 접속을 사용해보기로 했다. 그리고 rsync 접속은 안 해본 거기도 하니까. Naver Cloud, Git Action(Appleboy, butnett01 사용) Naver Cloud 서버 만들기 서버부터 생성해준다. 인증키가 없으면 '새로운 인증키 생성'으로 하면 된다. 포트 포워딩 설정을 해준다. 사용할 포트 번호를 입력하고 여기서 서버 접속용 공인 IP를 기록해둔다. 사용해야 하니까. 추가버튼 누르고 밑에 적용까지 눌러야 한다. 서버 관리 및 설정 변경에서 관리자 비밀번호 탭에 들어가서 아까 인증키를 넣으면 비밀번호가 나온다. 이 비밀번호도 기록해둔다. 로그..
esLint, Husky 설치 및 pre-commit 초기 구성은 아래 글 참고 2022.11.11 - [프로젝트/슬랙봇(이제 CI를 곁들인)] - Code Convention Check(ESLint, Husky) Code Convention Check(ESLint, Husky) Code Convention Check 장점 여러 사람이 함께 작업하는 코드에 대해 가독성을 높임 유지보수의 용이성 코드 스타일을 동일한 형태로 맞출 수 있음 우리 팀에서는 ESLint를 사용하고 Prettier는 자율적 대 su-mmer.tistory.com lint-staged 작업 아래의 명령어로 lint-staged를 설치한다. npm install --save-dev lint-staged package.json에서 아래..
배경 너무 하고 싶었던건데 드디어 했다. 정규표현식이라 복잡해보여서 미뤄두고 있었는데 생각보다 금방 했다. husky에서 pre-commit만 사용하긴 아까워서 다른 hook들에 대해 찾아보다가 prepare-commit-msg를 알게 되었다. 커밋할 때 템플릿을 띄워주면 작성할 때 참고할 수 있어 편한데, git config처럼 개인이 선택적으로 사용하는 방법 말고 좀 더 강제적인 방법이 필요했다. prepare-commit-msg 파일 생성은 했는데 정규표현식에 부딪혀서 미뤄두다가(과제에 다른 할 일들이 우선이라) 이번에 해결했다. 어렵지 않다! 결과 자동으로 브랜치명(#이슈번호)의 형태로 커밋을 생성해준다. 아래에 커밋 형식 작성 템플릿을 띄워준다. prepare-commit-msg 실행 시점 Gi..
su-mmer
'git' 태그의 글 목록