작업 간 컴퓨팅 공유 - 아마존 CodeCatalyst

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

작업 간 컴퓨팅 공유

기본적으로 워크플로의 작업은 플릿의 개별 인스턴스에서 실행됩니다. 이 동작은 입력 상태를 격리하고 예측할 수 있는 액션을 제공합니다. 기본 동작을 사용하려면 작업 간에 파일 및 변수와 같은 컨텍스트를 공유하도록 명시적으로 구성해야 합니다.

컴퓨팅 공유는 동일한 인스턴스의 워크플로우 내에서 모든 작업을 실행할 수 있는 기능입니다. 컴퓨팅 공유를 사용하면 인스턴스를 프로비저닝하는 데 소요되는 시간이 줄어들기 때문에 워크플로 런타임이 더 빨라질 수 있습니다. 또한 추가 워크플로를 구성하지 않고도 작업 간에 파일 (아티팩트) 을 공유할 수 있습니다.

컴퓨팅 공유를 사용하여 워크플로를 실행하면 기본 또는 지정된 플릿의 인스턴스가 해당 워크플로의 모든 작업 기간 동안 예약됩니다. 워크플로 실행이 완료되면 인스턴스 예약이 해제됩니다.

공유 컴퓨팅에서 여러 작업 실행

워크플로 수준에서 YAML 정의의 Compute 속성을 사용하여 작업의 플릿 및 컴퓨팅 공유 속성을 모두 지정할 수 있습니다. 에서 시각적 편집기를 사용하여 컴퓨팅 속성을 구성할 수도 있습니다 CodeCatalyst. 플릿을 지정하려면 기존 플릿의 이름을 설정하고 컴퓨팅 유형을 EC2로 설정한 다음 컴퓨팅 공유를 켜십시오.

참고

컴퓨팅 공유는 컴퓨팅 유형이 EC2로 설정된 경우에만 지원되며 Windows Server 2022 운영 체제에서는 지원되지 않습니다. 컴퓨팅 플릿, 컴퓨팅 유형 및 속성에 대한 자세한 내용은 을 참조하십시오. 워크플로를 위한 컴퓨팅 및 런타임 환경 Docker 이미지 구성

참고

프리 티어를 사용 중이고 워크플로 정의 YAML에서 Linux.x86-64.XLarge 또는 Linux.x86-64.2XLarge 플릿을 수동으로 지정하는 경우에도 작업은 기본 플릿 () Linux.x86-64.Large 에서 계속 실행됩니다. 컴퓨팅 가용성 및 요금에 대한 자세한 내용은 티어 옵션 표를 참조하십시오.

컴퓨팅 공유를 켜면 워크플로 소스가 들어 있는 폴더가 작업 전체에 자동으로 복사됩니다. 출력 아티팩트를 구성하고 워크플로 정의 (YAML 파일) 전체에서 입력 아티팩트로 참조할 필요가 없습니다. 워크플로 작성자는 컴퓨팅 공유를 사용하지 않는 것과 마찬가지로 입력과 출력을 사용하여 환경 변수를 연결해야 합니다. 워크플로 소스 외부의 작업 간에 폴더를 공유하려면 파일 캐싱을 고려해 보세요. 자세한 내용은 아티팩트를 사용하여 워크플로의 작업 간 데이터 공유워크플로우 실행 간 파일 캐싱 섹션을 참조하세요.

워크플로 정의 파일이 있는 소스 저장소는 레이블로 식별됩니다. WorkflowSource 컴퓨팅 공유를 사용하는 동안 워크플로 원본은 이를 참조하는 첫 번째 작업에서 다운로드되며, 실행 중인 워크플로의 후속 작업에 자동으로 제공됩니다. 파일 추가, 수정 또는 제거와 같은 작업을 통해 워크플로 소스가 포함된 폴더를 변경한 내용은 워크플로의 후속 작업에서도 확인할 수 있습니다. 컴퓨팅 공유를 사용하지 않는 것처럼 모든 워크플로 작업에서 워크플로 소스 폴더에 있는 파일을 참조할 수 있습니다. 자세한 정보는 소스 리포지토리의 파일 참조을 참조하세요.

참고

컴퓨팅 공유 워크플로는 엄격한 작업 순서를 지정해야 하므로 병렬 작업을 설정할 수 없습니다. 시퀀스의 모든 작업에서 출력 아티팩트를 구성할 수 있지만 입력 아티팩트는 지원되지 않습니다.

컴퓨팅 공유 고려 사항

컴퓨팅 공유로 워크플로를 실행하여 워크플로 실행을 가속화하고 동일한 인스턴스를 사용하는 워크플로의 작업 간에 컨텍스트를 공유할 수 있습니다. 다음 사항을 고려하여 컴퓨팅 공유를 사용하는 것이 시나리오에 적합한지 결정하십시오.

컴퓨팅 공유 컴퓨팅 공유 없음

컴퓨팅 유형

Amazon EC2

아마존 EC2, AWS Lambda

인스턴스 프로비저닝

작업은 동일한 인스턴스에서 실행됩니다.

작업은 별도의 인스턴스에서 실행됩니다.

운영 체제

Amazon Linux 2

아마존 리눅스 2, 윈도우 서버 2022 (빌드 액션 전용)

참조 파일

$CATALYST_SOURCE_DIR_WorkflowSource, /sources/WorkflowSource/

$CATALYST_SOURCE_DIR_WorkflowSource, /sources/WorkflowSource/

워크플루 구조

액션은 순차적으로만 실행할 수 있습니다.

동작은 병렬로 실행될 수 있음

워크플로우 작업 전반의 데이터 액세스

캐시된 워크플로 소스 액세스 () WorkflowSource

공유 아티팩트의 출력에 액세스 (추가 구성 필요)

컴퓨팅 공유 켜기

워크플로우에 컴퓨팅 공유를 켜려면 다음 지침을 따르십시오.

Visual
비주얼 에디터를 사용하여 컴퓨팅 공유를 켜려면
  1. https://codecatalyst.aws/ 에서 CodeCatalyst 콘솔을 엽니다.

  2. 프로젝트를 선택합니다.

  3. 탐색 창에서 CI/CD를 선택한 다음 워크플로를 선택합니다.

  4. 워크플로의 이름을 선택합니다.

  5. 편집을 선택합니다.

  6. 비주얼을 선택합니다.

  7. 워크플로우 속성을 선택합니다.

  8. 컴퓨팅 유형 드롭다운 메뉴에서 EC2를 선택합니다.

  9. (선택 사항) Compute Fleet - 옵션 드롭다운 메뉴에서 워크플로 작업을 실행하는 데 사용할 플릿을 선택합니다. 온디맨드 플릿을 선택하거나 프로비저닝된 플릿을 생성하여 선택할 수 있습니다. 자세한 내용은 프로비저닝된 플릿 생성작업에 프로비저닝된 플릿 또는 온디맨드 컴퓨팅 할당 섹션을 참조하세요.

  10. 토글을 전환하여 컴퓨팅 공유를 켜면 워크플로의 작업이 동일한 플릿에서 실행되도록 할 수 있습니다.

  11. (선택 사항) 워크플로의 실행 모드를 선택합니다. 자세한 정보는 실행의 대기열 동작 구성을 참조하세요.

  12. [Commit] 을 선택하고 커밋 메시지를 입력한 다음 [Commit] 을 다시 선택합니다.

YAML
YAML 편집기를 사용하여 컴퓨팅 공유를 켜려면
  1. https://codecatalyst.aws/ 에서 CodeCatalyst 콘솔을 엽니다.

  2. 프로젝트를 선택합니다.

  3. 탐색 창에서 CI/CD를 선택한 다음 워크플로를 선택합니다.

  4. 워크플로의 이름을 선택합니다.

  5. 편집을 선택합니다.

  6. YAML을 선택합니다.

  7. SharedInstance필드를 '로/'로 설정하여 컴퓨팅 공유를 TRUE Type 활성화합니다EC2. 워크플로 작업을 실행하는 데 사용할 컴퓨팅 플릿으로 설정합니다Fleet. 온디맨드 플릿을 선택하거나 프로비저닝된 플릿을 생성하여 선택할 수 있습니다. 자세한 내용은 프로비저닝된 플릿 생성작업에 프로비저닝된 플릿 또는 온디맨드 컴퓨팅 할당 섹션을 참조하세요.

    워크플로 YAML에서 다음과 비슷한 코드를 추가합니다.

    Name: MyWorkflow SchemaVersion: "1.0" Compute: # Define compute configuration. Type: EC2 Fleet: MyFleet # Optionally, choose an on-demand or provisioned fleet. SharedInstance: true # Turn on compute sharing. Default is False. Actions: BuildFirst: Identifier: aws/build@v1 Inputs: Sources: - WorkflowSource Configuration: Steps: - Run: ... ...
  8. (선택 사항) [Validate] 를 선택하여 커밋하기 전에 워크플로의 YAML 코드를 검증합니다.

  9. [Commit] 을 선택하고 커밋 메시지를 입력한 다음 [Commit] 을 다시 선택합니다.

예제

예: 아마존 S3 퍼블리시

다음 워크플로 예제는 Amazon Amazon S3 Publish 작업을 두 가지 방법, 즉 입력 아티팩트를 사용한 다음 컴퓨팅 공유를 사용하는 방법을 보여줍니다. 컴퓨팅 공유를 사용하면 캐시된 아티팩트에 액세스할 수 있으므로 입력 아티팩트가 필요하지 않습니다. WorkflowSource 또한 Build 작업의 출력 아티팩트는 더 이상 필요하지 않습니다. S3 Publish 작업은 명시적 DependsOn 속성을 사용하여 순차적 작업을 유지하도록 구성되어 있습니다. S3 Publish 작업을 실행하려면 빌드 작업이 성공적으로 실행되어야 합니다.

  • 컴퓨팅 공유를 사용하지 않는 경우 입력 아티팩트를 사용하고 출력을 후속 작업과 공유해야 합니다.

    Name: S3PublishUsingInputArtifact SchemaVersion: "1.0" Actions: Build: Identifier: aws/build@v1 Outputs: Artifacts: - Name: ArtifactToPublish Files: [output.zip] Inputs: Sources: - WorkflowSource Configuration: Steps: - Run: ./build.sh # Build script that generates output.zip PublishToS3: Identifier: aws/s3-publish@v1 Inputs: Artifacts: - ArtifactToPublish Environment: Connections: - Role: codecatalyst-deployment-role Name: dev-deployment-role Name: dev-connection Configuration: SourcePath: output.zip DestinationBucketName: dev-bucket
  • SharedInstance 설정하여 TRUE 컴퓨팅 공유를 사용하는 경우 단일 워크플로 소스를 지정하여 동일한 인스턴스에서 여러 작업을 실행하고 아티팩트를 공유할 수 있습니다. 입력 아티팩트는 필수가 아니며 지정할 수도 없습니다.

    Name: S3PublishUsingComputeSharing SchemaVersion: "1.0" Compute: Type: EC2 Fleet: dev-fleet SharedInstance: TRUE Actions: Build: Identifier: aws/build@v1 Inputs: Sources: - WorkflowSource Configuration: Steps: - Run: ./build.sh # Build script that generates output.zip PublishToS3: Identifier: aws/s3-publish@v1 DependsOn: - Build Environment: Connections: - Role: codecatalyst-deployment-role Name: dev-deployment-role Name: dev-connection Configuration: SourcePath: output.zip DestinationBucketName: dev-bucket