Gradle은 무엇을 하는가? Gradle은 CI/CD를 위한 아래 Task들을 자동화 시켜주는 Build Tool이다. Compile Test Packaging Deploy & Run 안드로이드를 기준으로 Compile은 Kotlin 파일이나 Java파일을 바이트 코드로 변환해주는 작업이며, Test는 어플리케이션이 제대로 동작할지에 대한 Test를(유닛 테스트, UI 테스트 등) 지원한다. Packaging의 경우에는 코드를 패키징해 aab 파일이나 apk 파일로 만들어주는 것을 뜻하며, Deploy & Run은 코드를 어플리케이션으로 패키징해서 실제 기기에 넣어서 실행할 수 있도록 만들어주는 것을 뜻한다. 스프링을 기준으로는 Compile과 Test는 안드로이드와 같으며, Packaing은 스프링 ..
CI, CD
어플리케이션 개발 프로세스 어플리케이션 개발자는 코드 작성부터 배포까지 다음의 일을 반복한다. 코드를 짠다. 빌드를 한다. 테스트를 한다. 배포한다. 어떤 것을 자동화 할 수 있을까? 코드를 짜는 일은 매번 달라질 수 있는 일이라 자동화가 어렵다. 하지만 빌드 또한 마찬가지이다. 몇가지 키를 설정해준 후 빌드를 누르면 빌드가 되므로, 자동으로 빌드가 가능하다. 테스트를 하는 것은 단순히 클릭 몇번이나 명령어를 통해 진행할 수 있으므로 자동화 할 수 있다. 배포 또한 마찬가지이다. 빌드된 결과물을 배포하는 곳에 올리기만 하면 배포가 가능하다. 이러한 자동화 가능한 일들을 매번 직접하는 것은 비효율적이다. 또한 사람이 하는 일이다 보니 각 과정에서 몇가지 빼먹은 일이 생긴다면 사용자에게 배포된 어플리케이션이..
git config 파일의 위치 global config 파일의 위치 git의 global config 파일은 ~/.gitconfig 에 있다. git의 local config 파일의 위치 git의 local config 파일은 .git/config 에 있다. git config 파일의 구성 git config 파일은 두가지 계층으로 이루어져 있다. [ ] 으로 감싸진 카테고리와 = 왼쪽에 있는 파라미터와 오른쪽에 있는 파라미터에 대응되는 값이다. 예를 들어 아래에는 core 카테고리 안에 repositoryformatversion, filemode, bare, logallrefupdates, ignorecase, precomposeunicode 파라미터가 있다. git은 조작 명령이 들어올 때 이 co..
reflog란? reflog란 git에서 가리키는 referenced commit이 변경된 내역이다. reflog를 기록하는 것은 대표적으로 HEAD와 branch 두가지이다. HEAD의 reflog HEAD의 reflog 경우 새로운 커밋이 생기거나, branch가 switch 될 때마다 해당 브랜치의 가장 최신 커밋으로 reference가 바뀌게 된다. 예를 들어 master 브랜치에 test, test2란 커밋을 만들고, feature-branch 브랜치를 새로 만든다음 feature-branch에서 new commit 커밋을 새로 만들면 다음과 같이 reflog가 쌓이게 된다. $ git reflog show HEAD d42e22f (HEAD -> feature-branch) HEAD@{0}: c..
Git의 기본 저장 단위 Commit Commit은 Git의 기본 저장 단위이다. 우리는 Commit을 파일들에 대한 스냅샷이라고도 부르며, Commit은 Commit을 찍은 시간의 파일들의 상태에 대해 저장한다. Commit은은 tree, parent, author, commiter,message 5가지 구성요소로 이루어져 있다. tree : tree와 blob를 포인팅하는 구성요소이다. parent : 해당 커밋 직전에 어떤 커밋이 있었는지 포인팅한다. author : 작성자. commiter : 커밋을 만든 사람. message : 커밋을 설명하는 메세지. 예를 들어 commit이 두 개 찍힌 다음과 같은 로그를 가진 Git 폴더가 있다고 해보자 $ git log --oneline 6e3a608 ..