3.4. Bitbucket Cloud에서 Pipeline을 코드로 사용
조직 또는 프로젝트에서 Bitbucket Cloud를 기본 플랫폼으로 사용하는 경우 Bitbucket Cloud에서 Webhook가 있는 리포지토리의 코드로 Pipeline을 사용할 수 있습니다.
사전 요구 사항
- Pipeline as Code가 클러스터에 설치되어 있는지 확인합니다.
Bitbucket Cloud에서 앱 암호를 생성합니다.
다음 확인란을 선택하여 토큰에 적절한 권한을 추가합니다.
-
계정:
이메일
,읽기
-
작업 공간 멤버십:
읽기
,쓰기
-
프로젝트:
읽기
,쓰기
-
문제:
읽기
,쓰기
가져오기 요청:
읽기
,쓰기
참고-
tkn pac
CLI를 사용하여 Webhook를 구성하려면Webhook
:읽기
및쓰기
권한을 토큰에 추가합니다. - 생성된 암호 또는 토큰 사본을 대체 위치에 저장합니다.
-
-
계정:
프로세스
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을 수동으로 생성하려면 다음 단계를 수행합니다.OpenShift 클러스터에서 Pipeline의 공용 URL을 코드 컨트롤러로 추출합니다.
$ echo https://$(oc get route -n openshift-pipelines pipelines-as-code-controller -o jsonpath='{.spec.host}')
Bitbucket Cloud에서 다음 단계를 수행합니다.
- Bitbucket Cloud 리포지토리의 왼쪽 탐색 창을 사용하여 리포지토리 설정 -> Webhook로 이동하고 Webhook 추가 를 클릭합니다.
- 제목 을 설정합니다. 예를 들어 "Pipelines as Code"가 있습니다.
- URL 을 코드 컨트롤러 공용 URL로 Pipeline으로 설정합니다.
- 다음 이벤트를 선택합니다: Repository: Push,Pull Request: Created,Pull Request: Updated, Pull Request: Comment created.
- 저장을 클릭합니다.
OpenShift 클러스터에서 대상 네임스페이스에 app 암호를 사용하여
Secret
오브젝트를 생성합니다.$ oc -n target-namespace create secret generic bitbucket-cloud-token \ --from-literal provider.token="<BITBUCKET_APP_PASSWORD>"
리포지토리
CR을 생성합니다.예:
리포지토리
CRapiVersion: "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
참고-
Bitbucket Cloud에서는
tkn pac create
및tkn 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
매개변수에 쉼표로 구분된 값으로 추가합니다.
-
기본 동작을 비활성화하려면
선택 사항: 기존
리포지토리
CR의 경우 여러 Bitbucket Cloud Webhook 시크릿을 추가하거나 삭제된 시크릿을 대체할 수 있습니다.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이 있는 경우에만 사용합니다.-
기존 OpenShift
Secret
오브젝트에서webhook.secret
키를 업데이트합니다.
선택 사항: 기존
리포지토리
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을 수정하여 개인 액세스 토큰을 업데이트합니다.Repository
CR에서 시크릿 이름을 찾습니다.... spec: git_provider: user: "<BITBUCKET_USERNAME>" secret: name: "bitbucket-cloud-token" key: "provider.token" ...
oc patch
명령을 사용하여$target_namespace
네임스페이스에서$password
값을 업데이트합니다.$ oc -n $target_namespace patch secret bitbucket-cloud-token -p "{\"data\": {\"provider.token\": \"$(echo -n $NEW_TOKEN|base64 -w0)\"}}"