리뷰 앱
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
리뷰 앱은 각 브랜치 또는 머지 리퀘스트에 대해 자동으로 생성되는 임시 테스트 환경입니다. 동적 환경을 기반으로 구축된 리뷰 앱은 각 브랜치 또는 머지 리퀘스트에 고유한 환경을 제공합니다. 이 환경들은 다음을 통해 개발 워크플로우를 간소화하는 데 도움이 됩니다:
리뷰 앱은 각 브랜치 또는 머지 리퀘스트에 대해 자동으로 생성되는 임시 테스트 환경입니다. 로컬 개발 환경을 설정할 필요 없이 변경 사항을 미리보고 검증할 수 있습니다.
동적 환경을 기반으로 구축된 리뷰 앱은 각 브랜치 또는 머지 리퀘스트에 고유한 환경을 제공합니다.

이 환경들은 다음을 통해 개발 워크플로우를 간소화하는 데 도움이 됩니다:
- 변경 사항을 테스트하기 위한 로컬 설정의 필요성 제거.
- 모든 팀 구성원을 위한 일관된 환경 제공.
- 이해 관계자가 URL로 변경 사항을 미리볼 수 있도록 지원.
- 변경 사항이 프로덕션에 도달하기 전에 더 빠른 피드백 사이클 촉진.
Kubernetes 클러스터가 있는 경우 Auto DevOps를 사용하여 리뷰 앱을 자동으로 설정할 수 있습니다.
리뷰 앱 워크플로우#
리뷰 앱 워크플로우는 다음과 유사할 수 있습니다:
소스 코드 보기
%%{init: { "fontFamily": "GitLab Sans" }}%%
flowchart TD
accTitle: Review app workflow
accDescr: Diagram showing how review apps fit into the GitLab development workflow.
subgraph Development["Development"]
TopicBranch["Create topic branch"]
Commit["Make code changes"]
CreateMR["Create merge request"]
end
subgraph ReviewAppCycle["Review app cycle"]
direction LR
Pipeline["CI/CD pipeline runs"]
ReviewApp["Review app deployed"]
Testing["Review and testing"]
Feedback["Feedback provided"]
NewCommits["Address feedback
with new commits"]
end
subgraph Deployment["Deployment"]
Approval["Merge request approved"]
Merge["Merged to default branch"]
Production["Deployed to production"]
end
TopicBranch --> Commit
Commit --> CreateMR
CreateMR --> Pipeline
Pipeline --> ReviewApp
ReviewApp --> Testing
Testing --> Feedback
Feedback --> NewCommits
NewCommits --> Pipeline
Testing --> Approval
Approval --> Merge
Merge --> Production</code></pre></details></div>
리뷰 앱 구성#
각 브랜치 또는 머지 리퀘스트에 대한 애플리케이션의 미리보기 환경을 제공하려면 리뷰 앱을 구성하세요.
사전 요구 사항:
- 프로젝트에 대한 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.
- 프로젝트에 CI/CD 파이프라인을 사용할 수 있어야 합니다.
- 리뷰 앱을 호스팅하고 배포할 인프라를 설정해야 합니다.
프로젝트에서 리뷰 앱을 구성하려면:
-
상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾으세요.
-
빌드 > 파이프라인 편집기를 선택하세요.
-
.gitlab-ci.yml 파일에서 동적 환경을 생성하는 작업을 추가하세요. 미리 정의된 CI/CD 변수를 사용하여 각 환경을 구분할 수 있습니다. 예를 들어 CI_COMMIT_REF_SLUG 미리 정의된 변수 사용:
review_app:
stage: deploy
script:
- echo "Deploy to review app environment"
# Add your deployment commands here
environment:
name: review/$CI_COMMIT_REF_SLUG
url: https://$CI_COMMIT_REF_SLUG.example.com
rules:
- if: $CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
-
선택 사항. 작업에 when: manual을 추가하여 리뷰 앱을 수동으로만 배포하세요.
-
선택 사항. 더 이상 필요하지 않을 때 리뷰 앱을 중지하는 작업을 추가하세요.
-
커밋 메시지를 입력하고 변경 사항 커밋을 선택하세요.
리뷰 앱 템플릿 사용#
GitLab은 기본적으로 머지 리퀘스트 파이프라인용으로 구성된 내장 템플릿을 제공합니다.
이 템플릿을 사용하고 커스텀화하려면:
-
상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾으세요.
-
운영 > 환경을 선택하세요.
-
리뷰 앱 활성화를 선택하세요.
-
나타나는 리뷰 앱 활성화 다이얼로그에서 YAML 템플릿을 복사하세요:
deploy_review:
stage: deploy
script:
- echo "Add script here that deploys the code to your infrastructure"
environment:
name: review/$CI_COMMIT_REF_NAME
url: https://$CI_ENVIRONMENT_SLUG.example.com
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
-
빌드 > 파이프라인 편집기를 선택하세요.
-
템플릿을 .gitlab-ci.yml 파일에 붙여넣으세요.
-
배포 필요에 맞게 템플릿을 커스텀화하세요:
- 인프라와 함께 작동하도록 배포 스크립트와 환경 URL을 수정하세요.
- 머지 리퀘스트 없이 브랜치에 대한 리뷰 앱을 트리거하려면 규칙 섹션을 조정하세요.
예를 들어 Heroku에 배포하는 경우:
deploy_review:
stage: deploy
image: ruby:latest
script:
- apt-get update -qy
- apt-get install -y ruby-dev
- gem install dpl
- dpl --provider=heroku --app=$HEROKU_APP_NAME --api-key=$HEROKU_API_KEY
environment:
name: review/$CI_COMMIT_REF_NAME
url: https://$HEROKU_APP_NAME.herokuapp.com
on_stop: stop_review_app
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
이 구성은 머지 리퀘스트에 대해 파이프라인이 실행될 때마다 Heroku에 자동 배포를 설정합니다. Ruby의 dpl 배포 도구를 사용하여 프로세스를 처리하고 지정된 URL을 통해 접근할 수 있는 동적 리뷰 환경을 생성합니다.
-
커밋 메시지를 입력하고 변경 사항 커밋을 선택하세요.
리뷰 앱 중지#
리소스를 절약하기 위해 수동 또는 자동으로 중지되도록 리뷰 앱을 구성할 수 있습니다.
리뷰 앱에 대한 환경 중지에 관한 자세한 내용은 환경 중지를 참조하세요.
머지 시 리뷰 앱 자동 중지#
연결된 머지 리퀘스트가 머지되거나 브랜치가 삭제될 때 리뷰 앱이 자동으로 중지되도록 구성하려면:
- 배포 작업에
on_stop 키워드를 추가하세요.
environment:action: stop을 사용하여 중지 작업을 생성하세요.
- 선택 사항. 중지 작업에
when: manual을 추가하여 언제든지 리뷰 앱을 수동으로 중지할 수 있도록 하세요.
예를 들어:
# In your .gitlab-ci.yml file
deploy_review:
# Other configuration...
environment:
name: review/${CI_COMMIT_REF_NAME}
url: https://${CI_ENVIRONMENT_SLUG}.example.com
on_stop: stop_review_app # References the stop_review_app job
stop_review_app:
stage: deploy
script:
- echo "Stop review app"
# Add your cleanup commands here
environment:
name: review/${CI_COMMIT_REF_NAME}
action: stop
when: manual # Makes this job manually triggerable
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
시간 기반 자동 중지#
일정 기간 후 리뷰 앱이 자동으로 중지되도록 구성하려면 배포 작업에 auto_stop_in 키워드를 추가하세요:
# In your .gitlab-ci.yml file
review_app:
script: deploy-review-app
environment:
name: review/$CI_COMMIT_REF_SLUG
auto_stop_in: 1 week # Stops after one week of inactivity
rules:
- if: $CI_MERGE_REQUEST_ID
리뷰 앱 보기#
리뷰 앱을 배포하고 접근하려면:
- 머지 리퀘스트로 이동하세요.
- 선택 사항. 리뷰 앱 작업이 수동인 경우 실행([play])을 선택하여 배포를 트리거하세요.
- 파이프라인이 완료되면 앱 보기를 선택하여 브라우저에서 리뷰 앱을 여세요.
구현 예시#
이 프로젝트들은 다양한 리뷰 앱 구현을 보여줍니다:
리뷰 앱의 다른 예시:
라우트 맵#
라우트 맵을 사용하면 소스 파일에서 리뷰 앱 환경의 해당 공개 페이지로 직접 이동할 수 있습니다. 이 기능을 사용하면 머지 리퀘스트에서 특정 변경 사항을 더 쉽게 미리볼 수 있습니다.
구성되면 라우트 맵은 매핑 패턴과 일치하는 파일의 리뷰 앱 버전을 볼 수 있는 컨텍스트 링크를 추가합니다. 이 링크들은 다음에 표시됩니다:
- 머지 리퀘스트 위젯.
- 커밋 및 파일 보기.
라우트 맵 구성#
라우트 맵을 설정하려면:
- 리포지터리에
.gitlab/route-map.yml 파일을 생성하세요.
- 소스 경로(리포지터리에서)와 공개 경로(리뷰 앱 인프라 또는 웹사이트에서) 간의 매핑을 정의하세요.
라우트 맵은 각 항목이 source 경로를 public 경로에 매핑하는 YAML 배열입니다.
라우트 맵의 각 매핑은 다음 형식을 따릅니다:
- source: 'path/to/source/file' # Source file in repository
public: 'path/to/public/page' # Public page on the website
두 가지 유형의 매핑을 사용할 수 있습니다:
- 정확히 일치: 작은따옴표로 묶인 문자열 리터럴
- 패턴 일치: 슬래시로 묶인 정규식
정규식을 사용한 패턴 매칭의 경우:
- 정규식은 전체 소스 경로와 일치해야 합니다(
^ 및 $ 앵커가 암시됨).
- 캡처 그룹
()을 사용할 수 있으며 public 경로에서 참조할 수 있습니다.
- 발생 순서대로
\N 표현식을 사용하여 캡처 그룹을 참조하세요(\1, \2 등).
- 슬래시(
/)를 \/로, 마침표(.)를 \.로 이스케이프하세요.
GitLab은 정의 순서대로 매핑을 평가합니다. 일치하는 첫 번째 source 표현식이 public 경로를 결정합니다.
라우트 맵 예시#
다음 예시는 GitLab 웹사이트에서 사용되는 정적 사이트 생성기인 Middleman의 라우트 맵을 보여줍니다:
# Team data
- source: 'data/team.yml' # data/team.yml
public: 'team/' # team/
# Blogposts
- 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 files
- source: /source\/(.+?\.html).*/ # source/index.html.haml
public: '\1' # index.html
# Other files
- 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
이 예시에서:
- 매핑은 순서대로 평가됩니다.
- 세 번째 매핑은
source/index.html.haml이 포괄적인 /source\/(.*)/ 대신 /source\/(.+?\.html).*/와 일치하도록 합니다. 이렇게 하면 index.html.haml 대신 index.html의 공개 경로가 생성됩니다.
매핑된 페이지 보기#
라우트 맵을 사용하여 소스 파일에서 리뷰 앱의 해당 페이지로 직접 이동하세요.
사전 요구 사항:
.gitlab/route-map.yml에 라우트 맵이 구성되어 있어야 합니다.
- 브랜치 또는 머지 리퀘스트에 대해 리뷰 앱이 배포되어 있어야 합니다.
머지 리퀘스트 위젯에서 매핑된 페이지를 보려면:
- 머지 리퀘스트 위젯에서 앱 보기를 선택하세요. 드롭다운 목록에 최대 5개의 매핑된 페이지가 표시됩니다(더 많은 경우 필터링 포함).

파일에서 매핑된 페이지를 보려면:
- 다음 방법 중 하나를 사용하여 라우트 맵과 일치하는 파일로 이동하세요:
- 머지 리퀘스트에서: 변경 사항 탭에서 **파일 보기 @ [커밋]**을 선택하세요.
- 커밋 페이지에서: 파일 이름을 선택하세요.
- 비교에서: 리비전을 비교할 때 파일 이름을 선택하세요.
- 파일 페이지에서 오른쪽 상단에 [환경 이름]에서 보기([external-link])를 선택하세요.
커밋에서 매핑된 페이지를 보려면:
- 리뷰 앱 배포가 있는 커밋으로 이동하세요:
- 브랜치 파이프라인의 경우: 왼쪽 사이드바에서 코드 > 커밋을 선택하고 파이프라인 배지가 있는 커밋을 선택하세요.
- 머지 리퀘스트 파이프라인의 경우: 머지 리퀘스트에서 커밋 탭을 선택하고 커밋을 선택하세요.
- 머지된 결과 파이프라인의 경우: 머지 리퀘스트에서 파이프라인 탭을 선택하고 파이프라인 커밋을 선택하세요.
- 라우트 맵과 일치하는 파일 이름 옆의 리뷰 앱 아이콘([external-link])을 선택하세요. 아이콘을 클릭하면 리뷰 앱의 해당 페이지가 열립니다.
Note
머지된 결과 파이프라인은 브랜치를 대상 브랜치와 병합하는 내부 커밋을 생성합니다. 이 파이프라인의 리뷰 앱 링크에 접근하려면 커밋 탭이 아닌 파이프라인 탭의 커밋을 사용하세요.
