티스토리 뷰

Matrix

일련의 작업을 병렬로 실행하거나 다양한 구성을 시도하는 데 사용되는 개념

보통 행렬로 나타내어짐

각 행은 다른 구성 또는 환경을 나타내고, 각 열은 해당 환경에서 실행되는 작업을 나타냄.

각 조합에 대해 작업을 실행하고 결과를 수집하여 전체 파이프라인의 효율성과 안정성을 향상 시킴.

name: Matrix practice
on: push
jobs:
  build:
    strategy:
      matrix:
        node-version: [12, 14, 16]
        operating-system: [ubuntu-latest, windows-latest]
        include:
          - node-version: 18
            operating-system: ubuntu-latest
        exclude:
          - node-version: 12
            operating-system: windows-latest
    runs-on: ${{ matrix.operating-system }}
    steps:
      - name: Get Code
        uses: actions/checkout@v3
      - name: Install NodeJS
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install Dependencies
        run: npm ci
      - name: Build project
        run: npm run build

 

Matrix를 사용하기 전에

해당 작업(job)안에strategy(전략)를 먼저 정의해주어야 한다.

    strategy:
      matrix:
        node-version: [12, 14, 16]
        operating-system: [ubuntu-latest, windows-latest]

node-version: [12, 14, 16]

 → 나는 node의 12, 14, 16 버전을 사용하여 소프트웨어를 테스트하고, 호환성을 확인할것 이다.

operating-system: [ubuntu-latest, windows-latest]

 → os종류 ubuntu-latest, windows-latest에서 작업을 실행할것이다.

 

    runs-on: ${{ matrix.operating-system }}

runs-on, 실행 할것인에 어디에서 실행 할것인지 정해주는 부분이다.

strategy의 하위 섹션의 matrix안의 operating-system을 지정하여 unbuntu와 windows모두 실행하도록 한다.

 

        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}

마찬가지로

strategy의 하위 섹션의 matrix안의 node-version을 지정하여 12,14, 16버전 모두 실행하도록 한다.

 

실행 방식은 약간 for문과 비슷하다고 보면 될것 같다.

즉, ubuntu-latest 환경에서 12, 14, 16 노드 버전, windows-latest 환경에서 12, 14, 16 노드 버전을 실행할 것이다. 를 의미한다.

 

 

matrix의 include / exclude

        include:
          - node-version: 18
            operating-system: ubuntu-latest
        exclude:
          - node-version: 12
            operating-system: windows-latest

include

→ 해당하는 버전과 운영체제를 포함시킬 것이다.

exclude

→ 해당하는 버전과 운영체제를 제외 시킬것이다.

12 window는 제외 되었고

18 ubuntu는 추가 되었다.

'Git & Github&배포' 카테고리의 다른 글

[CI/CD] Workflow if문사용하기(Cache)  (0) 2024.03.27
[CI/CD] Workflow Event  (0) 2024.03.21
[CI/CD]GitHub Action  (0) 2024.03.20
git 명령어  (0) 2024.03.19
AWS EC2 배포하기  (0) 2024.01.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함