About matrix strategies
๋งคํธ๋ฆญ์ค ์ ๋ต์ ์ฌ์ฉํ๋ฉด ๋จ์ผ ์์ ์ ์์์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์์ ์กฐํฉ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ฌ๋ฌ ์์ ์คํ์ ์๋์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋งคํธ๋ฆญ์ค ์ ๋ต์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ฒ์ ์ ์ธ์ด ๋๋ ์ฌ๋ฌ ์ด์ ์ฒด์ ์์ ์ฝ๋๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค.
Using a matrix strategy
jobs.<job_id>.strategy.matrix
๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์์
๊ตฌ์ฑ ํ๋ ฌ์ ์ ์ํฉ๋๋ค. ํ๋ ฌ ๋ด์์ ํ๋ ์ด์์ ๋ณ์์ ๊ฐ ๋ฐฐ์ด์ ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ํ๋ ฌ์๋ ๊ฐ [10, 12, 14]
์ version
๋ณ์์ ๊ฐ [ubuntu-latest, windows-latest]
์ os
๋ณ์๊ฐ ์์ต๋๋ค.
jobs:
example_matrix:
strategy:
matrix:
version: [10, 12, 14]
os: [ubuntu-latest, windows-latest]
๊ฐ๋ฅํ ๊ฐ ๋ณ์ ์กฐํฉ์ ๋ํด ์์
์ด ์คํ๋ฉ๋๋ค. ์ด ์์ ์์ ์ํฌํ๋ก๋ os
๋ฐ version
๋ณ์์ ๊ฐ ์กฐํฉ์ ๋ํด ํ๋์ฉ 6๊ฐ์ ์์
์ ์คํํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก GitHub์ ์คํ๊ธฐ ๊ฐ์ฉ์ฑ์ ๋ฐ๋ผ ๋ณ๋ ฌ๋ก ์คํ๋๋ ์์ ์๋ฅผ ์ต๋ํํฉ๋๋ค. ํ๋ ฌ์ ๋ณ์ ์์์ ๋ฐ๋ผ ์์ ์ด ์์ฑ๋๋ ์์๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค. ์ ์ํ ์ฒซ ๋ฒ์งธ ๋ณ์๋ ์ํฌํ๋ก ์คํ์์ ๋ง๋ ์ฒซ ๋ฒ์งธ ์์ ์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ ํ๋ ฌ์ ๋ค์ ์์๋ก ์์ ์ ๋ง๋ญ๋๋ค.
{version: 10, os: ubuntu-latest}
{version: 10, os: windows-latest}
{version: 12, os: ubuntu-latest}
{version: 12, os: windows-latest}
{version: 14, os: ubuntu-latest}
{version: 14, os: windows-latest}
ํ๋ ฌ์ ์ํฌํ๋ก ์คํ๋น ์ต๋ 256๊ฐ์ ์์ ์ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ์ ํ์ GitHub ํธ์คํ ๋ฐ ์์ฒด ํธ์คํ ์คํ๊ธฐ ๋ ๋ค์ ์ ์ฉ๋ฉ๋๋ค.
์ ์ํ๋ ๋ณ์๋ matrix
์ปจํ
์คํธ์ ์์ฑ์ด ๋๋ฉฐ ์ํฌํ๋ก ํ์ผ์ ๋ค๋ฅธ ์์ญ์์ ์์ฑ์ ์ฐธ์กฐํ ์ ์์ต๋๋ค. ์ด ์์ ์์๋ matrix.version
๋ฐ matrix.os
๋ฅผ ์ฌ์ฉํ์ฌ ์์
์์ ์ฌ์ฉ ์ค์ธ version
๋ฐ os
์ ํ์ฌ ๊ฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ "Accessing contextual information about workflow runs"์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
Example: Using a single-dimension matrix
๋จ์ผ ๋ณ์๋ฅผ ์ง์ ํ์ฌ ๋จ์ผ ์ฐจ์ ํ๋ ฌ์ ๋ง๋ค ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์ ์ํฌํ๋ก๋ ๊ฐ [10, 12, 14]
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์ version
์ ์ ์ํฉ๋๋ค. ์ํฌํ๋ก๋ ๋ณ์์ ๊ฐ ๊ฐ์ ๋ํด ํ๋์ฉ 3๊ฐ์ ์์
์ ์คํํฉ๋๋ค. ๊ฐ ์์
์ matrix.version
์ปจํ
์คํธ๋ฅผ ํตํด version
๊ฐ์ ์ก์ธ์คํ๊ณ ํด๋น ๊ฐ์ actions/setup-node
์์
์ node-version
์ผ๋ก ์ ๋ฌํฉ๋๋ค.
jobs:
example_matrix:
strategy:
matrix:
version: [10, 12, 14]
steps:
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.version }}
Example: Using a multi-dimension matrix
์ฌ๋ฌ ๋ณ์๋ฅผ ์ง์ ํ์ฌ ๋ค์ฐจ์ ๋งคํธ๋ฆญ์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๊ฐ๋ฅํ ๊ฐ ๋ณ์ ์กฐํฉ์ ๋ํด ์์ ์ด ์คํ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์ ์ํฌํ๋ก๋ ๋ ๊ฐ์ ๋ณ์๋ฅผ ์ง์ ํฉ๋๋ค.
os
๋ณ์์ ์ง์ ๋ ์ด์ ์ฒด์ 2๊ฐversion
๋ณ์์ ์ง์ ๋ Node.js ๋ฒ์ 3๊ฐ
์ํฌํ๋ก๋ os
๋ฐ version
๋ณ์์ ๊ฐ ์กฐํฉ์ ๋ํด ํ๋์ฉ 6๊ฐ์ ์์
์ ์คํํฉ๋๋ค. ๊ฐ ์์
์ runs-on
๊ฐ์ ํ์ฌ os
๊ฐ์ผ๋ก ์ค์ ํ๊ณ ํ์ฌ version
๊ฐ์ actions/setup-node
์์
์ ์ ๋ฌํฉ๋๋ค.
jobs:
example_matrix:
strategy:
matrix:
os: [ubuntu-22.04, ubuntu-20.04]
version: [10, 12, 14]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.version }}
๋งคํธ๋ฆญ์ค์ ๋ณ์ ๊ตฌ์ฑ์ object
์ array
์ผ ์ ์์ต๋๋ค.
matrix:
os:
- ubuntu-latest
- macos-latest
node:
- version: 14
- version: 20
env: NODE_OPTIONS=--openssl-legacy-provider
์ด ๋งคํธ๋ฆญ์ค๋ ํด๋น ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ 4๊ฐ์ ์์ ์ ์์ฑํฉ๋๋ค.
- matrix.os: ubuntu-latest
matrix.node.version: 14
- matrix.os: ubuntu-latest
matrix.node.version: 20
matrix.node.env: NODE_OPTIONS=--openssl-legacy-provider
- matrix.os: macos-latest
matrix.node.version: 14
- matrix.os: macos-latest
matrix.node.version: 20
matrix.node.env: NODE_OPTIONS=--openssl-legacy-provider
Example: Using contexts to create matrices
์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋งคํธ๋ฆญ์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ปจํ ์คํธ์ ๋ํ ์์ธํ ๋ด์ฉ์ "Accessing contextual information about workflow runs"๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋ฅผ ๋ค์ด ๋ค์ ์ํฌํ๋ก๋ repository_dispatch
์ด๋ฒคํธ์์ ํธ๋ฆฌ๊ฑฐํ๊ณ ์ด๋ฒคํธ ํ์ด๋ก๋์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ๋งคํธ๋ฆญ์ค๋ฅผ ๋น๋ํฉ๋๋ค. ์๋์ ๊ฐ์ ํ์ด๋ก๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ ๋์คํจ์น ์ด๋ฒคํธ๋ฅผ ๋ง๋ค๋ฉด ๋งคํธ๋ฆญ์ค version
๋ณ์๊ฐ [12, 14, 16]
๊ฐ์ ๊ฐ์ต๋๋ค. repository_dispatch
ํธ๋ฆฌ๊ฑฐ์ ๋ํ ์์ธํ ๋ด์ฉ์ "์ํฌํ๋ก๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ์ด๋ฒคํธ"์ ์ฐธ์กฐํ์ธ์.
{
"event_type": "test",
"client_payload": {
"versions": [12, 14, 16]
}
}
on:
repository_dispatch:
types:
- test
jobs:
example_matrix:
runs-on: ubuntu-latest
strategy:
matrix:
version: ${{ github.event.client_payload.versions }}
steps:
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.version }}
Expanding or adding matrix configurations
jobs.<job_id>.strategy.matrix.include
๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ํ๋ ฌ ๊ตฌ์ฑ์ ํ์ฅํ๊ฑฐ๋ ์ ๊ตฌ์ฑ์ ์ถ๊ฐํฉ๋๋ค. include
๊ฐ์ ๊ฐ์ฒด ๋ชฉ๋ก์
๋๋ค.
include
๋ชฉ๋ก์ ๊ฐ ๊ฐ์ฒด์์ ํค:๊ฐ ์์ด ์๋ ํ๋ ฌ ๊ฐ์ ๋ฎ์ด์ฐ์ง ์์ผ๋ฉด ๊ฐ์ฒด์ ํค:๊ฐ ์์ด ๊ฐ ํ๋ ฌ ์กฐํฉ์ ์ถ๊ฐ๋ฉ๋๋ค. ๊ฐ์ฒด๋ฅผ ํ๋ ฌ ์กฐํฉ์ ์ถ๊ฐํ ์ ์๋ ๊ฒฝ์ฐ ๋์ ์ ํ๋ ฌ ์กฐํฉ์ด ๋ง๋ค์ด์ง๋๋ค. ์๋ ํ๋ ฌ ๊ฐ์ ๋ฎ์ด์ฐ๋ ๊ฒ์ด ์๋๋ผ ์ถ๊ฐ๋ ํ๋ ฌ ๊ฐ์ ๋ฎ์ด์ธ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ด ํ๋ ฌ์
strategy:
matrix:
fruit: [apple, pear]
animal: [cat, dog]
include:
- color: green
- color: pink
animal: cat
- fruit: apple
shape: circle
- fruit: banana
- fruit: banana
animal: cat
๋ค์ ํ๋ ฌ ์กฐํฉ์ ์ฌ์ฉํ์ฌ 6๊ฐ ์์ ์ ์์ฑํฉ๋๋ค.
{fruit: apple, animal: cat, color: pink, shape: circle}
{fruit: apple, animal: dog, color: green, shape: circle}
{fruit: pear, animal: cat, color: pink}
{fruit: pear, animal: dog, color: green}
{fruit: banana}
{fruit: banana, animal: cat}
์ด๋ ๋ค์ ๋ ผ๋ฆฌ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
{color: green}
๋ ์๋ ์กฐํฉ์ ์ผ๋ถ๋ฅผ ๋ฎ์ด์ฐ์ง ์๊ณ ์ถ๊ฐ๋ ์ ์์ผ๋ฏ๋ก ๋ชจ๋ ์๋ ํ๋ ฌ ์กฐํฉ์ ์ถ๊ฐ๋ฉ๋๋ค.{color: pink, animal: cat}
๋animal: cat
์ ํฌํจํ๋ ์๋ ํ๋ ฌ ์กฐํฉ์๋งcolor:pink
์ ์ถ๊ฐํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ด์ include
ํญ๋ชฉ์ด ์ถ๊ฐํcolor: green
์ ๋ฎ์ด์๋๋ค.{fruit: apple, shape: circle}
๋fruit: apple
์ ํฌํจํ๋ ์๋ ํ๋ ฌ ์กฐํฉ์๋งshape: circle
์ ์ถ๊ฐํฉ๋๋ค.{fruit: banana}
๋ ๊ฐ์ ๋ฎ์ด์ฐ์ง ์๊ณ ๋ ์๋ ํ๋ ฌ ์กฐํฉ์ ์ถ๊ฐ๋ ์ ์์ผ๋ฏ๋ก ์ถ๊ฐ ํ๋ ฌ ์กฐํฉ์ผ๋ก ์ถ๊ฐ๋ฉ๋๋ค.{fruit: banana, animal: cat}
๋ ๊ฐ์ ๋ฎ์ด์ฐ์ง ์๊ณ ๋ ์๋ ํ๋ ฌ ์กฐํฉ์ ์ถ๊ฐ๋ ์ ์์ผ๋ฏ๋ก ์ถ๊ฐ ํ๋ ฌ ์กฐํฉ์ผ๋ก ์ถ๊ฐ๋ฉ๋๋ค.{fruit: banana}
ํ๋ ฌ ์กฐํฉ์ ์๋ ํ๋ ฌ ์กฐํฉ ์ค ํ๋๊ฐ ์๋์๊ธฐ ๋๋ฌธ์ ํด๋น ์กฐํฉ์ ์ถ๊ฐํ์ง ์์ต๋๋ค.
Example: Expanding configurations
์๋ฅผ ๋ค์ด, ๋ค์ ์ํฌํ๋ก๋ os
๋ฐ node
์ ๊ฐ ์กฐํฉ์ ๋ํด ํ๋์ฉ 4๊ฐ์ ์์
์ ์คํํฉ๋๋ค. windows-latest
์ os
๊ฐ๊ณผ 16
์ node
๊ฐ์ ๋ํ ์์
์ด ์คํ๋๋ฉด 6
๊ฐ์ ์ฌ์ฉํ๋ npm
์ด๋ผ๋ ์ถ๊ฐ ๋ณ์๊ฐ ์์
์ ํฌํจ๋ฉ๋๋ค.
jobs:
example_matrix:
strategy:
matrix:
os: [windows-latest, ubuntu-latest]
node: [14, 16]
include:
- os: windows-latest
node: 16
npm: 6
runs-on: ${{ matrix.os }}
steps:
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- if: ${{ matrix.npm }}
run: npm install -g npm@${{ matrix.npm }}
- run: npm --version
Example: Adding configurations
์๋ฅผ ๋ค์ด ์ด ๋งคํธ๋ฆญ์ค๋ ๋งคํธ๋ฆญ์ค์ os
๋ฐ version
๊ฐ ์กฐํฉ์ ๋ํด ํ๋์ฉ 10๊ฐ์ ์์
๊ณผ windows-latest
์ os
๊ฐ๊ณผ 17
์ version
๊ฐ์ ๋ํ ์์
์ ์คํํฉ๋๋ค.
jobs:
example_matrix:
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
version: [12, 14, 16]
include:
- os: windows-latest
version: 17
๋งคํธ๋ฆญ์ค ๋ณ์๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด include
์๋์ ๋ชจ๋ ๊ตฌ์ฑ์ด ์คํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ์ํฌํ๋ก๋ ๊ฐ include
ํญ๋ชฉ์ ๋ํด ํ๋์ฉ ๋ ๊ฐ์ ์์
์ ์คํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์์ ํ ์ฑ์์ง ๋งคํธ๋ฆญ์ค ์์ด ๋งคํธ๋ฆญ์ค ์ ๋ต์ ํ์ฉํ ์ ์์ต๋๋ค.
jobs:
includes_only:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- site: "production"
datacenter: "site-a"
- site: "staging"
datacenter: "site-b"
Excluding matrix configurations
๋งคํธ๋ฆญ์ค์ ์ ์๋ ํน์ ๊ตฌ์ฑ์ ์ ๊ฑฐํ๋ ค๋ฉด jobs.<job_id>.strategy.matrix.exclude
๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ ์ธ๋ ๊ตฌ์ฑ์ ์ ์ธ๋๋ ค๋ฉด ๋ถ๋ถ ์ผ์น์ฌ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ์ํฌํ๋ก๋ 9๊ฐ์ ์์
์ ์คํํฉ๋๋ค. 12๊ฐ ๊ตฌ์ฑ ๊ฐ๊ฐ์ ๋ํด ํ๋์ ์์
์์ {os: macos-latest, version: 12, environment: production}
๊ณผ ์ผ์นํ๋ ์ ์ธ๋ ์์
ํ๋์ {os: windows-latest, version: 16}
๊ณผ ์ผ์นํ๋ ์ ์ธ๋ ์์
2๊ฐ๋ฅผ ๋บ ๊ฐ์
๋๋ค.
strategy:
matrix:
os: [macos-latest, windows-latest]
version: [12, 14, 16]
environment: [staging, production]
exclude:
- os: macos-latest
version: 12
environment: production
- os: windows-latest
version: 16
runs-on: ${{ matrix.os }}
์ฐธ๊ณ : ๋ชจ๋ include
์กฐํฉ์ exclude
๋ค์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. include
๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ์ ์ ์ธ๋ ์กฐํฉ์ ๋ค์ ์ถ๊ฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Example: Using an output to define two matrices
ํ ์์ ์ ์ถ๋ ฅ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์์ ์ ๋ํ ํ๋ ฌ์ ์ ์ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์ ์ํฌํ๋ก๋ ํ ์์ ์์ ๊ฐ ํ๋ ฌ์ ์ ์ํ๊ณ , ๋ ๋ฒ์งธ ์์ ์์ ํด๋น ํ๋ ฌ์ ์ฌ์ฉํ์ฌ ์ํฐํฉํธ๋ฅผ ์์ฑํ ๋ค์, ์ธ ๋ฒ์งธ ์์ ์์ ํด๋น ์ํฐํฉํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ์ค๋๋ค. ๊ฐ ์ํฐํฉํธ๊ฐ ํ๋ ฌ์ ๊ฐ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค.
name: shared matrix on: push: workflow_dispatch: jobs: define-matrix: runs-on: ubuntu-latest outputs: colors: ${{ steps.colors.outputs.colors }} steps: - name: Define Colors id: colors run: | echo 'colors=["red", "green", "blue"]' >> "$GITHUB_OUTPUT" produce-artifacts: runs-on: ubuntu-latest needs: define-matrix strategy: matrix: color: ${{ fromJSON(needs.define-matrix.outputs.colors) }} steps: - name: Define Color env: color: ${{ matrix.color }} run: | echo "$color" > color - name: Produce Artifact uses: actions/upload-artifact@v4 with: name: ${{ matrix.color }} path: color consume-artifacts: runs-on: ubuntu-latest needs: - define-matrix - produce-artifacts strategy: matrix: color: ${{ fromJSON(needs.define-matrix.outputs.colors) }} steps: - name: Retrieve Artifact uses: actions/download-artifact@v4 with: name: ${{ matrix.color }} - name: Report Color run: | cat color
name: shared matrix
on:
push:
workflow_dispatch:
jobs:
define-matrix:
runs-on: ubuntu-latest
outputs:
colors: ${{ steps.colors.outputs.colors }}
steps:
- name: Define Colors
id: colors
run: |
echo 'colors=["red", "green", "blue"]' >> "$GITHUB_OUTPUT"
produce-artifacts:
runs-on: ubuntu-latest
needs: define-matrix
strategy:
matrix:
color: ${{ fromJSON(needs.define-matrix.outputs.colors) }}
steps:
- name: Define Color
env:
color: ${{ matrix.color }}
run: |
echo "$color" > color
- name: Produce Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.color }}
path: color
consume-artifacts:
runs-on: ubuntu-latest
needs:
- define-matrix
- produce-artifacts
strategy:
matrix:
color: ${{ fromJSON(needs.define-matrix.outputs.colors) }}
steps:
- name: Retrieve Artifact
uses: actions/download-artifact@v4
with:
name: ${{ matrix.color }}
- name: Report Color
run: |
cat color
Handling failures
jobs.<job_id>.strategy.fail-fast
๋ฐ jobs.<job_id>.continue-on-error
๋ก ์์
์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ์ดํ ์ ์์ต๋๋ค.
jobs.<job_id>.strategy.fail-fast
๋ ์ ์ฒด ํ๋ ฌ์ ์ ์ฉ๋ฉ๋๋ค. jobs.<job_id>.strategy.fail-fast
๊ฐ true
๋ก ์ค์ ๋๊ฑฐ๋ ์์ด true
๋ก ํ๊ฐ๋๋ฉด GitHub์(๋) ํ๋ ฌ์ ์์
์ด ์คํจํ ๊ฒฝ์ฐ ํ๋ ฌ์ ์งํ ์ค์ธ ์์
๊ณผ ๋๊ธฐ ์ค์ธ ์์
์ ๋ชจ๋ ์ทจ์ํฉ๋๋ค. ์ด ์์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก true
์
๋๋ค.
jobs.<job_id>.continue-on-error
๋ ๋จ์ผ ์์
์ ์ ์ฉ๋ฉ๋๋ค. jobs.<job_id>.continue-on-error
๊ฐ true
์ธ ๊ฒฝ์ฐ jobs.<job_id>.continue-on-error: true
์ธ ์์
์ด ์คํจํ๋๋ผ๋ ํ๋ ฌ์ ๋ค๋ฅธ ์์
์ ๊ณ์ ์คํ๋ฉ๋๋ค.
jobs.<job_id>.strategy.fail-fast
๋ฐ jobs.<job_id>.continue-on-error
๋ฅผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ์ํฌํ๋ก๋ 4๊ฐ์ ์์
์ ์์ํฉ๋๋ค. ๊ฐ ์์
์ ๋ํด continue-on-error
๋ matrix.experimental
๊ฐ์ผ๋ก ๊ฒฐ์ ๋ฉ๋๋ค. continue-on-error: false
์ธ ์์
์ด ์คํจํ๋ฉด ์งํ ์ค์ด๊ฑฐ๋ ํ์ ๋๊ธฐ ์ค์ธ ๋ชจ๋ ์์
์ด ์ทจ์๋ฉ๋๋ค. continue-on-error: true
์ธ ์์
์ด ์คํจํ๋ฉด ๋ค๋ฅธ ์์
์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
jobs:
test:
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: true
matrix:
version: [6, 7, 8]
experimental: [false]
include:
- version: 9
experimental: true
Defining the maximum number of concurrent jobs
๊ธฐ๋ณธ์ ์ผ๋ก GitHub์ ์คํ๊ธฐ ๊ฐ์ฉ์ฑ์ ๋ฐ๋ผ ๋ณ๋ ฌ๋ก ์คํ๋๋ ์์
์๋ฅผ ์ต๋ํํฉ๋๋ค. matrix
์์
์ ๋ต์ ์ฌ์ฉํ ๋ ๋์์ ์คํํ ์ ์๋ ์ต๋ ์์
์๋ฅผ ์ค์ ํ๋ ค๋ฉด jobs.<job_id>.strategy.max-parallel
์ ์ฌ์ฉํ์ธ์.
์๋ฅผ ๋ค์ด ๋ค์ ์ํฌํ๋ก๋ ํ ๋ฒ์ 6๊ฐ์ ์์ ์ ๋ชจ๋ ์คํํ ์ ์๋ ์คํ์๊ฐ ์๋๋ผ๋ ํ ๋ฒ์ ์ต๋ ๋ ๊ฐ์ ์์ ๋ง ์คํํฉ๋๋ค.
jobs:
example_matrix:
strategy:
max-parallel: 2
matrix:
version: [10, 12, 14]
os: [ubuntu-latest, windows-latest]