검색

3.4. Bitbucket Cloud에서 Pipeline을 코드로 사용

download PDF

조직 또는 프로젝트에서 Bitbucket Cloud를 기본 플랫폼으로 사용하는 경우 Bitbucket Cloud에서 Webhook가 있는 리포지토리의 코드로 Pipeline을 사용할 수 있습니다.

사전 요구 사항

  • Pipeline as Code가 클러스터에 설치되어 있는지 확인합니다.
  • Bitbucket Cloud에서 앱 암호를 생성합니다.

    • 다음 확인란을 선택하여 토큰에 적절한 권한을 추가합니다.

      • 계정: 이메일,읽기
      • 작업 공간 멤버십: 읽기,쓰기
      • 프로젝트: 읽기,쓰기
      • 문제: 읽기,쓰기
      • 가져오기 요청: 읽기,쓰기

        참고
        • tkn pac CLI를 사용하여 Webhook를 구성하려면 Webhook:읽기쓰기 권한을 토큰에 추가합니다.
        • 생성된 암호 또는 토큰 사본을 대체 위치에 저장합니다.

프로세스

  1. Webhook를 구성하고 리포지토리 CR을 생성합니다.

    • tkn pac CLI 툴을 사용하여 Webhook를 구성하고 리포지토리 CR을 자동으로 생성하려면 다음 명령을 사용합니다.

      $ tkn pac create repo

      대화형 출력 샘플

      ? Enter the Git repository url (default: https://bitbucket.org/workspace/repo):
      ? Please enter the namespace where the pipeline should run (default: repo-pipelines):
      ! Namespace repo-pipelines is not found
      ? Would you like me to create the namespace repo-pipelines? Yes
      ✓ Repository workspace-repo has been created in repo-pipelines namespace
      ✓ Setting up Bitbucket Webhook for Repository https://bitbucket.org/workspace/repo
      ? Please enter your bitbucket cloud username:  <username>
      ℹ ️You now need to create a Bitbucket Cloud app password, please checkout the docs at https://is.gd/fqMHiJ for the required permissions
      ? Please enter the Bitbucket Cloud app password:  ************************************
      👀 I have detected a controller url: https://pipelines-as-code-controller-openshift-pipelines.apps.example.com
      ? Do you want me to use it? Yes
      ✓ Webhook has been created on repository workspace/repo
      🔑 Webhook Secret workspace-repo has been created in the repo-pipelines namespace.
      🔑 Repository CR workspace-repo has been updated with webhook secret in the repo-pipelines namespace
      ℹ Directory .tekton has been created.
      ✓ A basic template has been created in /home/Go/src/bitbucket/repo/.tekton/pipelinerun.yaml, feel free to customize it.

    • Webhook를 구성하고 리포지토리 CR을 수동으로 생성하려면 다음 단계를 수행합니다.

      1. OpenShift 클러스터에서 Pipeline의 공용 URL을 코드 컨트롤러로 추출합니다.

        $ echo https://$(oc get route -n openshift-pipelines pipelines-as-code-controller -o jsonpath='{.spec.host}')
      2. Bitbucket Cloud에서 다음 단계를 수행합니다.

        1. Bitbucket Cloud 리포지토리의 왼쪽 탐색 창을 사용하여 리포지토리 설정 -> Webhook로 이동하고 Webhook 추가 를 클릭합니다.
        2. 제목 을 설정합니다. 예를 들어 "Pipelines as Code"가 있습니다.
        3. URL 을 코드 컨트롤러 공용 URL로 Pipeline으로 설정합니다.
        4. 다음 이벤트를 선택합니다: Repository: Push,Pull Request: Created,Pull Request: Updated, Pull Request: Comment created.
        5. 저장을 클릭합니다.
      3. OpenShift 클러스터에서 대상 네임스페이스에 app 암호를 사용하여 Secret 오브젝트를 생성합니다.

        $ oc -n target-namespace create secret generic bitbucket-cloud-token \
          --from-literal provider.token="<BITBUCKET_APP_PASSWORD>"
      4. 리포지토리 CR을 생성합니다.

        예: 리포지토리 CR

        apiVersion: "pipelinesascode.tekton.dev/v1alpha1"
        kind: Repository
        metadata:
          name: my-repo
          namespace: target-namespace
        spec:
          url: "https://bitbucket.com/workspace/repo"
          branch: "main"
          git_provider:
            user: "<BITBUCKET_USERNAME>" 1
            secret:
              name: "bitbucket-cloud-token" 2
              key: "provider.token" # Set this if you have a different key in your secret

        1
        소유자 파일의 ACCOUNT_ID 만 사용자를 참조할 수 있습니다.
        2
        Code와 같은 파이프라인에서는 git_provider.secret 사양에서 참조하는 시크릿과 Repository CR이 동일한 네임스페이스에 있다고 가정합니다.
    참고
    • Bitbucket Cloud에서는 tkn pac createtkn pac bootstrap 명령이 지원되지 않습니다.
    • Bitbucket Cloud는 Webhook 보안을 지원하지 않습니다. 페이로드를 보호하고 CI의 하이재킹을 방지하기 위해 코드로서의 파이프라인은 Bitbucket Cloud IP 주소 목록을 가져와서 Webhook 수신이 해당 IP 주소에서만 제공되도록 합니다.

      • 기본 동작을 비활성화하려면 pipelinesAsCode.settings 사양에서 TektonConfig 사용자 정의 리소스에서 bitbucket-cloud-check-source-ip 매개변수를 false 로 설정합니다.
      • 추가 안전 IP 주소 또는 네트워크를 허용하려면 pipelinesAsCode.settings 사양에서 TektonConfig 사용자 정의 리소스의 bitbucket-cloud-additional-source-ip 매개변수에 쉼표로 구분된 값으로 추가합니다.
  2. 선택 사항: 기존 리포지토리 CR의 경우 여러 Bitbucket Cloud Webhook 시크릿을 추가하거나 삭제된 시크릿을 대체할 수 있습니다.

    1. tkn pac CLI 툴을 사용하여 Webhook를 추가합니다.

      예: tkn pac CLI를 사용하여 추가 Webhook 추가

      $ tkn pac webhook add -n repo-pipelines

      대화형 출력 샘플

      ✓ Setting up Bitbucket Webhook for Repository https://bitbucket.org/workspace/repo
      ? Please enter your bitbucket cloud username:  <username>
      👀 I have detected a controller url: https://pipelines-as-code-controller-openshift-pipelines.apps.example.com
      ? Do you want me to use it? Yes
      ✓ Webhook has been created on repository workspace/repo
      🔑 Secret workspace-repo has been updated with webhook secret in the repo-pipelines namespace.

      참고

      tkn pac webhook add 명령과 함께 [-n <namespace>] 옵션을 기본 네임스페이스 이외의 네임스페이스에 리포지토리 CR이 있는 경우에만 사용합니다.

    2. 기존 OpenShift Secret 오브젝트에서 webhook.secret 키를 업데이트합니다.
  3. 선택 사항: 기존 리포지토리 CR의 경우 개인 액세스 토큰을 업데이트합니다.

    • tkn pac CLI 툴을 사용하여 개인 액세스 토큰을 업데이트합니다.

      예: tkn pac CLI를 사용하여 개인 액세스 토큰 업데이트

      $ tkn pac webhook update-token -n repo-pipelines

      대화형 출력 샘플

      ? Please enter your personal access token:  ****************************************
      🔑 Secret owner-repo has been updated with new personal access token in the repo-pipelines namespace.

      참고

      기본 네임스페이스 이외의 네임스페이스에 리포지토리 CR이 있는 경우에만 tkn pac webhook update-token 명령에 [-n <namespace>] 옵션을 사용합니다.

    • 또는 Repository CR을 수정하여 개인 액세스 토큰을 업데이트합니다.

      1. Repository CR에서 시크릿 이름을 찾습니다.

        ...
        spec:
          git_provider:
            user: "<BITBUCKET_USERNAME>"
            secret:
              name: "bitbucket-cloud-token"
              key: "provider.token"
        ...
      2. oc patch 명령을 사용하여 $target_namespace 네임스페이스에서 $password 값을 업데이트합니다.

        $ oc -n $target_namespace patch secret bitbucket-cloud-token -p "{\"data\": {\"provider.token\": \"$(echo -n $NEW_TOKEN|base64 -w0)\"}}"
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.