Orbit

Azure DevOps 리포지토리 연결하기

Orbit deploys from Azure Repos, the git hosting inside Azure DevOps. Connect once, pick a repository, and every push builds and goes live. This guide covers both ways to connect, selecting a…

Orbit는 Azure Repos(Azure DevOps 내부의 git 호스팅)에서 배포합니다. 한 번 연결하고 리포지토리를 선택하면 모든 푸시가 빌드되어 라이브로 올라갑니다. 이 가이드는 두 가지 연결 방법, 리포지토리 선택, 그리고 Azure가 다른 제공자와 다르게 처리하는 두 가지를 다룹니다.

두 가지 연결 방법과 그 이유

Azure DevOps 조직은 테넌트 수준에서 타사 애플리케이션을 차단할 수 있으며, 많은 회사가 그렇게 합니다. 귀사에서 차단하면 로그인 버튼은 어떤 방법으로도 작동할 수 없으므로 Orbit은 항상 작동하는 두 번째 방법을 제공합니다.

  • Microsoft로 로그인. 한 번의 클릭, 복사해서 붙여넣을 것이 없습니다. 조직이 타사 애플리케이션을 허용할 때 사용 가능합니다.
  • 개인 액세스 토큰. 모든 조직에서 작동하며, 애플리케이션을 차단하는 조직도 포함합니다. Azure DevOps에서 만든 조직 이름과 토큰을 붙여넣습니다.

두 방법 모두 정확히 동일한 기능에 도달합니다. 어느 것도 다른 것의 축소 버전이 아닙니다.

시작하기 전에

Orbit은 Azure DevOps 계정이 볼 수 있는 것만 봅니다. 서비스 훅 구독을 생성할 수 있는 충분한 리포지토리 권한이 필요합니다. 왜냐하면 그 구독이 푸시가 우리에게 도달하는 방식이기 때문입니다. 이것이 없으면 연결은 성공하지만 아무것도 배포되지 않습니다.

옵션 A: Microsoft로 로그인

  1. KPanel에서 왼쪽 사이드바의 Orbit을 클릭합니다.
  2. 새 프로젝트를 클릭합니다.
  3. 모드를 Git 리포지토리 가져오기로 설정된 상태로 둡니다.
  4. Azure DevOps 탭을 선택한 후 Azure DevOps 연결을 클릭합니다.

Microsoft로 이동하여 로그인하고 액세스를 승인합니다. 승인하면 KPanel로 돌아오며 리포지토리가 로드됩니다.

조직이 애플리케이션을 차단하면 Microsoft가 거부하고 KPanel에 그 이유를 표시합니다. 이는 재시도로 벗어날 수 없는 상황입니다. 아래의 개인 액세스 토큰을 사용하거나 관리자에게 애플리케이션 허용을 요청하세요.

옵션 B: 개인 액세스 토큰

먼저 Azure DevOps에서 토큰을 만듭니다.

  1. Azure DevOps에서 사용자 설정, 개인 액세스 토큰, 새 토큰을 엽니다.
  2. 배포하려는 조직을 선택합니다.
  3. 이 세 가지 범위만 부여합니다:
    • Code (Read) - Orbit이 리포지토리를 나열하고 빌드 중인 커밋을 다운로드할 수 있도록 합니다.
    • Code (Status) - 빌드 결과가 커밋과 풀 요청에 나타나도록 합니다.
    • Service Hooks (Read and write) - Orbit이 푸시를 구독할 수 있도록 합니다.
  4. 토큰을 복사합니다. Azure는 한 번만 표시합니다.

그런 다음 KPanel에서:

  1. Orbit, 새 프로젝트, Azure DevOps 탭을 엽니다.
  2. 개인 액세스 토큰으로 연결 아래에서 조직 이름을 입력합니다. 이것은 리포지토리 주소에서 dev.azure.com 바로 다음에 오는 부분입니다. https://dev.azure.com/contoso/web-platform/_git/storefront의 경우 조직은 contoso입니다.
  3. 토큰을 붙여넣고 Azure DevOps 연결을 클릭합니다.

Orbit은 토큰을 즉시 사용하여 리포지토리를 나열합니다. 거부되면 토큰을 확인하라고 하지 않고 어떤 범위가 누락되었는지 알려줍니다. 왜냐하면 리포지토리는 나열할 수 있지만 서비스 훅을 만들 수 없는 토큰이 깔끔하게 연결된 후 아무것도 배포하지 않는 경우이기 때문입니다.

토큰은 저장되기 전에 암호화되며 지정한 조직에 대해서만 사용됩니다.

리포지토리 선택

리포지토리는 organisation / project / repository라는 이름의 목록으로 나타납니다. Azure 리포지토리는 한 조직의 두 프로젝트가 각각 같은 이름의 리포지토리를 보유할 수 있기 때문에 두 개가 아닌 세 개의 부분을 가집니다.

원하는 것 옆의 선택을 클릭한 후 평소대로 프로젝트를 완료합니다: 이름, 프레임워크, 빌드 설정, 환경 변수.

리포지토리가 누락된 경우

  • 조직을 확인합니다. 개인 액세스 토큰은 ONE 조직에 속하므로 다른 조직의 리포지토리는 표시되지 않습니다. 해당 조직도 연결합니다.
  • Azure DevOps에서 리포지토리 자체에 대한 액세스 권한을 확인합니다.
  • Azure에서 리포지토리가 비활성화되어 있는지 확인합니다. Orbit은 비활성화된 리포지토리를 나열하지 않습니다. 왜냐하면 빌드할 수 없기 때문입니다.

Azure가 다르게 처리하는 두 가지

이는 실제 차이점이며, 우리가 아직 처리하지 않은 간격이 아닙니다. 둘 다 나중에 발견되지 않고 여기에 명시되어 있습니다.

Monorepo 루트 디렉토리는 푸시를 건너뛰지 않습니다

다른 제공자에서 Orbit은 각 푸시가 변경한 파일 목록을 읽고, monorepo 프로젝트는 루트 디렉토리 아래에 아무것도 이동하지 않았을 때 빌드를 건너뛸 수 있습니다. Azure는 해당 목록을 보내지 않습니다. 따라서 Orbit은 추측하는 대신 모든 푸시에서 빌드합니다. 다른 방향으로 추측하면 예상하던 배포가 조용히 건너뛰어질 수 있기 때문입니다.

루트 디렉토리 설정은 빌드가 실행되는 위치를 결정합니다. 단지 어떤 푸시가 빌드되는지 추가로 필터링하지 않습니다.

포크의 풀 요청은 빌드되지 않습니다

Orbit은 프로젝트의 미리보기 환경 변수를 사용하여 풀 요청 미리보기를 빌드합니다. 이는 자신의 리포지토리의 풀 요청에는 안전하고 포크의 풀 요청에는 안전하지 않습니다. 포크는 계정과 관계가 없는 사람의 제안입니다.

GitHub에서 Orbit은 포크 미리보기를 제공할 수 있습니다. GitHub는 제안된 커밋을 자신의 리포지토리 내에 게시하므로 기여자의 복사본에 대해 인증할 필요가 없기 때문입니다. Azure는 동등한 기능을 게시하지 않으므로 Orbit은 포크 풀 요청을 거부하고 나타나지 않는 미리보기를 남기지 않고 커밋에 표시합니다.

자신의 리포지토리 내의 분기의 풀 요청은 정상적으로 빌드됩니다.

다음 단계

프로덕션 분기로 푸시하면 Orbit이 빌드하고 배포합니다. 빌드 결과는 Azure DevOps의 커밋에 다시 게시되므로 커밋과 커밋이 속한 모든 풀 요청에 표시되며 분기 정책이 이를 요구할 수 있습니다.

관련 항목

여전히 도움이 필요하신가요?

다음 주소로 이메일을 보내주세요 support@kapsulehost.com 또는 KPanel에서 채팅을 시작하세요.

KPanel 열기