git commit --amend브랜치의 최신 커밋을 수정하는 가장 간단한 방법기능을 만들고 커밋을 했는데, 빠진 내용이 있거나 잘못 올린 경우 수정을 위해 사용만약 워킹 디렉토리에 변경 사항이 없다면 단순히 메시지만 수정할 수도 있음커밋 ID가 변경됨 (즉, 새로운 커밋이 생성되므로 기존의 커밋은 사라지고 새로운 커밋이 그 자리를 대신함) # ex) 파일을 까먹은 경우$ git add forgotten_file$ git commit --amend# 커밋 메시지만 수정하고 싶을 때 사용하는 옵션# (오타나 불필요한 정보가 포함된 커밋 메시지를 수정할 때 유용함)$ git commit --amend --no-edit
1. String parameter GIT_BRANCH 추가 2. Branches to build > Branch Specifier에 ${GIT_BRANCH} 넣어주기
잘 트리거 되고 있던 Jenkins 에서 다음과 같은 문제가 발생했다 ,,ERROR: Error cloning remote repo 'origin'...error=0, Failed to exec spawn helper: pid: 2293555, exit value: 1 문제 원인Jenkins 에이전트 프로세스를 중지하고 다시 시작하지 않고 Java 버전을 업데이트한 것computer running that Java process has updated the Java version without stopping and restarting the Jenkins agent process.해결 방법Jenkins Agent 재시작
git stash 아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어 아직 마무리하지 않은 작업은 commit 하지 않고 나중에 다시 꺼내와 마무리할 수 있음 # stash 스택에 임시 작업 저장 $ git stash # 혹은 $ git stash save # stash 목록 확인 $ git stash list # stash 적용 ( = 하던 작업 가져오기) $ git stash apply $ git stash apply [apply 이름] $ git stash apply --index # staged 상태까지 저장 # 스택에 남아 있는 stash 제거 $ git stash drop # drop + apply $ git stash pop # stash 적용한 것 되돌리기 git sta..
리눅스에서 패키지 설치 권한도 없을 때 실행하기 위해 다음과 같이 docker를 rootless로 설치할 수 있다. $ curl -fsSL https://get.docker.com/rootless | sh # (설치 후) 화면에 나온 EXPORT 명령어 2개 입력 (복붙) $ systemctl --user start docker
Jenkins Agent Node Master - Slave 구조 관리는 Master 노드에서, 빌드는 Agent 노드에서 진행 Jenkins Agent 설치 파일을 배포하여 Master 노드에 대한 1:1 연결 Jenkins Agent Node 생성 1. Jenkins 관리 > Nodes 2. New node를 클릭하여 새로운 agent 생성 Name : Agent로 사용할 node의 이름 Number of executors : Agent node의 동시 job 실행 개수 Remote root directory : agent를 설치할 jar 파일이 위치해야 할 곳 Launch method : Agent로 사용할 곳의 접속정보 (JAVA / SSH 등 방법 존재) Jenkins Agent Node 실행 ..
Jenkins CI/CD를 위한 오픈 소스 도구로, 소프트웨어 개발 생명주기를 자동화함 빌드, 테스트, 배포 프로세스를 자동화하여 소프트웨어 품질과 개발 생산성을 높일 수 있음 다양한 플러그인을 지원하여 사용자가 필요에 맞게 플러그인을 통합하여 CI/CD 환경을 확장할 수 있음 다양한 플러그인을 사용하여 파이프라인을 구성하면 구성이 복잡해질 수 있고, 이에 따른 버전 호환성 및 보안 사항 등을 고려해야 하기 때문에 유지 보수에 어려움을 겪을 수 있음. 따라서 환경에 필요한 플러그인을 잘 선택하여 사용하는 것이 중요함. Jenkins는 Java Runtime Environment에서 동작 한다! Jenkins 동작 구조 Master/Slave 구조로 동작 Master는 controller라고 불리며, 작업..
Docker 컨테이너 기반의 오픈소스 가상화 플랫폼 다양한 프로그램, 실행환경을 컨테이너로 추상화하고, 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 더 간결하게 할 수 있음 기존의 OS 전체를 가상화하던 방식에서 벗어남으로써 overhead를 줄일 수 있음 Docker Image Docker Image는 컨테이너 생성(실행)에 필요한 실행파일, 설정 값 들을 가지고 있음 하나의 이미지로 여러 컨테이너를 생성할 수 있으며 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아 있음 이미지는 상태 값을 가지지 않고 변하지 않음 // docker build -t [생성할_이미지_이름] [재료_폴더_경로] $ docker build -t ubuntu:18.04 . Docker Container Do..
CI/CD 코드를 빌드, 테스트, 배포하는 과정을 거쳐 소프트웨어 개발을 추진하는 프로세스 애플리케이션 개발부터 배포까지 모든 단계를 자동화하여 좀 더 효율적이고 빠르게 사용자에게 빈번히 배포할 수 있는 것 개발자가 code를 메인 리포지토리에 merge 하면, 자동으로 빌드 되고, 자동으로 테스트 되고, 릴리즈 되고(배포준비완료), 배포되는 것이라고 할 수 있음 DevOps 엔지니어 - CI/CD를 위한 파이프라인을 구성하고, 자동화 - 중간중간 모니터링 지표를 구성하여, 개발자들의 개발 방향을 가이드 Continuous Integration (지속적 통합) 빌드/테스트 자동화 어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합되는 것 여러 명의 개발자가 동시..
cherry-pick 다른 브랜치에 있는 커밋을 선택적으로 내 브랜치에 적용시킬 때 사용하는 명령어 # git cherry-pick {commit hash} $ git cherry-pick 555f8b4 # 한번에 여러개의 커밋을 반영하고 싶은 경우 $ git cherry-pick 555f8b4 8f618a0 480b6bb $ git cherry-pick 555f8b4..480b6bb # 가져오고 싶은 커밋 범위 지정 아래는 cherry-pick을 이용하여 현재 branch y에 branch x의 3개의 커밋을 반영한 모습이다. 코드에 대한 수정사항, 커밋 로그, 작성자 역시 그대로 가져온다. cherry-pick 충돌 해결 다른 브랜치의 커밋 사항을 가져오므로 수정 사항이 현재 브랜치의 코드에 맞지 않..
커밋 템플릿을 한번 설정해두면, 같은 형식으로 커밋할 때 유용하게 사용할 수 있다 !! 커밋 템플릿 파일 생성 $ vi .git_template # 원하는 template 저장 template 예시 # : ##### Subject 50 characters ################# -> # Body Message ######## Body 72 characters ####################################### -> # Issue Tracker Number or URL (optional) -> # --- COMMIT END --- # Type can be # feat : 새로운 기능 추가 # fix : 버그/오타(typo)/로직 등 코드를 수정한 경우 # refactor: 코드..
branch 란? 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경 가능 다른 브랜치와 병합함으로써, 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있음 새 브랜치 생성하기 $ git branch $ git branch # branch 목록 확인 $ git branch -m new # 현재 branch 이름 변경 $ git branch -m old new # branch 이름 변경 $ git branch --merged # 현재 Checkout 한 브랜치에 Merge 된 브랜치 $ git branch --no-merged # 현재 Checkout 한 브랜치에 Merge 하지 않은 브랜치 브랜치 전환하기 $ git c..
Git 저장소 만들기 저장소를 사용하는 방법에는 주로 아래 2가지 방법이 있다. 아직 버전관리를 하지 않는 로컬 디렉토리 하나를 선택해서 Git 저장소를 적용하는 방법 다른 어딘가에서 Git 저장소를 Clone 하는 방법 기존 디렉토리를 Git 저장소로 만들기 버전관리를 하지 아니하는 기존 프로젝트를 Git으로 관리하고 싶은 경우 사용 $ cd /c/user/my_project $ git init $ git add *.c $ git add LICENSE $ git commit -m 'initial project version' 기존 저장소를 clone 하기 다른 프로젝트에 참여하려거나(Contribute) Git 저장소를 복사하고 싶은 경우 사용 $ git clone # 예시 # git clone htt..
버전 관리란? 버전 관리 시스템 (VCS - Version Control System) 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템 버전 관리 시스템 장점 각 파일 또는 프로젝트를 통째로 이전 상태로 되돌릴 수 있음 시간에 따라 수정 내용을 비교해 볼 수 있음 누가 문제를 일으켰는지 추적할 수 있음 누가 언제 만들어낸 이슈인지 알 수 있음 파일을 잃어버리거나 잘못 고쳤을 때 쉽게 복구할 수 있음 로컬 버전 관리 버전 관리 공유하지 않음 중앙집중식 버전 관리 (CVCS) 한 지점의 저장소를 공유하여 협업 중앙에서 관리 및 통제, 저장소는 병목지점 중앙 데이터베이스가 있는 하드디스크에 문제가 생기면 프로젝트의 모든 히스토리를 잃게 됨 분산 버전 관리 시스템 (D..