Git으로 도구 체인 작성하기

Continuous Delivery 2027년 2월 12일부로 다음 지역에서 서비스가 중단됩니다: au-syd, ca-tor, us-east. 또한 해당 날짜를 기점으로 Code Risk Analyzer는 모든 지역에서 서비스가 중단될 예정입니다. 특정 지역에서 해당 기능을 실제로 사용하지 않는 경우, 해당 지역의 기능은 예정보다 일찍 중단될 수 있으며 새로운 인스턴스 등록이 더 이상 허용되지 않을 수 있습니다. 자세히 알아보기

Git Repos and Issue Tracking 또는 GitHub 도구 통합이 포함된 템플리트를 사용하여 Git 저장소(repos)를 추가할 수 있는 도구 체인을 작성할 수 있습니다. 또는 빈 툴체인 또는 기존 툴체인으로 시작한 다음 Git Repos and Issue Tracking 또는 GitHub 도구 통합을 추가할 수 있습니다.

Git Repos and Issue Tracking 또는 GitHub 도구 통합이 포함된 도구 체인 템플리트를 확인하려면, 도구 체인 가용성, 템플리트 및 튜토리얼을 참조하십시오.

콘솔을 사용하여 Git Repos and Issue Tracking 또는 GitHub 로 템플리트에서 도구 체인 작성

템플릿을 출발점으로 삼아, Git Repos and Issue Tracking 또는 GitHub 도구 통합 기능을 포함하는 툴체인을 생성할 수 있습니다. IBM Cloud 차고 방식 에서 템플릿 사용 방법에 대해 자세히 알아보세요.

  1. IBM Cloud에 로그인하십시오.

  2. IBM Cloud 콘솔에서 메뉴 아이콘 햄버거 아이콘 > 플랫폼 자동화 > 툴체인을 클릭합니다.

  3. DevOps 대시보드의 도구 체인 페이지에서, 도구 체인 작성을 클릭하십시오.

  4. 도구 체인 작성 페이지에서 도구 체인 템플리트를 클릭하십시오.

  5. 작성하려는 도구 체인의 다이어그램을 검토하십시오. 다이어그램은 도구 체인에서 해당 라이프사이클 단계(Phase)에 있는 각 도구 통합을 보여줍니다.

  6. 도구 체인 설정에 대한 기본 정보를 검토하십시오.

    • 도구 체인의 이름은 IBM Cloud에서 해당 도구 체인을 식별합니다. 다른 이름을 사용하려면 도구 체인의 이름을 변경하십시오.
    • 도구 체인을 작성할 지역입니다. 다른 지역을 사용하려는 경우 사용 가능한 지역의 목록에서 선택하십시오.
    • 도구 체인이 작성될 자원 그룹입니다. 다른 자원 그룹을 사용하려면, 사용 가능한 자원 그룹 목록에서 이를 선택하십시오.
    • 소스 저장소의 제공자(예: GitHub 또는 GitLab)입니다. 다른 소스 제공자를 사용하려는 경우 사용 가능한 저장소 목록에서 선택하십시오.
  7. 도구 통합 섹션에서 도구 체인에 대해 구성할 각 도구 통합을 선택하십시오. 도구 통합 구성에 대한 자세한 정보는 도구 통합 구성을 참조하십시오.

  8. 작성을 클릭하십시오. 여러 단계가 자동으로 실행되어 도구 체인을 설정합니다. 설정된 도구 통합은 선택된 도구 체인 템플리트에 따라 서로 다릅니다. 예를 들어, IBM Cloud Public에서 마이크로서비스 도구 체인을 작성하면 다음 단계가 실행됩니다.

    • 도구 체인이 작성됩니다.
    • Delivery Pipeline을 구성한 경우에는 파이프라인이 작성되고 트리거됩니다.
    • Sauce Labs를 구성한 경우에는 Sauce Labs 테스트 작업을 파이프라인에 추가하도록 도구 체인이 설정됩니다.
    • Event Notifications 를 구성한 경우, 툴체인은 사용자가 지정한 Event Notifications 서비스로 이벤트 알림을 전송하도록 설정됩니다.
    • PagerDuty를 구성한 경우에는 경보 알림을 지정된 PagerDuty 서비스에 전송하도록 도구 체인이 설정됩니다.
    • Slack을 구성한 경우에는 배치 상태에 대한 알림을 지정된 Slack 채널에 전송하도록 도구 체인이 설정됩니다.
    • GitHub 등의 소스 코드 도구 통합을 구성한 경우에는 샘플 GitHub 저장소가 GitHub 계정으로 복제됩니다.

    이제 다음을 사용하여 이벤트 알림을 배포할 수 있습니다 Event NotificationsPagerDuty 도구 통합을 사용하여 이벤트 알림을 배포할 수 있습니다. IBM Cloud Event Notifications 는 Slack, 이메일, SMS, 푸시 알림, 웹훅, Microsoft® Teams, ServiceNow, 및 IBM Cloud Functions 와 같은 기타 커뮤니케이션 채널에 알림을 배포하는 데 선호되는 방법입니다. Event Notifications 사용에 대한 자세한 내용은 툴체인에 대한 이벤트 알림 사용 설정하기를 참조하세요.

API를 사용하여 Git Repos and Issue Tracking 또는 GitHub 를 사용하여 템플리트에서 도구 체인 작성

콘솔을 사용해서만 템플리트에서 도구 체인을 작성할 수 있습니다. 콘솔 사용 단계를 보려면 UI 지시사항으로 전환하십시오.

템플리트를 사용하는 대신 API를 사용하여 도구 체인을 작성하는 방법에 대한 자세한 정보는 API를 사용하여 기존 도구 체인에 Git 도구 통합 추가 를 참조하십시오.

Git Repos and Issue Tracking 또는 GitHub 을 사용하여 템플릿으로부터 도구 체인 생성하기 (Terraform 활용)

콘솔을 사용해서만 템플리트에서 도구 체인을 작성할 수 있습니다. 콘솔 사용 단계를 보려면 UI 지시사항으로 전환하십시오.

템플리트를 사용하는 대신 Terraform을 사용하여 도구 체인을 작성하는 방법에 대한 자세한 정보는 Terraform을 사용하여 기존 도구 체인에 Git 도구 통합 추가 를 참조하십시오.

콘솔을 사용하여 기존 도구 체인에 Git 도구 통합 추가

콘솔을 사용하여 기존 도구 체인에 Git 도구 통합을 추가할 수 있습니다.

  1. IBM Cloud에 로그인하십시오.
  2. IBM Cloud 콘솔에서 메뉴 아이콘( 햄버거 아이콘 )을 클릭한 다음 ‘리소스 목록’을 선택합니다.
  3. 자원 목록에서 개발자 도구 섹션을 펼치십시오.
  4. Git 도구 통합을 추가할 도구 체인을 클릭하거나 도구 체인을 작성하십시오. 도구 체인 작성에 대한 정보는 도구 체인 작성 을 참조하십시오.
  5. 툴체인 개요 페이지에서 ‘도구 추가’를 클릭한 다음, GitHub 또는 Git Repos and Issue Tracking 를 선택하여 이 두 가지 도구 통합 중 하나를 툴체인에 추가할 수 있습니다.
  6. 선택하는 Git 도구 통합에 따라 GitHub 도구 통합을 구성 하거나 Git Repos and Issue Tracking 도구 통합을 구성 할 수 있습니다.

API를 사용하여 기존 도구 체인에 Git 도구 통합 추가

API를 사용하여 기존 도구 체인에 Git 도구 통합을 추가할 수 있습니다.

  1. IAM 베어러 토큰을 확보하십시오. 또는 SDK를 사용하는 경우 IAM API키를 얻고 환경 변수를 사용하여 클라이언트 옵션을 설정하십시오.

    export CD_TOOLCHAIN_AUTH_TYPE=iam && \
    export CD_TOOLCHAIN_APIKEY={iam_api_key} && \
    export CD_TOOLCHAIN_URL=https://api.{region}.devops.cloud.ibm.com/toolchain/v2
    
  2. Git 도구 통합을 추가할 도구 체인의 지역 및 ID를 판별 하십시오.

  3. Git 도구 통합을 툴체인에 추가합니다. 다음 예제는 github.com의 기존 저장소에 링크되는 Git 도구 통합을 추가하는 방법을 보여줍니다. 새 저장소를 작성, 분기 실행 또는 복제하기 위한 지시사항과 함께 Git 도구 통합을 추가할 수도 있습니다. 또한 다른 GitHub, GitLab, 또는 Bitbucket 서버에 대한 도구 통합을 추가할 수 있습니다.

    curl -X POST \
      https://api.{region}.devops.cloud.ibm.com/toolchain/v2/toolchains/{toolchain_id}/tools \
      -H 'Authorization: Bearer {token}' \
      -H 'Accept: application/json` \
      -H 'Content-Type: application/json' \
        -d '{
        "tool_type_id": "githubconsolidated",
        "name": "{tool_integration_name}",
        "parameters": {
          "type": "link",
          "git_id": "github",
          "repo_url": "https://github.com/{git_org}/{git-repo}.git",
          "has_issues": true
        }
      }'
    
    const CdToolchainV2 = require('@ibm-cloud/continuous-delivery/cd-toolchain/v2');
    const toolchainService = CdToolchainV2.newInstance();
    ...
    (async() => {
       const gitToolModel = {
          toolchainId: {toolchain_id},
          toolTypeId: 'githubconsolidated',
          name: {tool_integration_name},
          parameters: {
             type: 'link',
             git_id: 'github',
             repo_url: 'https://github.com/{git_org}/{git-repo}.git',
             has_issues: true,
          }
       };
       const gitTool = await toolchainService.createTool(gitToolModel);
    })();
    
    import (
    	   "github.com/IBM/continuous-delivery-go-sdk/cdtoolchainv2"
    )
    ...
    toolchainClientOptions := &cdtoolchainv2.CdToolchainV2Options{}
    toolchainClient, err := cdtoolchainv2.NewCdToolchainV2UsingExternalConfig(toolchainClientOptions)
    createGitToolOptions := toolchainClient.NewCreateToolOptions({toolchain_id}, "githubconsolidated")
    gitParameters := map[string]interface{}{
     "type": "link",
     "git_id": "github",
     "repo_url": "https://github.com/{git_org}/{git-repo}.git",
     "has_issues": true,
    }
    createGitToolOptions.SetName({tool_integration_name})
    createGitToolOptions.SetParameters(gitParameters)
    gitTool, response, err := toolchainClient.CreateTool(createGitToolOptions)
    
    from ibm_continuous_delivery.cd_toolchain_v2 import CdToolchainV2
    ...
    toolchain_service = CdToolchainV2.new_instance()
    git_parameters = {
       "type": "link",
       "git_id": "github",
       "repo_url": "https://github.com/{git_org}/{git-repo}.git",
       "has_issues": True
    }
    git_tool = toolchain_service.create_tool(
       name = {tool_integration_ame},
       toolchain_id = {toolchain_id},
       tool_type_id = "githubconsolidated",
       parameters = git_parameters
    )
    
    import com.ibm.cloud.continuous_delivery.cd_toolchain.v2.CdToolchain;
    import com.ibm.cloud.continuous_delivery.cd_toolchain.v2.model.*;
    ...
    CdToolchain toolchainService = CdToolchain.newInstance();
    HashMap<String, Object> gitParameters = new HashMap<>();
    gitParameters.put("type", "link");
    gitParameters.put("git_id", "github");
    gitParameters.put("repo_url", "https://github.com/{git_org}/{git-repo}.git");
    gitParameters.put("has_issues", true);
    CreateToolOptions createGitToolOptions = new CreateToolOptions.Builder()
       .name({tool_integration_name})
       .parameters(gitParameters)
       .toolchainId({toolchain_id})
       .toolTypeId("githubconsolidated")
       .build();
    Response<ToolchainToolPost> response = toolchainService.createTool(createGitToolOptions).execute();
    ToolchainToolPost gitTool = response.getResult();
    

다음 표에서는 이전 단계에서 사용된 각 변수를 나열하고 설명합니다.

API에 Git 도구 통합을 추가하기 위한 변수
가변 설명
{git_org} 저장소를 포함하는 github.com 의 조직입니다.
{git_repo} 도구 체인에 통합할 github.com 의 저장소입니다.
{iam_api_key} IAM API 키.
{region} 툴체인이 위치한 지역. 예를 들어, us-south입니다.
{tool_integration_name} 도구 통합의 이름입니다.
{toolchain_id} 도구 통합을 추가할 도구 체인의 ID입니다.
{token} 유효한 IAM 베어러 토큰입니다.

구성할 수 있는 추가 매개변수를 포함하여 각 Git 도구 통합에 대한 자세한 정보는 다음 주제를 참조하십시오.

Terraform을 사용하여 기존 도구 체인에 Git 도구 통합 추가

Terraform을 사용하여 기존 도구 체인에 Git 도구 통합을 추가할 수 있습니다.

  1. Terraform CLI를 설치하고 Terraform을 위한 IBM Cloud 제공자 플러그인을 구성하려면 IBM Cloud에서 Terraform 시작하기 튜토리얼을 따르십시오.

  2. Git 도구 통합을 추가할 도구 체인의 리소스 블록을 포함하는 Terraform 파일 (예: main.tf) 을 찾으십시오. 이 파일에서 구성을 추가하여 도구 통합을 작성하십시오.

    다음 예제에서는 도구 체인이 없는 경우 도구 체인을 작성한 후 ibm_cd_toolchain_tool_githubconsolidated 자원을 사용하여 github.com 의 기존 저장소에 링크하는 Git 도구 통합을 추가합니다. 새 저장소를 작성, 분기 실행 또는 복제하기 위한 지시사항과 함께 Git 도구 통합을 추가할 수도 있습니다. 또한 다른 GitHub, GitLab, 또는 Bitbucket 서버에 대한 도구 통합을 추가할 수 있습니다.

    data "ibm_resource_group" "group" {
      name = "default"
    }
    resource "ibm_cd_toolchain" "cd_toolchain" {
      name              = "my toolchain"
      resource_group_id = data.ibm_resource_group.group.id
    }
    resource "ibm_cd_toolchain_tool_githubconsolidated" "my-github-tool-integration" {
      toolchain_id = ibm_cd_toolchain.cd_toolchain.id
      initialization {
        git_id = "github"
        repo_url = "https://github.com/my-org/my-repo.git"
        type = "link"
        auth_type = "pat"
        api_token = "<TOKEN>"
      }
      parameters {
        has_issues = true
      }
    }
    

    여기서 <TOKEN> 는 대상 저장소에 대한 액세스 권한을 부여하는 GitHub 계정에 속하는 개인 액세스 토큰 (PAT) 을 나타냅니다.

  3. Terraform CLI를 초기화하십시오.

    terraform init
    
  4. Terraform 실행 플랜을 작성하십시오. 이 계획은 DevOps Insights 도구 통합을 도구 체인에 추가하기 위해 실행해야 하는 모든 조치를 요약합니다.

    terraform plan
    
  5. Terraform 실행 계획을 적용합니다. Terraform은 DevOps Insights 도구 통합을 도구 체인에 추가하는 데 필요한 모든 조치를 수행합니다.

    terraform apply
    

구성할 수 있는 추가 매개변수를 포함하여 각 Git 도구 통합 리소스에 대한 자세한 정보는 Terraform 레지스트리 문서에서 인수 참조 세부사항을 참조하십시오.

Continuous Delivery에서 Terraform 사용에 대한 자세한 정보는 Continuous Delivery에 대한 Terraform 설정 을 참조하십시오.