[생활코딩] 'Gitlab' 정리본


프로젝트 관리도구인 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 : 자신이 참여한 모든 프로젝트 이슈(전체가 아닌 프로젝트 단위로 보고 싶으면 프로젝트를 들어가면 된다.)
  • 프로젝트(대쉬보드가 전체라면, 프로젝트는 그 안의 프로젝트)
    • 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을 보면 내용을 볼 수 있다.
  • 레이블 : 여러가지 의미로 유연한 방식(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 : 프라이빗 -> 퍼블릭 가능, 프로젝트를 다른 소속의 프로젝트로 변경할수 있다, 프로젝트 삭제 가능





© 2018. by statssy

Powered by statssy