Infograb logo
GitLab CI

이 문서는 GitLab CI와 Machine ID에 대한 참고 자료로 작용합니다. GitLab 참여 방법을 사용할 때 사용할 수 있는 구성 옵션에 대한 전체 설명과 심층 가이드를 링크로 찾아볼 수 있습니다.

가이드

Machine ID와 GitLab CI 사용에 대한 단계별 가이드를 읽어보세요:

GitLab 참여 토큰

GitLab 참여 토큰은 Teleport 클러스터에 참여할 수 있는 파이프라인을 설명하는 허용 규칙을 포함합니다. 규칙은 여러 필드를 포함할 수 있으며, 단일 규칙 내의 모든 필드와 일치하는 파이프라인은 접근 권한을 부여받습니다.

kind: token
version: v2
metadata:
  # 이 토큰을 식별하는 이름입니다. 봇이나 노드가 이 토큰을 사용하여 조인하도록 구성할 때
  # 이 이름을 지정해야 합니다.
  name: gitlab-demo
spec:
  # Bot 역할은 이 토큰이 봇 사용자에 대한 접근을 부여하며,
  # 노드가 조인하는 것을 허용하지 않음을 나타냅니다.
  roles: [Bot]
  # GitLab 조인을 위한 join_method는 항상 "gitlab"입니다.
  join_method: gitlab

  # bot_name은 이 토큰을 사용할 때 접근을 부여할 봇의 이름을 지정합니다.
  bot_name: gitlab-demo

  gitlab:
    # domain은 GitLab 인스턴스의 도메인이어야 합니다. 
    # GitLab의 클라우드 호스팅 제공을 사용하는 경우 이 필드를 완전히 생략하세요.
    domain: gitlab.example.com
    # allow는 GitLab CI 작업이 조인할 수 있는 규칙 구성을 위한 배열입니다.
    # 하나의 allow 항목 내에서 구성된 모든 옵션이 만족되어야
    # GitLab CI 실행이 조인할 수 있습니다. 여러 allow 항목이 지정된 경우
    # 단일 항목 내의 모든 옵션을 만족하는 작업은 조인할 수 있습니다.
    #
    # allow 항목에는 최소 한 개의 항목이 포함되어야 합니다:
    # - project_path
    # - namespace_path
    # - sub
    # 이는 다른 GitLab 사용자의 프로젝트에서 GitLab CI 실행이 
    # Teleport 클러스터에 접근하지 못하도록 합니다.
    allow:
      # project_path는 지정된 프로젝트 내에서 시작된 작업만 
      # 조인하도록 제한합니다.
      #
      # 이 필드는 glob 스타일의 매칭을 지원합니다:
      # - '*'를 사용하여 0개 이상의 문자를 매칭합니다.
      # - '?'를 사용하여 단일 문자를 매칭합니다.
      - project_path: my-user/my-project
        # namespace_path는 지정된 네임스페이스 내에 존재하는 
        # 프로젝트 내의 모든 실행으로의 조인을 제한합니다.
        # 네임스페이스는 사용자 이름 또는 그룹 이름일 수 있습니다.
        #
        # 이 필드는 glob 스타일의 매칭을 지원합니다:
        # - '*'를 사용하여 0개 이상의 문자를 매칭합니다.
        # - '?'를 사용하여 단일 문자를 매칭합니다.
        namespace_path: my-user
        # pipeline_source는 특정 기준에 의해 트리거된 작업만 
        # 조인하도록 제한합니다, 예를 들어 웹 인터페이스를 통해 트리거된 경우.
        pipeline_source: web
        # environment는 지정된 환경과 관련된 작업만 
        # 조인하도록 제한합니다.
        environment: production
        # ref_type은 특정 유형의 git 참조에 의해 트리거된 작업만 
        # 조인하도록 제한합니다. 'branch' 또는 'tag' 중 하나입니다.
        ref_type: branch
        # ref는 특정 git 참조에 의해 트리거된 작업만 
        # 조인하도록 제한합니다. 이와 `ref_type`을 결합하여 특정 
        # 브랜치 또는 태그에 의해 트리거될 수 있는 allow 규칙을 
        # 생성합니다.
        #
        # 이 필드는 glob 스타일의 매칭을 지원합니다:
        # - '*'를 사용하여 0개 이상의 문자를 매칭합니다.
        # - '?'를 사용하여 단일 문자를 매칭합니다.
        ref: main
        # sub는 project_path, ref_type 및 ref를 결합한 단일 문자열입니다.
        # 이는 조인을 제한하는 데 사용할 수 있으며,
        # 특정 프로젝트 및 git ref를 설명하는 데도 사용됩니다.
        #
        # 개별 필드를 사용하는 것이 더 좋으며, 
        # sub 문자열을 잘못 포맷하는 것이 쉽기 때문입니다.
        #
        # 이 필드는 glob 스타일의 매칭을 지원합니다:
        # - '*'를 사용하여 0개 이상의 문자를 매칭합니다.
        # - '?'를 사용하여 단일 문자를 매칭합니다.
        sub: project_path:my-user/my-project:ref_type:branch:ref:main
        # user_login은 특정 사용자 이름에 의해 트리거된 작업만 
        # 조인하도록 제한합니다.
        user_login: octocat
        # user_email은 주어진 이메일을 가진 특정 사용자에 의해 
        # 트리거된 작업만 조인하도록 제한합니다.
        user_email: octo.cat@example.com
        # ref_protected가 true로 설정되면 보호된 참조에 대해 
        # 실행되는 작업만 조인하도록 제한합니다.
        # 생략할 경우, 호출된 참조의 보호 상태는 점검되지 않습니다.
        ref_protected: true
        # environment_protected가 true로 설정되면 보호된 참조에 대해 
        # 실행되는 작업만 조인하도록 제한합니다.
        # 생략할 경우, 호출된 참조의 보호 상태는 점검되지 않습니다.
        environment_protected: true
        # ci_config_sha는 특정 CI 구성의 커밋을 사용하는 
        # 작업만 조인하도록 제한합니다.
        ci_config_sha: ffffffffffffffffffffffffffffffffffffffff
        # ci_config_ref_uri는 특정 CI 구성 소스를 사용하는 
        # 작업만 조인하도록 제한합니다.
        ci_config_ref_uri: gitlab.example.com/my-group/my-project//.gitlab-ci.yml@refs/heads/main
        # deployment_tier는 특정 배포 계층에 배포하는 작업만 
        # 조인하도록 제한합니다.
        deployment_tier: production
        # project_visibility는 특정 가시성 구성과 관련된 
        # 프로젝트에서 실행되는 작업만 조인하도록 제한합니다.
        project_visibility: public
Teleport 원문 보기