[생활코딩] 'Gitlab' 정리본
in Development on Git
프로젝트 관리도구인 Gitlab을 공부하려 한다. 특히 내가 나중에 딱보고 쓸 수 있게끔 적어놓으려한다.
- 20.07.11 첫 글
- 20.07.12 추가
생활코딩 : 프로젝트 관리도구 Gitlab 을 보고 공부한다.
Gitlab 소개
버젼관리시스템 : 이게 필요한 이유는 예를들어 협업시 같은 코드를 같은 위치의 것을 고칠때 생기는 문제를 해결, 또한 코드 유실 방지
git : 버젼관리시스템 제품 중 하나. 가장 많이 쓰는 버젼관리시스템 제품
원격 저장소
issue tracker : 이슈=업무 트래커=추적한다. 업무 추적. 소프트웨어는 변화가 많기 때문에 이게 중요하다.
github 사이트를 설치형(즉 자신의 서버에 직접 설치해서)으로 만든 목적이 있다. 그래서 사용부분이 매우 유사하다.
비용에 대한 부담, 자신의 코드가 타사의 서비스에 올라가는 것에 대한 보안상 이슈에 대해 적합
클라우드 버젼 시스템(gitlab.com 깃랩에서 운영하는 사업적 서비스) 도 있음
Gitlab 전체 기능 소개
- 대쉬보드 : 전체적인 시야, 타임라인, 여러가지 변경들
- Home
- push : 푸쉬한 바뀐 내용들
- merge events : 필요없음
- comment : 이슈 트래커에서 나온 새로운 업무 추가, 댓글 등
- team : 여러사람들의 활동들
- Projects : 내가 만든 프로젝트
- 각 프로젝트 마다 Master, Guest로 권환이 나눠져 있음
- Issue : 자신이 참여한 모든 프로젝트 이슈(전체가 아닌 프로젝트 단위로 보고 싶으면 프로젝트를 들어가면 된다.)
- Home
- 프로젝트(대쉬보드가 전체라면, 프로젝트는 그 안의 프로젝트)
- Wiki : 위키의 문법에 맞게 문서를 쓰고, Git Access하면 내 로컬 컴퓨터에서 관리할 수 있다
- Settings : 프로젝트에 대한 관리 작업들을 할 수 있다.
- edit : 프로젝트 이름 바꾸기, 오픈소스 프로젝트, private을 지정할수있고, 이슈를 키고끄는, 프로젝트 소유권 등등 할 수 있음
- members : 프로젝트 권한을 가진 사람들
- Deploy Keys : 저장소에 있는 어떤 파일을 실제로 서비스에 반영을 할때, 깃을 이용해서 반영하게 되는데 깃의 권한을 읽기전용의 권한으로 세팅할 수 있다.
- Services : 플러그인(뒤 강의에서 설명)
- Public Area(맨위에 그림 지도모양) : 퍼블릭한 프로젝트
- My snippets : 우리가 사용하는 간단한 로직 공유할 수 있는 기능
- 더하기 : 프로젝트 간단하게
- 프로필 :
- 개인적인 정보들
- 이메일로 통보(notification)
- SSH Keys : 저장소의 소스코드를 푸쉬할때 인증을 해주는 역할. 등록키가 있음
Project - GitlabProject
- 프로젝트 : 일의 단위
- 순서1) 프로젝트 만들기 : new project 만든다. > 이름 > namespace(선택. 아래 상세설명) > import existing repo(실습에서 빈 페이지) > create
- namespace : 어디에 소속시킬것인가. 하위에 두겠다. 개인적이면 users에. 회사의 프로젝트면 Groups안에 프로젝트를 넣으면 된다.(사적 소유 기능을 넘어섬)
- import existing repo : 깃허브 프로젝트를 가져올수 있는 마이그레이션
순서2) 프로젝트 만들고 나서 세팅 : Settings Edit 맨아래보면 맨위에 목차 리스트를 바꿀수 있다.
- 순서3) Home : 세팅 하고 나서 보면 맨위에 SSH, HTTPS 주소가 나옴 : 원격저장소에 접근할수 있는 URL
- SSH : 깃에 접근할때 SSH 방식으로하겠다. (이걸 권장)
- Private모양 : 허용된 사람들 들어올수 있다.
- Git global setup : 자신이 누구인가. 커밋 할떄 뜨게하는 방법 소개
- create Repository : 로컬 컴퓨터에 아직 없을 때 이렇게 하면 저장소가 만들어진다 소개
- Existing Git Repo? : 로컬컴퓨터에 소스코드가 있는데 원격저장소에 올릴라면
- 순서4) SSH 원격저장소에 등록해야함. MyProfile(맨위에 사람그림) 클릭 > SSH Keys > add new 클릭 > Title, Key가 있는데 운영체재별로 다르니까 다음 강의에서 나옴
Project2 - Window SSH
이번 강의 요약 : 어떻게 내 깃랩 원격저장소에 내 로컬컴퓨터랑 연결시키는가. SSH를 이용해야한다. 내 컴퓨터의 공개키(public)를 내 원격저장소인 깃랩에 추가하면 된다. 나머지 리눅스 SSH나 Max SSH는 나중에 필요할때 보면 될 것 같다.
- git bash : 리눅스, 맥과 비슷한 환경을 만들어 준다.
- 순서1)
ssh-keygen
(내 로컬컴퓨터에 ssh를 생성하겠다.) : git bash 들어가서 입력하면, 키를 생성하겠다.(비밀번호), 로컬 <-> 프라이빗 할때 필요. 직접입력하는 비밀번호보다 안전한 파일로된 비밀번호. 기본경로로 하는거를 권장, 아무것도 만지지말자 - 순서2) 엔터를 치면 : 키에 한번더 보안장치를 걸수 있다. 비밀번호로. 일단 공백으로 냅둔다.
- 순서3) 또 엔터를 치면 : Your identi는 어디에 저장되었고 public key는 어디에 저장되었다고 나온다. 비밀키(identi)와 공개키(public~)가 나온다. 비밀키의 경로는 절대 공개되면 안되고, 공개키는 원격저장소(깃랩)에 등록이 되어야한다.
- 순서4)
cd ~/.ssh
(~은 홈 디렉토리) ->ls -al
(폴더에 머가 있나), id_rsa 파일은 비밀키, id_rsa_pub은 공개키. 우리가 필요한건 공개키, 당연히 비밀키와 공개키가 쌍으로 있어야된다. - 순서5)
pwd
: 저 경로에 들어있다. - 순서6) .ssh폴더에서 id_rsa.pub을 메모장으로 열어본다. 그 내용을 카피한다.
- 순서7) 깃랩의 My profile들어가서 SSH Keys에 들어가서 add new를 들어가서 Key에 paste하면 자동으로 Title이 생긴다. 실습의 경우에는 Title을 ‘mywin’이라고 했다. 그리고 저장
- 나머지 리눅스 SSH나 Max SSH는 나중에 필요할때 보면 될 것 같다.
Project 3
이번 강의 요약 : 원격저장소와 내 로컬 pull push할 수 있게 만든다.
- 홈에 나온 코드들을 git bash열어서 등록하자.
- Git global setup : 내가 누구인가?에 관한거. 내가 누군지 식별. 복사해서 git bash에 붙여넣기
git config --global user.name "이름"
: 이름 정해주기git ~ user.email
: 이메일
- Create Repository : 원격저장소를 생성했고, 원격저장소를 출발로써 프로젝트를 생성하겠다.(실습에서는 처음이니까 이거로 함)
- 코드 순서대로 하자.
touch README
: README 파일 만들어준다.git remote add origin ~
: 로컬컴퓨터와 원격저장소가 동기화. 로컬<->원격간의 변화를 동기화. 주소는 깃랩상의 주소이고 그 주소를 origin이라고 하겠다.(주소=origin, 이유 : 주소가 너무 기니까), 코드 쳐서 아무것도 안나오면 성공.git remote -v
를 쳐봐서 두줄로 fetch push가 나오면 잘 추가한거다.git push -u ~
: 현재 우리가 README를 commit했으니까. 로컬만 되어있다. 그래서 원격저장소랑 똑같이 만들어야되니까 push로 해야한다. 참고로 가져올떄는 pull. origin(아까 말한 깃랩상 주소) master(기본 브랜치)- you want~ 라고 나오면 Y누르면 된다.
- 여기까지하면 동기화가 된것.
- 잘 되어있는지 확인하려면 깃랩 들어가서 Files에 README가 있는지 보자. 또 Commit들어가면 내가 커밋한 내용이 나올것이다.
- 한번 더 커밋을 해보자.(그냥 강의해서 확인겸 하는거임)
- 깃배쉬에서
vi README
를 입력해서 내용을 바꾸고git pull origin master
(푸쉬하기전에 무조건 먼저 해줘라. 서버쪽에 내용이 달라졌을수있으니까) git add README
->git commit -m 'second commit'
->git push origin master
- 아까처럼 깃랩에서 Files, Commits, Network가 변경 되었을거다.
- 깃배쉬에서
- Existing Git Repo : 이미 내 로컬에 있고 원격저장소로 이전하겠다.(실습에서는 안함)
Issues - 기본 사용법
이번 강의 요약 : 이슈는 업무 관리(내가 쓰던 레드마인을 생각하면 됨)
- 대쉬보드에서 Issues를 들어간다. : 이슈란 업무를 관리할때 사용하는 도구인데 전체 프로젝트가 나온다.
- 프로젝트 안으로 들어가서 Issues를 들어거라.
- open상태 : 진행중
- closed상태 : 처리되서 완료되었다.
- Assigned to me : 내가 속해있는 이슈
- Created by me : 내가 생성한 이슈
- 이슈를 만들어보자. 해당 프로젝트의 Issues 들어가서 open들어가서 +New Issue를 클릭하자.
- subject : 이슈의 제목(실습은 ‘gitlab 수업만들기’)
- Assign to : 해당 이슈가 누가 처리해야하는가.
- Milesstone : 목표.(ex. 1.1빌드) 다다음 강의에서 나옴
- Labels : 태그. 이 일감이 어떤 일감인가. (실습은 개선사항, 결함,enhancement, bug,)
- Detail : 내용들
- 이슈가 다 처리되면 : 이슈에 마우스를 대고 Closed, 미비하면 Repoen가능
- 이슈 내용 편집(수정) : 이슈 클릭하면 됨
Issues - Markdown
이번 강의 요약 : 마크다운과 GFM이라는 특수 깃랩 마크다운문법
- HTML하고 비슷하다. 좀 더 간편하게 만든게 마크다운
- 위키 쓸때도 마크다운. 다양한 솔루션에서 마크다운 형식을 사용한다.
- 디테일의 내용을 마크다운으로 만든다. : New Issues 클릭 -> 디테일.
- 디테일 아래에 Gitlab Flavored Markdown ~ 가 있는데 그거 보면 깃랩에서 특수하게 사용되는 내용이 나오기도 한다.(GFM이라고 한다. 깃랩마크다운 문법)
- URL autolinking : URL 표시 자동으로 된다.
- Fenced code blocks : ```(억기호) 이거 쓰면 코드가 된다.
- @이름 : 누군가 언급할떄
- #이슈 : 특정 이슈
- 커밋아이디 : 커밋아이디를 카피해서 넣으면 URL처럼 자동으로 된다.
Issues - Milestone, Label
이번 강의 요약 : 마일스톤은 목표(ex. 1.1 빌드), 레이블은 좀 쉽게 일할 수 있도록 네이밍 해주는거(ex. 개선사항, 버그)
- 마일스톤 : 어떤 목표에 속해있는가. 어떤 프로젝트가 있으면 여러가지 목표가 있을수 있다. 여러개의 하위 목표가 있을수 있다. 그 이슈들이 얼마나 진척되고있는가를 알수 있다.
- 마일스톤 만들기 : Issues->Milestones->New Milestone클릭
- Title : 실습에는 ‘1.1’
- Description : 실습에서는 ‘1.1버젼을 위한 milestone’
- Due Date : 마감일
- Create : 만들기
- 시간안에 해야하고, 오픈된 상태에서 closed상태로 만들어야한다.
- 이슈를 마일스톤으로 해당하게 하기 : 원래 있던 이슈들을 클릭 해서 마일스톤을 1.1로 바꾸고 save함
- Milestone 확인하기 : 1.1이라는 Milestone을 보면 내용을 볼 수 있다.
- 마일스톤 만들기 : Issues->Milestones->New Milestone클릭
- 레이블 : 여러가지 의미로 유연한 방식(ex.개선사항, 버그, 회의해야할 내용)
- Labels를 클릭하면 이슈에 해당하는 레이블을 볼수 있다.
- 강연자의 회사에서는 레이블을 이렇게 쓴다1: Closed할떄 어떻게 처리했는지에 대한 태그로(업무를 일반적 처리, 다른 이슈랑 중복되서 그 이슈 제외, 이슈가 유효하지 않거나 잘못되서 종료, 여러가지 뉘앙스를 태그로)
- 강연자의 회사에서는 레이블을 이렇게 쓴다2: 어떤 이슈를 적용대기,QA(품질테스트가 필요하다) : ex. 조직내에서 QA하는 사람들이 있으면 그 QA해결하고 그옆에 QA완료로 추가한다.
- 중요한건 같이 일하는 사람들간 약속이 되어야한다.
Wiki
이번 강의 요약 : 위키란 정보들을 구조화 시켜서 관리하는거. 그냥 내가 맨날 보는 위키 같이 전체적 내용들 정리한거라고 보면 될듯
- 위키 시스템 : 잘 관리 되어야하는 정보들을 유지하는 기능
- 위키가 안보이면 Settings에서 맨아래 Wiki~ 체크하자.
- Wiki에서는 Markdown형식으로 쓴다.
- 위키 시스템은 하이퍼텍스트(링크)를 통해서 정보를 구조화 하기 편하다.
- 하위를 만들고 싶다면.(있는 주소가 아니여도 됨) :
[네임](주소)
. ex.[개발팀](page_dev)
를 세이브하면 아직 그 주소는 페이지가 없지만 클릭하면 그 페이지 슬러그에 만들수 있는 화면으로 간다. 거기다가 써주면 만들어진다. - 어떤 Wiki들이 있는지 볼수 있다. : Wike->Pages
- Git Access로 push pull해서 연동시킬수 있다.
- Page History : 버젼관리 내용. 버젼 순간이동 가능
그룹
이번 강의 요약 : 내이름으로 프로젝트 만들지말고 그룹이름으로 만들자.
- 그룹 이름으로 프로젝트를 만들자.(개인 이름이 아닌)
- New project를 만들어보자. 개인(유저네임/프로젝트네임)이 아니라
- New Group 추가하고 New Project를 클릭해서 만들면 생성했던 그룹이 나온다.(그룹네임/프로젝트네임)
- Group -> People에서 사람들을 정할수 있음.
팀
이번 강의 요약 : 팀은 권한 주고 프로젝트에 넣고 하는거. 그룹하고 다른건 그룹은 URL에 영향을 주는게 특징이고 일하다보면 뭐가 다른지 알게 될거라고함
- 팀멤버들을 여러가지 프로젝트에 설정할수 있다. 구성, 권한을 변경하면 일괄적 변경된다.
- 그룹과 팀이 헷갈릴수 있다.
- 그룹 : 프로젝트의 URL에 영향을 미칠수 있다.
- 팀 : 권한에 대한 것들
- Teams -> New Team : 새로운 팀을 만든다.
- 팀에서 Members : ex. New Team Member로 사용자들을 Guest권한으로 해본다.
- 팀에서 Projects : Assign Project 클릭 -> 해당 프로젝트 클릭 -> Add Project 하면 프로젝트 멤버가 변경된다.
- 팀원들의 권한을 바꿀수 있다.
- 만약에 Team Members의 권한을 높게 올리면(프로젝트딴 아님), 프로젝트에는 맥스 권한이라는게 있어서 거기까지만 올라간다.(예를들어 내가 팀에서 마스터이여도 프로젝트의 맥스권한이 게스트면 나는 그 프로젝트에서 게스트다.)
- 팀->프로젝트->setting 들어가서 max를 바꾸면 맥스권한으로 바꿀수 있다.
- Q.두팀에 한명이 있으면? : 그 한명은 둘중에 더 높은게 우선
권한
이번 강의 요약 : 권한별로 무슨일을 할수 있는가. 5가지 있다.
- 주제 : 각각의 권한별로 어떠한 일을 할수 있는가
- Team Members에 here(파랑색) 들어가면 내용들이 나온다.
- Guest : 이슈생성, 이슈댓글, 담벼락에 내용개시 가능
- Reporter : Guest + 프로젝트 pull, 다운, 코드 스니팻 가능
- Developer : Reporter + 새로운 브랜치 가능, 보호되지않는 브랜치를 푸쉬 리무브 가능, 태그 추가, 위키 수정 가능
- Master : Developer + 팀멤버, 프로젝트 수정가능, 읽기가능한 엑세스 가능 추가 기능
- Owner : 프라이빗 -> 퍼블릭 가능, 프로젝트를 다른 소속의 프로젝트로 변경할수 있다, 프로젝트 삭제 가능