여러 환경을 위한 매트릭스 빌드
매트릭스 전략을 활용해 여러 언어 버전, 운영 체제 또는 구성을 대상으로 작업을 병렬 실행합니다.
여러 환경을 위한 매트릭스 빌드은(는) CoddyKit의 무료 CI/CD with GitHub Actions & DevOps Pipelines 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 CI/CD with GitHub Actions & DevOps Pipelines 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. CI/CD with GitHub Actions & DevOps Pipelines 강의에는 총 4개의 강의가 포함되어 있습니다.
매트릭스 빌드란 무엇입니까?
GitHub 액션의 강력한 기능인 매트릭스 빌드를 소개합니다! 다양한 운영 체제나 프로그래밍 언어 버전처럼 여러 환경에서 코드를 테스트해야 하는 상황을 생각해 보십시오.
각 조합마다 별도의 워크플로를 만드는 대신, 매트릭스 빌드를 사용하면 변수 집합을 정의할 수 있으며 GitHub 액션이 해당 변수의 가능한 모든 조합에 대해 작업을 자동으로 실행합니다.
매트릭스 빌드를 사용하는 이유
매트릭스 빌드는 다음과 같은 상황에서 매우 유용합니다.
- 플랫폼 간 테스트: 애플리케이션이 Windows, macOS 및 Linux에서 작동하는지 확인합니다.
- 다중 버전 호환성: Node.js, Python 또는 데이터베이스의 다양한 버전을 대상으로 테스트합니다.
- 병렬 실행: 이러한 테스트를 모두 동시에 실행하여 많은 시간을 절약합니다.
매트릭스 빌드를 사용하면 더 폭넓은 테스트 범위를 효율적으로 확보할 수 있습니다.
기본 매트릭스 구문
작업의 strategy 섹션 안에서 매트릭스를 정의합니다. strategy.matrix 안에는 하나 이상의 변수를 나열하며, 각 변수에는 값 배열을 지정합니다.
그러면 GitHub 액션이 각 조합에 대해 작업을 하나씩 생성합니다. 실제 모습을 살펴보겠습니다.
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14, 16, 18]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test예시: 여러 Node.js 버전
이전 코드 조각에서는 node-version 변수에 14, 16, 18이라는 세 가지 값을 정의했습니다.
이 하나의 작업 정의로 세 개의 별도 작업이 실행됩니다. 각 작업은 ubuntu-latest에서 실행되지만 서로 다른 Node.js 버전을 사용합니다. 따라서 프로젝트가 이러한 버전에서 모두 작동하는지 확인할 수 있습니다.
여러 매트릭스 변수 결합
변수 하나만 사용할 필요는 없습니다! 매트릭스에서 여러 변수를 결합할 수 있습니다. 예를 들어 서로 다른 운영 체제에서 서로 다른 Node.js 버전으로 테스트할 수 있습니다.
strategy.matrix 아래에 키-값 쌍을 더 추가하면 됩니다. 전체 작업 수는 각 변수에 지정된 값 개수의 곱입니다.
예시: OS 및 Node.js 매트릭스
다음과 같이 매트릭스를 설정하면 우분투와 Windows 모두에서 Node.js 16 및 18 버전으로 테스트할 수 있습니다.
그러면 2 (OS) * 2 (Node.js 버전) = 4개의 별도 작업이 생성됩니다.
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node-version: [16, 18]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test포함을 사용한 조합 사용자 지정
기본 데카르트 곱으로 다루지 못하는 특정 조합이 필요하거나, 특정 빌드에 추가 변수를 지정하고 싶은 경우가 있습니다. include를 사용하여 매트릭스 항목을 새로 추가하십시오.
예를 들어 우분투에서 Node.js 14를 사용할 때만 추가 테스트를 실행하거나, 특정 운영 체제 및 버전 조합에 특정 환경 변수를 전달할 수 있습니다.
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node-version: [16, 18]
include:
- os: ubuntu-latest
node-version: 14
test-suite: 'full'특정 조합 제외
실패하는 것으로 알려졌거나 프로젝트와 관련이 없는 조합이 있다면 어떻게 해야 할까요? exclude 키워드를 사용하면 매트릭스에서 특정 구성을 제거할 수 있습니다.
이를 통해 불필요한 작업 실행을 피하고 관련 테스트 사례에 집중할 수 있습니다.
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node-version: [16, 18, 20]
exclude:
- os: windows-latest
node-version: 16매트릭스 변수에 접근하기
작업 단계 안에서는 ${{ matrix.variable_name }} 구문을 사용하여 현재 매트릭스 변수 값에 접근할 수 있습니다. 이는 각 매트릭스 조합에 맞는 도구를 구성하거나 명령을 실행할 때 필수적입니다.
예를 들어 ${{ matrix.os }}는 실행기의 운영 체제를 동적으로 설정하고, ${{ matrix.node-version }}은 Node.js 설정 액션을 구성합니다.
실제 적용 사례
매트릭스 빌드는 다음과 같은 경우에 유용합니다.
- 라이브러리 개발: 종속성의 여러 버전을 대상으로 테스트합니다.
- 다중 언어 프로젝트: 서로 다른 언어나 컴파일러로 작성된 구성 요소를 빌드하거나 테스트합니다.
- 브라우저 호환성: 지원하는 도구를 사용하는 경우 여러 브라우저에서 웹 앱을 테스트합니다.
복잡한 테스트 시나리오를 간결하고 유지 관리하기 쉬운 워크플로로 간소화할 수 있습니다.
매트릭스 빌드 도전 과제
매트릭스 전략을 사용하는 GitHub 액션 워크플로를 생각해 보십시오. 매트릭스는 다음과 같이 정의되어 있습니다.
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
python-version: [3.8, 3.9]
exclude:
- os: macos-latest
python-version: 3.8
이 매트릭스 구성으로 몇 개의 작업이 생성됩니까?
복습: 매트릭스 빌드
잘하셨습니다! GitHub 액션의 매트릭스 빌드에 대해 학습하셨습니다.
- 변수의 여러 조합(OS, 언어 버전 등)에 대해 작업을 실행할 수 있습니다.
- 작업 안에서
strategy.matrix를 사용하여 정의합니다. include는 특정 조합을 추가하고,exclude는 해당 조합을 제거합니다.${{ matrix.variable_name }}을 통해 변수에 접근합니다.
매트릭스 빌드는 다양한 환경에서 효율적이고 포괄적인 테스트를 수행하는 데 필수적입니다. 계속 연습하여 완전히 익혀 보십시오!
자주 묻는 질문
“여러 환경을 위한 매트릭스 빌드” 강의는 무료인가요?
네 — “여러 환경을 위한 매트릭스 빌드” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 CI/CD with GitHub Actions & DevOps Pipelines 강의 전체를 잠금 해제할 수 있습니다. CI/CD with GitHub Actions & DevOps Pipelines 강의에는 총 4개의 강의가 포함되어 있습니다.
“여러 환경을 위한 매트릭스 빌드”에서 뭘 배우나요?
매트릭스 전략을 활용해 여러 언어 버전, 운영 체제 또는 구성을 대상으로 작업을 병렬 실행합니다. 브라우저에서 직접 실행하는 실습 코드로 CI/CD with GitHub Actions & DevOps Pipelines을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
CI/CD with GitHub Actions & DevOps Pipelines을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 CI/CD with GitHub Actions & DevOps Pipelines은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“여러 환경을 위한 매트릭스 빌드” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 CI/CD with GitHub Actions & DevOps Pipelines 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 CI/CD with GitHub Actions & DevOps Pipelines 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 여러 환경을 위한 매트릭스 빌드
- 속도 향상을 위한 종속 항목 캐싱
- 재사용 가능한 워크플로 및 Actions
- 조건부 실행 및 작업 의존성