Bitbucket 데이터 센터 호스트에 연결

이 페이지에서는 Bitbucket 데이터 센터 호스트를 Cloud Build에 연결하는 방법을 설명합니다.

시작하기 전에

  • API Cloud Build, Secret Manager, and Compute Engine 사용 설정

    API 사용 설정

  • 소스 코드를 Bitbucket 데이터 센터 저장소에 준비합니다.
  • Bitbucket 데이터 센터 소스 저장소에 Dockerfile 또는 Cloud Build 구성 파일을 준비합니다.
  • Bitbucket 데이터 센터 인스턴스를 설치하지 않은 경우 Bitbucket 데이터 센터 설치의 안내를 참조하세요.
  • 이 페이지에서 gcloud 명령어를 사용하려면 Google Cloud CLI를 설치합니다.

Bitbucket 데이터 센터 호스트에 연결

콘솔

Google Cloud 콘솔을 사용하여 Bitbucket 데이터 센터 호스트를 Cloud Build에 연결하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 페이지 상단에서 1세대 탭을 선택합니다.

  3. 호스트 연결을 클릭합니다.

  4. 드롭다운 메뉴에서 Bitbucket 데이터 센터를 선택합니다.

    호스트 연결 패널이 표시됩니다.

    다음 정보를 입력하여 Bitbucket 데이터 센터 인스턴스를 Cloud Build에 연결합니다.

    1. 리전: 연결의 리전을 선택합니다.

    2. 이름: 연결의 이름을 입력합니다.

    3. 호스트 URL: Bitbucket 데이터 센터 인스턴스의 호스트 URL입니다. 예를 들면 https://bbs.example-test.com:7990입니다.

    4. Google Cloud API 키: 사용자 인증 정보를 인증하는 데 사용되는 API 키입니다.

    5. CA 인증서: 자체 서명 인증서입니다. 인증서 크기는 10KB를 초과할 수 없으며 PEM 형식(.pem, .cer, .crt)이어야 합니다. 이 섹션을 비워두면 Google Cloud가 기본 인증서 집합의 인증서를 사용합니다.

    6. 사용자 이름: Bitbucket 데이터 센터 계정 사용자 이름입니다. 이 계정에는 Cloud Build와 연결할 저장소에 대한 관리자 액세스 권한이 있어야 합니다.

    7. 읽기 액세스 토큰: 읽기 권한이 있는 Bitbucket 데이터 센터 개인 액세스 토큰을 입력합니다.

    8. 관리자 액세스 토큰: 프로젝트 및 저장소에 대한 관리자 권한이 있는 Bitbucket 데이터 센터 개인 액세스 토큰을 입력합니다.

    9. 네트워크 유형에서 다음 옵션 중 하나를 선택합니다.

      1. 공개 인터넷: 공개 인터넷을 사용하여 인스턴스에 액세스할 수 있는 경우 이 옵션을 선택합니다.

      2. 비공개 네트워크: 인스턴스가 비공개 네트워크에서 호스팅되는 경우 이 옵션을 선택합니다.

        1. 프로젝트: Google Cloud 프로젝트 ID를 선택합니다.

        2. 네트워크: 드롭다운 메뉴에서 네트워크를 선택합니다. 네트워크를 만들지 않은 경우 네트워크를 만드는 방법을 알아보려면 VPC 네트워크 만들기 및 관리를 참조하세요.

        3. IP 범위: 피어링된 네트워크의 할당 범위 내에 VM을 할당할 수 있는 내부 IP 범위를 입력합니다.

          클래스 없는 도메인 간 라우팅(CIDR) 라우팅 표기법을 사용하여 STARTING_IP/SUBNET_PREFIX_SIZE 형식으로 범위를 지정할 수 있습니다. 예를 들어 192.0.2.0/24의 프리픽스 길이는 24입니다. IP 범위의 처음 24비트는 서브넷 마스크(192.0.2.0)로 사용되고 가능한 호스트 주소 범위는 192.0.2.0에서 192.0.2.255까지입니다.

          프리픽스 길이 값은 /29 이하여야 합니다. 범위에 지정된 값이 없으면 기본값인 /24가 자동으로 할당됩니다. 프리픽스 길이에 지정된 값이 없으면 피어링된 VPC 네트워크 내에서 IP 주소가 자동으로 할당됩니다. IP 주소에 값을 지정하지 않으면 피어링된 VPC 네트워크 내의 범위가 IP 주소에 자동으로 할당됩니다.

  5. 호스트 연결을 클릭합니다.

    Bitbucket 데이터 센터 인스턴스가 피어링된 네트워크에 있다면 호스트를 연결하는 데 몇 분 정도 걸릴 수 있습니다.

    저장소 연결 패널로 리디렉션됩니다.

    호스트 연결을 만든 후 개인 액세스 토큰과 웹훅 보안 비밀은 Secret Manager에 안전하게 저장됩니다. Secret Manager 페이지에서 보안 비밀을 보고 관리할 수 있습니다.

gcloud

gcloud 명령어를 사용하여 Bitbucket 데이터 센터 호스트를 Cloud Build에 연결하려면 터미널에서 gcloud alpha builds enterprise-config bitbucketserver create 명령어를 실행해야 합니다. Google Cloud Console을 사용하여 호스트를 연결하는 것과 달리 다음 명령어를 실행하기 전에 개인 액세스 토큰과 웹훅 보안 비밀을 수동으로 Secret Manager에 저장해야 합니다.

gcloud alpha builds enterprise-config bitbucketserver create
    --name=BITBUCKET_DATA_CENTER_CONFIG_NAME \
    --user-name=USERNAME \
    --host-uri=HOST_URI \
    --admin-access-token-secret-version=ADMIN_ACCESS_TOKEN_SECRET_VERSION \
    --read-access-token-secret-version=READ_ACCESS_TOKEN_SECRET_VERSION \
    --webhook-secret-secret-version=WEBHOOK_SECRET_SECRET_VERSION \
    --api-key=API_KEY \
    --peered-network=PEERED_NETWORK \
    --peered-network-ip-range=PEERED_NETWORK_IP_RANGE \
    --ssl-ca-file=SSL_CA_FILE

각 항목의 의미는 다음과 같습니다.

  • BITBUCKET_DATA_CENTER_CONFIG_NAME은 Bitbucket 데이터 센터 구성의 이름입니다.
  • USERNAME은 Bitbucket 데이터 센터 사용자 이름입니다.
  • HOST_URI는 Bitbucket 데이터 센터 인스턴스의 호스트 URI입니다.
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION은 Secret Manager에 저장된 관리자 액세스 토큰의 리소스 이름입니다. Secret Manager에 저장된 보안 비밀에 필요한 형식은 projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}입니다. 보안 비밀의 최신 버전을 사용하도록 latest를 버전으로 지정할 수 있습니다. 이는 Secret Manager에 저장된 각 리소스에 적용됩니다.
  • READ_ACCESS_TOKEN_SECRET_VERSION: Secret Manager에 저장된 읽기 액세스 토큰의 리소스 이름입니다.
  • WEBHOOK_SECRET_SECRET_VERSION: Secret Manager에 저장된 웹훅 보안 비밀의 리소스 이름입니다.
  • API_KEY: Google Cloud API 키입니다.
  • 선택사항: PEERED_NETWORK는 Bitbucket 데이터 센터 인스턴스 온프레미스에 연결할 VPC 네트워크입니다. 자세한 내용은 비공개 네트워크의 Bitbucket 데이터 센터에서 저장소 빌드를 참조하세요.

  • 선택사항: PEERED_NETWORK_IP_RANGE는 피어링된 네트워크의 할당 범위 내에서 VM을 할당할 수 있는 내부 IP 범위입니다.

  • SSL_CA_FILE는 Bitbucket 데이터 센터 요청에 사용할 SSL 인증서가 포함된 로컬 파일의 경로입니다. 인증서는 PEM 형식이어야 합니다.

API

API를 사용하여 Bitbucket 데이터 센터 호스트를 Cloud Build에 연결하려면 다음 JSON 템플릿을 사용하세요. Google Cloud Console을 사용하여 호스트를 연결하는 것과 달리 API를 호출하기 전에 개인 액세스 토큰과 웹훅 보안 비밀을 Secret Manager에 수동으로 저장해야 합니다.

{
    "hostUri": "HOST_URI",
    "username": "USERNAME",
    "apiKey": "API_KEY",
    "secrets": {
      "adminAccessTokenVersionName": "ADMIN_ACCESS_TOKEN_SECRET_VERSION",
      "readAccessTokenVersionName": "READ_ACCESS_TOKEN_SECRET_VERSION",
      "webhookSecretVersionName": "WEBHOOK_SECRET_SECRET_VERSION",
    },
    "peeredNetwork": "PEERED_NETWORK",
    "peeredNetworkIpRange": "PEERED_NETWORK_IP_RANGE",
    "sslCa": "SSL_CERTIFICATE"
}

각 항목의 의미는 다음과 같습니다.

  • HOST_URI는 Bitbucket 데이터 센터 인스턴스의 호스트 URI입니다.
  • USERNAME은 Bitbucket 데이터 센터 사용자 이름입니다.
  • API_KEY: Google Cloud API 키입니다.
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION은 Secret Manager에 저장된 관리자 액세스 토큰의 리소스 이름입니다. Cloud Build 서비스 계정(service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com)에 Secret Manager 역할을 부여해야 할 수 있습니다. 자세한 내용은 서비스 계정에 Secret Manager 역할 부여를 참조하세요.

  • READ_ACCESS_TOKEN_SECRET_VERSION: Secret Manager에 저장된 읽기 액세스 토큰의 리소스 이름입니다.

  • WEBHOOK_SECRET_SECRET_VERSION: Secret Manager에 저장된 웹훅 보안 비밀의 리소스 이름입니다.

  • 선택사항: PEERED_NETWORK는 Bitbucket 데이터 센터 인스턴스 온프레미스에 피어링할 VPC 네트워크입니다.

    클래스 없는 도메인 간 라우팅(CIDR) 라우팅 표기법을 사용하여 STARTING_IP/SUBNET_PREFIX_SIZE 형식으로 범위를 지정할 수 있습니다. 예를 들어 192.0.2.0/24의 프리픽스 길이는 24입니다. IP 범위의 처음 24비트는 서브넷 마스크(192.0.2.0)로 사용되고 가능한 호스트 주소 범위는 192.0.2.0에서 192.0.2.225까지입니다.

  • 선택사항: PEERED_NETWORK_IP_RANGE는 피어링된 네트워크의 할당 범위 내에서 VM을 할당할 수 있는 내부 IP 범위입니다.

  • 선택사항: SSL_CERTIFICATE는 Bitbucket 데이터 센터 인스턴스 온프레미스에 사용되는 SSL 인증서입니다.

터미널에 다음 curl 명령어를 입력합니다.

  curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_DATA_CENTER_CONFIG_NAME -d @config.json

각 항목의 의미는 다음과 같습니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • REGION: Bitbucket 데이터 센터 구성과 연결된 리전입니다.
  • BITBUCKET_DATA_CENTER_CONFIG_NAME은 Bitbucket 데이터 센터 구성의 이름입니다.

요청이 성공하면 응답 본문에 새로 생성된 Operation의 인스턴스가 포함됩니다.

터미널에 다음 curl 명령어를 입력합니다.

  curl -X GET -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8"  -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

각 항목의 의미는 다음과 같습니다.

  • PROJECT_NUMBER: Google Cloud 프로젝트 번호입니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • REGION: Bitbucket 데이터 센터 구성과 연결된 리전입니다.
  • OPERATION_ID: Bitbucket 데이터 센터 구성 만들기 작업의 ID입니다.

작업이 완료되었음을 나타내는 done: true가 포함될 때까지 GetOperation API 명령어를 계속 실행해야 할 수 있습니다. Bitbucket 데이터 센터 구성이 성공적으로 생성되면 response.value 필드에서 구성을 볼 수 있습니다. 그렇지 않은 경우 error 필드를 참조하여 자세한 오류 보고서를 확인합니다.

다음 단계