리뷰 앱
자세: Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
리뷰 앱은 제품 변경 사항을 쇼케이스하는 환경을 제공하는 협업 도구입니다.
참고: Kubernetes 클러스터가 있는 경우, 자동 DevOps를 사용하여 응용 프로그램에서 이 기능을 자동화할 수 있습니다.
리뷰 앱:
- 기능 브랜치의 변경 사항을 자동으로 라이브로 미리 보기 할 수 있도록 병합 요청을 위한 동적 환경을 구축하여 변경 사항의 라이브 미리 보기를 제공합니다.
- 디자이너 및 제품 관리자들이 귀하의 변경 사항을 체크 아웃하고 샌드박스 환경에서 실행할 필요 없이 변경 사항을 볼 수 있게 합니다.
- GitLab DevOps LifeCycle과 완전히 통합됩니다.
- 변경 사항을 원하는 곳에 배포할 수 있게 합니다.
이전 예시에서:
- 변경 내용이 토픽 브랜치로 푸시될 때마다 리뷰 앱이 빌드됩니다.
- 리뷰어는 제 3의 리뷰에 통과하기 전에 두 번의 리뷰를 거부합니다.
- 리뷰를 통과하면
토픽 브랜치
가 기본 브랜치로 병합되어 스테이징으로 배포됩니다. - 스테이징에서 승인된 후 기본 브랜치로 병합된 변경 사항이 프로덕션으로 배포됩니다.
리뷰 앱 작동 방식
리뷰 앱은 환경과 브랜치의 매핑입니다. 리뷰 앱에 대한 액세스는 해당 브랜치에 대한 병합 요청에 있는 링크를 통해 이용할 수 있습니다.
다음은 동적으로 환경이 설정된 병합 요청의 예시입니다.
이 예에서, 브랜치가:
- 성공적으로 빌드되었습니다.
- 앱 보기를 선택하여 도달할 수 있는 동적 환경에 배포되었습니다.
리뷰 앱을 워크플로에 추가한 후에는 브랜치 Git 플로우를 따릅니다. 즉,
- 브랜치를 푸시하고 러너가 동적 환경 작업의
스크립트
정의를 기반으로 리뷰 앱을 배포하도록 합니다. - 러너가 웹 응용 프로그램을 빌드하고 배포할 때까지 기다립니다.
- 라이브 변경 사항을 보려면 브랜치와 관련된 병합 요청의 링크를 선택합니다.
리뷰 앱 구성
리뷰 앱은 각 브랜치에 대해 동적으로 새로운 환경을 생성할 수 있도록 하는 동적 환경에서 구축됩니다.
리뷰 앱 구성 프로세스는 다음과 같습니다:
- 리뷰 앱을 호스팅하고 배포할 인프라를 설정합니다(아래의 예시 확인).
- 설치하고 구성하여 배포 작업을 수행할 러너를 설정합니다.
-
.gitlab-ci.yml
에서 미리 정의된 CI/CD 변수${CI_COMMIT_REF_SLUG}
을 사용하여 동적 환경을 생성하고 브랜치에서만 실행하도록 제한하는 작업을 설정합니다. 또는 프로젝트에서 리뷰 앱 활성화를 통해 이 작업의 YAML 템플릿을 받을 수 있습니다. - 참고로, 리뷰 앱을 수동으로 중지할 작업을 설정할 수 있습니다.
리뷰 앱 버튼 활성화
프로젝트에 리뷰 앱을 구성하려면, 위에서 언급한 대로 .gitlab-ci.yml
파일에 새 작업을 추가합니다. Kubernetes를 사용하고 있다면 리뷰 앱 활성화를 선택하면 GitLab에서 템플릿 코드 블록을 제시하여 .gitlab-ci.yml
에 복사하여 붙여넣을 수 있습니다.
선결 조건:
- 프로젝트에 대한 적어도 개발자 역할이 필요합니다.
리뷰 앱 템플릿을 사용하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고, 리뷰 앱 작업을 생성하려는 프로젝트를 찾아 선택합니다.
- 운영 > 환경을 선택합니다.
- 리뷰 앱 활성화를 선택합니다.
- 대화 상자의 지침에 따릅니다.
필요에 따라 제공된
.gitlab-ci.yml
템플릿을 편집할 수 있습니다.
리뷰 앱 자동 중지
주어진 시간 이후에 환경을 만료시키고 자동으로 중지하는 리뷰 앱 환경을 구성하는 방법을 확인하세요.
리뷰 앱 예시
다음은 리뷰 앱 구성을 보여주는 예제 프로젝트입니다:
리뷰 앱의 다른 예시:
라우트 맵
라우트 맵을 사용하면 리뷰 앱을 위한 정의된 환경에서 소스 파일에서 바로 공개 페이지로 이동할 수 있습니다.
설정이 완료되면 병합 요청 위젯의 리뷰 앱 링크에서 변경된 페이지로 직접 이동하여 제안된 수정 사항을 빠르고 쉽게 미리 볼 수 있습니다.
라우트 맵을 구성하는 것은 리포지토리 내 파일 경로가 웹사이트의 페이지 경로와 어떻게 매핑되는지 GitLab에 알려주는 것을 포함합니다. 라우트 맵을 구성하면, 보기 버튼이 표시됩니다. 이 버튼을 선택하여 병합 요청에서 직접 변경된 페이지로 이동할 수 있습니다.
라우트 맵을 설정하려면 .gitlab/route-map.yml
경로의 리포지토리 내 파일을 추가해야 합니다. 이 파일에는 source
경로(리포지토리 내)가 public
경로(웹사이트에서)로 매핑된 YAML 배열이 포함되어야 합니다.
라우트 맵 예시
다음은 Middleman의 예시 라우트 맵입니다. Middleman은 GitLab 웹사이트를 구축하는 데 사용되는 정적 사이트 생성기(SSG)로, GitLab.com의 프로젝트에서 배포됩니다.
# 팀 데이터
- source: 'data/team.yml' # data/team.yml
public: 'team/' # team/
# 블로그 글
- source: /source\/posts\/([0-9]{4})-([0-9]{2})-([0-9]{2})-(.+?)\..*/ # source/posts/2017-01-30-around-the-world-in-6-releases.html.md.erb
public: '\1/\2/\3/\4/' # 2017/01/30/around-the-world-in-6-releases/
# HTML 파일
- source: /source\/(.+?\.html).*/ # source/index.html.haml
public: '\1' # index.html
# 기타 파일
- source: /source\/(.*)/ # source/images/blogimages/around-the-world-in-6-releases-cover.png
public: '\1' # images/blogimages/around-the-world-in-6-releases-cover.png
매핑은 루트 YAML 배열의 항목으로 정의되며 -
접두사로 식별됩니다. 항목 내에는 두 개의 키를 가진 해시 맵이 있습니다:
-
source
- 정확한 일치에 대한
'
로 시작하고 끝나는 문자열입니다. - 패턴 일치에 대한
/
로 시작하고 끝나는 정규 표현식입니다.- 정규 표현식은 전체 소스 경로와 일치해야 합니다.
^
및$
앵커가 기본적으로 포함됩니다. -
()
로 표시된 캡처 그룹을 포함하고, 이를public
경로에서 참조할 수 있습니다. - 슬래시(
/
)는\/
로 이스케이프할 수도 있고 그렇지 않을 수도 있습니다. - 마침표(
.
)는\.
로 이스케이프해야 합니다.
- 정규 표현식은 전체 소스 경로와 일치해야 합니다.
- 정확한 일치에 대한
-
public
-
'
로 시작하고 끝나는 문자열입니다. -
\N
표현식을 사용하여 발생 순서대로source
정규 표현식의 캡처 그룹을 참조할 수 있습니다. (\1
부터 시작)
-
소스 경로에 대한 공개 경로는 해당 경로와 일치하는 첫 번째 source
표현식을 찾아 해당하는 public
경로로 반환하며, 필요한 경우 ()
캡처 그룹의 값으로 \N
표현식을 바꿉니다.
위 예시에서 매핑이 정의된 순서대로 평가되는 데 활용되어 /source/index.html.haml
이 /source\/(.+?\.html).*/
대신에 /source\/(.*)/
와 일치하여 index.html
이 아닌 index.html.haml
로 결과가 나오도록 합니다.
라우트 맵을 설정한 후 다음 위치에서 적용됩니다: