본문 바로가기

개발

(68)
깃 망한 커밋 없애기 ^*^ git reset upstream main to specific commit 사이드 프로젝트 하다가 무지성 커밋 & PR 한 목록들이 있었는데... 깔끔히 나 그런 거 안한 척 ^^ 해보기로 했다 사이드 프로젝트 A -> upstream fork 한 me/A -> origin 얘를 pc에 클론받음 -> local 로컬에서 main 브랜치로 이동 git switch main 아직 upstream이 연결이 안 되어있다면 연결해준다 git remote add upstream 깃주소 git fetch upstream git pull upstream main main으로부터 새 브랜치를 만들어 준다 git checkout -b 새브랜치 main 소스를 수정하고 커밋 메시지를 컨벤션에 맞게 예쁘게 적어준다 git commit -m "커밋메시지" git push origin 새브랜치 다시 메..
Github Actions을 이용한 ECS 배포 자동화 backend : Python Django Dockerfile을 기반으로 Docker image를 빌드하여 ECS Fargate를 이용해 배포한다. * 원래는 .env 에 환경변수를 저장해 os.environ.get(변수) 로 가져왔는데, .env 파일은 깃허브에 올리지 않기 때문에 깃헙 액션에서 빌드-배포를 할때 변수 값을 Github Actions Secrets 사용해 넣어주고 Dockerfile과 yml 파일에서 이미지 빌드 시 해당 변수를 받아올 수 있도록 했다. FROM python:3.9-alpine COPY frontend /code/backend/frontend/ COPY ./backend/ /code/ WORKDIR /code COPY --from=FRONTEND /code/backend..
자바 스프링부트 앱- 로그 레벨별로 여러 로그 파일 남기기 자바를 배워본적도 없는 내게 자바 스프링부트 앱으로 로그 파일을 3개나 만들라는 지시가 떨어졌다.... 두둥... 처음엔 멘붕이 와서 어버버버했는데, 인도인 유투버 아저씨들의 도움을 받아 개략적인 틀은 완성했지만 계속 뭔가 쫌 부족했다. 로그는 어떻게 찍어야 할지 감도 안 잡혔는데, 로그 레벨별로 debug, info, error 3개의 경우를 나눠 로그 파일을 만들어야 한다니... 정말 막막했다. 그래도 끊임없는 구글링과 다른 개발자분들의 조언 덕에 구현할 수 있었다. 기본적인 스프링부트 앱을 만드는 방법은 여기를 참조했다. https://donghoon-khan.github.io/2020/08/10/deploy-spring-boot-application-on-kubernetes/ Spring Boot..
쉘스크립트로 슬랙 메시지 보내는 방법 1. 먼저 앱을 만든다. https://api.slack.com/start/overview#creating An introduction to the Slack platform Slack apps and workflows extend, expand, and automate your Slack workspace. Cultivate conversation, inspire action, and integrate services by building an app or workflow. api.slack.com 2. Settings-Basic informations-하단의 App level token을 눌러 토큰을 생성한다. 3. 쉘스크립트를 작성한다. 채널 ID는 채널 이름을 클릭 후 하단부를 보면 알 수 있다...
pid가 동작하는 중인지 확인하는 방법 FIND=`ssh -n -p $port $ip find ${PATH} -name "*.[파일형식]"` if [ -n "${FIND}" ]; then PREV_PID=`ssh -n -p $port $usr@$ip cat ${FIND}` # pid #74535 CHECK_STAT=`ssh -n -p $port $usr@$ip ps -f ${PREV_PID} | awk 'NR == 2 {print $7}'` # bash: /proc/74535: 파일이 존재하고 디렉토리인 경우 echo "${target} CHECK_STAT : "${CHECK_STAT}"" # pid 문자열이 존재하고 pid의 STAT이 D, T, X, Z 로 시작하지 않고 STAT이 공백이 아니면 # STAT : D -> 입출력 대기로 깨울..
gcp jupyter notebook에서 url 사용하여 xml 파일 파싱하기 How to parse xml file in gcp jupyter notebook with url import xml.etree.ElementTree as ET import urllib.request def parsefile(path): response = urllib.request.urlopen(path).read() tree = ET.fromstring(response) print(tree) time = tree.findall("event") starttime = [x.findtext("starttime") for x in time] duration = [x.findtext("duration") for x in time] if len(startlist) >= 2: starttime = int(star..
쉘 스크립트에서 와일드카드(*) 써서 파일 찾기 우분투 find /etc -name "*.conf" 식으로 사용하면 된다. (큰따옴표 없어도 됨) 리눅스/MacOS find -f [검색어] find -f [A-Z]AA.txt 나는 엘라스틱서치의 pid 파일을 각 서버마다 체크하며 프로세스가 살아있는지 체크해야 했는데, 서버마다 파일 이름이 es_aa.pid, es_bb_cc.pid 식으로 달라 es_*.pid 와 같은 와일드카드 형식으로 파일을 찾고 싶었다. ES="es_" FIND=`ssh -o StrictHostKeyChecking=no -n -p $port $ip find ${PID_PATH} -name "${ES}*.pid"` if [ $FIND ]; then ~ ~ find [경로] -name [파일이름-변수가능]*.pid 이런 식으로 하면 ..
SSH pem keygen 만들기 # 2048 비트의 RSA키 생성 ssh-keygen -t rsa -b 2048 -f [파일이름] # Server에 authorized_keys 파일 생성 (파일이 없는 경우) mkdir ~/.ssh/ chmod 700 ~/.ssh/ touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 클라이언트에서 공개키 복사 cat ~/.ssh/[파일이름].pub # 서버의 authorized_keys 에 붙여넣기 vi ~/.ssh/authorized_keys # 개인키를 PEM 포맷으로 변경 openssl rsa -in [파일이름] -outform PEM -out [파일이름].pem chmod 700 ru.pem # 키 테스트 ssh -i ./[파일이름]..