๋จ์ผ ์ํฌํ๋ก์ ๋ํ ํ๊ฒฝ ๋ณ์ ์ ์
๋จ์ผ ์ํฌํ๋ก์ ๋ํ ์ฌ์ฉ์ ์ง์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ ์ํ๋ ค๋ฉด ์ํฌํ๋ก ํ์ผ์์ env
ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํ ์ ์์ต๋๋ค. ์ด ๋ฉ์๋๋ก ์ค์ ํ ์ฌ์ฉ์ ์ง์ ํ๊ฒฝ ๋ณ์์ ๋ฒ์๋ ์ ์๋ ์์๋ก ์ ํ๋ฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋ฒ์๊ฐ ์ง์ ๋ ๋ณ์๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
- ์ํฌํ๋ก ํ์ผ์ ์ต์์ ์์ค์์
env
๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ์ํฌํ๋ก๋ฅผ ์คํํฉ๋๋ค. jobs.<job_id>.env
๋ฅผ ์ฌ์ฉํ์ฌ ์ํฌํ๋ก ๋ด์ ์์ ์ฝํ ์ธ ๋ฅผ ํ์ธํฉ๋๋ค.- ์์
๋ด์ ํน์ ๋จ๊ณ(
jobs.<job_id>.steps[*].env
๋ฅผ ์ฌ์ฉํ์ฌ)
name: Greeting on variable day on: workflow_dispatch env: DAY_OF_WEEK: Monday jobs: greeting_job: runs-on: ubuntu-latest env: Greeting: Hello steps: - name: "Say Hello Mona it's Monday" run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!" env: First_Name: Mona
name: Greeting on variable day
on:
workflow_dispatch
env:
DAY_OF_WEEK: Monday
jobs:
greeting_job:
runs-on: ubuntu-latest
env:
Greeting: Hello
steps:
- name: "Say Hello Mona it's Monday"
run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"
env:
First_Name: Mona
์คํ๊ธฐ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ env
๋ณ์ ๊ฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์์ ์์์์๋ echo
๋ช
๋ น, ์ฆ $DAY_OF_WEEK
, $Greeting
๋ฐ $First_Name
์ ์คํ๊ธฐ ํ๊ฒฝ ๋ณ์๋ก ์ฌ์ฉ๋๋ ์ธ ๊ฐ์ง ์ฌ์ฉ์ ์ง์ ๋ณ์๋ฅผ ๋ณด์ฌ์ค๋๋ค. ํด๋น ๋ณ์์ ๊ฐ์ ๊ฐ๊ฐ ์ํฌํ๋ก, ์์
๋ฐ ๋จ๊ณ ์์ค์์ ์ค์ ๋๊ณ ๋ฒ์๊ฐ ์ง์ ๋ฉ๋๋ค. ์ด๋ฌํ ๋ณ์์ ๋ณด๊ฐ์ ์คํ๊ธฐ์์ ๋ฐ์ํฉ๋๋ค.
์ํฌํ๋ก ๋จ๊ณ run
์ ๋ช
๋ น ๋๋ ์ฐธ์กฐ๋ ์์
์ ์คํ๊ธฐ์์ ์ฌ์ฉ ์ค์ธ ์
ธ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ํฌํ๋ก์ ๋ค๋ฅธ ๋ถ๋ถ์ ์๋ ๋ช
๋ น์ GitHub Actions์ ์ํด ์ฒ๋ฆฌ๋๋ฉฐ ์คํ๊ธฐ๋ก ์ ์ก๋์ง ์์ต๋๋ค. ์คํ๊ธฐ ํ๊ฒฝ ๋ณ์ ๋๋ ์ปจํ
์คํธ๋ฅผ run
๋จ๊ณ์์ ์ฌ์ฉํ ์ ์์ง๋ง, ์คํ๊ธฐ๋ก ์ ์ก๋์ง ์์ ์ํฌํ๋ก ๋ถ๋ถ์์๋ ์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์ ๊ฐ์ ์ก์ธ์คํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์ ๊ฐ์ ์ก์ธ์ค๋ฅผ ์ฐธ์กฐํ์ธ์.
์ํฌํ๋ก ์์
์ด ์คํ๊ธฐ ์ปดํจํฐ๋ก ์ ์ก๋ ํ ์คํ๊ธฐ ํ๊ฒฝ ๋ณ์ ๋ณด๊ฐ์ด ์ํ๋๋ฏ๋ก ์คํ๊ธฐ์์ ์ฌ์ฉ๋๋ ์
ธ์ ์ ์ ํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด ์์์์ ์ํฌํ๋ก๋ ubuntu-latest
๋ฅผ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Linux ์คํ๊ธฐ๋ bash ์
ธ์ ์ฌ์ฉํ๋ฏ๋ก $NAME
๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Windows ์คํ๊ธฐ๋ PowerShell์ ์ฌ์ฉํ๋ฏ๋ก $env:NAME
๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. ์
ธ์ ๋ํ ์์ธํ ๋ด์ฉ์ GitHub Actions์ ๋ํ ์ํฌํ๋ก ๊ตฌ๋ฌธ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ฌ๋ฌ ์ํฌํ๋ก์ ๋ํ ๊ตฌ์ฑ ๋ณ์ ์ ์ํ๊ธฐ
์ฌ๋ฌ ์ํฌํ๋ก์์ ์ฌ์ฉํ ๊ตฌ์ฑ ๋ณ์๋ฅผ ๋ง๋ค๊ณ ์กฐ์ง, ๋ฆฌํฌ์งํ ๋ฆฌ ๋๋ ํ๊ฒฝ ์์ค์์ ์ ์ํ ์์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๊ตฌ์ฑ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ์ง ์์ค์์ ๋๊ตฌ๋ฅผ ๋น๋ํ๊ธฐ ์ํด ์ ๋ฌ๋ ๋งค๊ฐ ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ๋ค์ ๋ฆฌํฌ์งํ ๋ฆฌ ์์ ์๊ฐ ์ฌ๋ก๋ณ๋ก ์ด๋ฌํ ๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ์ ์ํ๋๋ก ํ์ฉํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ ๋ณ์๋ฅผ ์ ์ํ๋ฉด vars
์ปจํ
์คํธ์์ ์๋์ผ๋ก ๊ตฌ์ฑ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ vars
์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ๋ณ์ ๊ฐ์ ์ก์ธ์คํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ตฌ์ฑ ๋ณ์ ๋ง๋ค๊ธฐ
๋ฆฌํฌ์งํ ๋ฆฌ ์์ ์๋ง ๊ฐ์ธ ๊ณ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ GitHub์ ๋น๋ฐ ๋๋ ๋ณ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. GitHub์์ ์กฐ์ง ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋น๋ฐ์ด๋ ๋ณ์๋ฅผ ์์ฑํ๋ ค๋ฉด write
์ก์ธ์ค ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก, ํ๋ ฅ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ง REST API๋ฅผ ํตํด ๊ฐ์ธ ๊ณ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋๋ ์กฐ์ง ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๋น๋ฐ ๋๋ ๋ณ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
-
GitHub์์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ธฐ๋ณธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
-
๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ ์๋์์ ์ค์ ์ ํด๋ฆญํฉ๋๋ค. "์ค์ " ํญ์ด ํ์๋์ง ์์ผ๋ฉด ๋๋กญ๋ค์ด ๋ฉ๋ด๋ฅผ ์ ํํ ๋ค์ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
-
์ฌ์ด๋๋ฐ์ "๋ณด์" ์น์ ์์ ๋น๋ฐ ๋ฐ ๋ณ์๋ฅผ ์ ํํ๊ณ ์์ ์ ํด๋ฆญํฉ๋๋ค.
-
๋ณ์ ํญ์ ํด๋ฆญํฉ๋๋ค.
-
์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
์ด๋ฆ ํ๋์ ๋ณ์์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
-
๊ฐ ํ๋์ ๋ณ์ ๊ฐ์ ์ ๋ ฅํฉ๋๋ค.
-
๋ณ์ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํ๊ฒฝ์ ๋ํ ๊ตฌ์ฑ ๋ณ์ ๋ง๋ค๊ธฐ
๊ฐ์ธ ๊ณ์ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํ๊ฒฝ์ ๋ํ ๋น๋ฐ ๋๋ ๋ณ์๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ฆฌํฌ์งํ ๋ฆฌ ์์ ์์ฌ์ผ ํฉ๋๋ค. ์กฐ์ง ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํ๊ฒฝ์ ๋ํ ๋น๋ฐ ๋๋ ๋ณ์๋ฅผ ๋ง๋ค๋ ค๋ฉด admin
์ก์ธ์ค ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ํ๊ฒฝ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฐฐํฌ ํ๊ฒฝ ๊ด๋ฆฌ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
GitHub์์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ธฐ๋ณธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
-
๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ ์๋์์ ์ค์ ์ ํด๋ฆญํฉ๋๋ค. "์ค์ " ํญ์ด ํ์๋์ง ์์ผ๋ฉด ๋๋กญ๋ค์ด ๋ฉ๋ด๋ฅผ ์ ํํ ๋ค์ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
-
์ผ์ชฝ ์ฌ์ด๋๋ฐ์์ ํ๊ฒฝ์ ํด๋ฆญํฉ๋๋ค.
-
๋ณ์๋ฅผ ์ถ๊ฐํ ํ๊ฒฝ์ ํด๋ฆญํฉ๋๋ค.
-
ํ๊ฒฝ ๋ณ์์์ ๋ณ์ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
์ด๋ฆ ํ๋์ ๋ณ์์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
-
๊ฐ ํ๋์ ๋ณ์ ๊ฐ์ ์ ๋ ฅํฉ๋๋ค.
-
๋ณ์ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์กฐ์ง์ ๋ํ ๊ตฌ์ฑ ๋ณ์ ๋ง๋ค๊ธฐ
์กฐ์ง์์ ๋น๋ฐ ๋๋ ๋ณ์๋ฅผ ๋ง๋ค ๋, ์ ์ฑ ์ ์ฌ์ฉํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ณ๋ก ์ก์ธ์ค๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๊ฑฐ๋ ํ๋ผ์ด๋น ๋ฆฌํฌ์งํ ๋ฆฌ ๋๋ ์ง์ ๋ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ชฉ๋ก์ ๋ํด์๋ง ์ก์ธ์ค๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์กฐ์ง ์์ ์ ๋ฐ "์กฐ์ง ์์ ๋ณ์ ๊ด๋ฆฌ" ๋๋ "์กฐ์ง ์์ ๋น๋ฐ ๊ด๋ฆฌ" ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์๋ ์กฐ์ง ์์ค์์ ๋น๋ฐ ๋๋ ๋ณ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์ฌ์ฉ์ ์ง์ ์กฐ์ง ์ญํ ์๊ฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
GitHub์์ ์กฐ์ง์ ๊ธฐ๋ณธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
-
์กฐ์ง ์ด๋ฆ์์ ์ค์ ์ ํด๋ฆญํฉ๋๋ค. "์ค์ " ํญ์ด ํ์๋์ง ์์ผ๋ฉด ๋๋กญ๋ค์ด ๋ฉ๋ด๋ฅผ ์ ํํ ๋ค์ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
-
์ฌ์ด๋๋ฐ์ "๋ณด์" ์น์ ์์ ๋น๋ฐ ๋ฐ ๋ณ์๋ฅผ ์ ํํ๊ณ ์์ ์ ํด๋ฆญํฉ๋๋ค.
-
๋ณ์ ํญ์ ํด๋ฆญํฉ๋๋ค.
์ฐธ๊ณ ํญ๋ชฉ
โActions ๋น๋ฐ๊ณผ ๋ณ์โ ํ์ด์ง์๋ ์ฌ์ฉ ๊ถํ์ ๋ฐ๋ผ ๋น๋ฐ๊ณผ ๋ณ์์ ๋ํ ๋ณ๋ ํญ์ด ํ์๋์ง ์์ ์ ์์ต๋๋ค. "์กฐ์ง Actions ๋ณ์ ๊ด๋ฆฌ" ๋ฐ "์กฐ์ง Actions ๋น๋ฐ ๊ด๋ฆฌ" ๊ถํ์ด ์๋ ์กฐ์ง ์์ ์ ๋ฐ ์ฌ์ฉ์์๊ฒ๋ ๋ณ์ ๋ฐ ๋น๋ฐ ํญ์ด ํ์๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฌ์ฉ์ ์ง์ ์กฐ์ง ์ญํ ์๊ฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
์ ์กฐ์ง ๋ณ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
์ด๋ฆ ํ๋์ ๋ณ์์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
-
๊ฐ ํ๋์ ๋ณ์ ๊ฐ์ ์ ๋ ฅํฉ๋๋ค.
-
๋ฆฌํฌ์งํ ๋ฆฌ ์ก์ธ์ค ๋๋กญ๋ค์ด ๋ชฉ๋ก์์ ์ก์ธ์ค ์ ์ฑ ์ ์ ํํฉ๋๋ค.
-
๋ณ์ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์ ๊ฐ์ ์ก์ธ์คํ๊ธฐ
์ปจํ ์คํธ๋ ์ํฌํ๋ก ์คํ, ๋ณ์, ์คํ๊ธฐ ํ๊ฒฝ, ์์ ๋ฐ ๋จ๊ณ์ ๋ํ ์ ๋ณด์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ปจํ ์คํธ ์ฐธ์กฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์. ์ํฌํ๋ก์์ ๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉํ ์ ์๋ ๋ค๋ฅธ ๋ง์ ์ปจํ ์คํธ๊ฐ ์์ต๋๋ค. ์ํฌํ๋ก ๋ด์์ ํน์ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ ์์น์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ปจํ ์คํธ ์ฐธ์กฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
env
์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ๊ณ ํ๊ฒฝ ๋ณ์ ๊ฐ์ ์ก์ธ์คํ๊ณ vars
์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ๋ณ์ ๊ฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
env
์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ํ๊ฒฝ ๋ณ์ ๊ฐ์ ์ก์ธ์คํ๊ธฐ
์คํ๊ธฐ ํ๊ฒฝ ๋ณ์ ์ธ์๋ GitHub Actions์(๋ฅผ) ์ฌ์ฉํ๋ฉด ์ปจํ
์คํธ๋ก env
ํค ๊ฐ์ ์ค์ ํ๊ณ ์ฝ์ ์ ์์ต๋๋ค. ํ๊ฒฝ ๋ณ์ ๋ฐ ์ปจํ
์คํธ๋ ์ํฌํ๋ก์ ์ฌ๋ฌ ์ง์ ์์ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฒ์
๋๋ค.
์ํฌํ๋ก ๋๋ ์ฐธ์กฐ๋ ์์
์ run
๋จ๊ณ๋ ์คํ๊ธฐ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์คํ๊ธฐ์์ ์ฌ์ฉ ์ค์ธ ์
ธ์ ๋ํ ์ ์ ํ ๊ตฌ๋ฌธ(์์: Linux ์คํ๊ธฐ์ bash ์
ธ์๋ $NAME
, Windows ์คํ๊ธฐ์ PowerShell์๋ $env:NAME
)์ ์ฌ์ฉํ์ฌ ์ฌ๊ธฐ์์ ์คํ๊ธฐ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ${{ CONTEXT.PROPERTY }}
๊ตฌ๋ฌธ๊ณผ ํจ๊ป ์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ๊ฐ์ ์ก์ธ์คํ ์๋ ์์ต๋๋ค. ์ฐจ์ด์ ์ ์์
์ด ์คํ๊ธฐ๋ก ์ ์ก๋๊ธฐ ์ ์ ์ปจํ
์คํธ๊ฐ ๋ณด๊ฐ๋๊ณ ๋ฌธ์์ด๋ก ๋์ฒด๋๋ค๋ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ GitHub Actions์ ์ํด ์ฒ๋ฆฌ๋๊ณ ์คํ๊ธฐ๋ก ์ ์ก๋์ง ์๋ ์ํฌํ๋ก์ ์ผ๋ถ์์๋ ์คํ๊ธฐ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋์ ์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์
๋๋ ๋จ๊ณ๊ฐ ์คํ๊ธฐ๋ก ์ ์ก๋๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ if
์กฐ๊ฑด์ด ํญ์ GitHub Actions์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ฐ๋ผ์ if
์กฐ๊ฑด๋ฌธ์ ์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์์ ๊ฐ์ ์ก์ธ์คํด์ผ ํฉ๋๋ค.
name: Conditional env variable on: workflow_dispatch env: DAY_OF_WEEK: Monday jobs: greeting_job: runs-on: ubuntu-latest env: Greeting: Hello steps: - name: "Say Hello Mona it's Monday" if: ${{ env.DAY_OF_WEEK == 'Monday' }} run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!" env: First_Name: Mona
name: Conditional env variable
on: workflow_dispatch
env:
DAY_OF_WEEK: Monday
jobs:
greeting_job:
runs-on: ubuntu-latest
env:
Greeting: Hello
steps:
- name: "Say Hello Mona it's Monday"
if: ${{ env.DAY_OF_WEEK == 'Monday' }}
run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"
env:
First_Name: Mona
์ด์ ์์์์๋ ์ด๋ ๊ฒ ์์ ํ์ฌ if
์กฐ๊ฑด๋ถ๋ฅผ ๋์
ํ์ต๋๋ค. ์ํฌํ๋ก ๋จ๊ณ๋ ์ด์ DAY_OF_WEEK
๊ฐ "์์์ผ"๋ก ์ค์ ๋ ๊ฒฝ์ฐ์๋ง ์คํ๋ฉ๋๋ค. env
์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ if
์กฐ๊ฑด๋ฌธ์์ ์ด ๊ฐ์ ์ก์ธ์คํฉ๋๋ค. run
๋ช
๋ น ๋ด์์ ์ฐธ์กฐ๋๋ ๋ณ์์๋ env
์ปจํ
์คํธ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์ด๋ ์คํ๊ธฐ ํ๊ฒฝ ๋ณ์๋ก ์ฐธ์กฐ๋๋ฉฐ ์คํ๊ธฐ์์ ์์
์ ๋ฐ์ ํ ๋ณด๊ฐ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์
์ ์คํ๊ธฐ๋ก ๋ณด๋ด๊ธฐ ์ ์ ํด๋น ๋ณ์๋ฅผ ๋ณด๊ฐํ๋๋ก ์ ํํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ ์ถ๋ ฅ์ ๋์ผํฉ๋๋ค.
run: echo "${{ env.Greeting }} ${{ env.First_Name }}. Today is ${{ env.DAY_OF_WEEK }}!"
์ฐธ๊ณ ํญ๋ชฉ
์ปจํ
์คํธ๋ ์ผ๋ฐ์ ์ผ๋ก ${{ context.property }}
์ ๊ฐ์ด ๋ฌ๋ฌ ๊ธฐํธ์ ์ค๊ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ํ์๋ฉ๋๋ค. if
์กฐ๊ฑด์์ ${{
๋ฐ }}
์(๋) ์ ํ ์ฌํญ์ด์ง๋ง, ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์์ ๊ฐ์ด ์ ์ฒด ๋น๊ต ๋ฌธ์ ๋ฌถ์ด์ผ ํฉ๋๋ค.
๊ฒฝ๊ณ
์ํฌํ๋ก์ ์์ ์ ๋ง๋ค ๋๋ ์ฝ๋๊ฐ ๊ณต๊ฒฉ์์ ์ ๋ขฐํ ์ ์๋ ์ ๋ ฅ์ ์คํํ ์ ์๋์ง ํญ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ํน์ ์ปจํ ์คํธ๋ ๊ณต๊ฒฉ์๊ฐ ์์ ์ ์ ์ฑ ์ฝํ ์ธ ๋ฅผ ์ฝ์ ํ ์ ์์ผ๋ฏ๋ก ์ ๋ขฐํ ์ ์๋ ์ ๋ ฅ์ผ๋ก ์ทจ๊ธํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ณด์ ์ฌ์ฉ ์ฐธ์กฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
vars
์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ๋ณ์ ๊ฐ์ ์ก์ธ์คํ๊ธฐ
vars
์ปจํ
์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ํฌํ๋ก ์ ์ฒด์์ ๊ตฌ์ฑ ๋ณ์์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ปจํ
์คํธ ์ฐธ์กฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๊ตฌ์ฑ ๋ณ์๊ฐ ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ, ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ ์ปจํ ์คํธ๋ ๋น ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.
๋ค์ ์์ ๋ ์ํฌํ๋ก ์ ์ฒด์์ vars
์ปจํ
์คํธ์ ํจ๊ป ๊ตฌ์ฑ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ๋
๋๋ค. ๋ค์ ๊ฐ๊ฐ์ ๊ตฌ์ฑ ๋ณ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ, ์กฐ์ง ๋๋ ํ๊ฒฝ ์์ค์์ ์ ์๋์์ต๋๋ค.
on: workflow_dispatch: env: # Setting an environment variable with the value of a configuration variable env_var: ${{ vars.ENV_CONTEXT_VAR }} jobs: display-variables: name: ${{ vars.JOB_NAME }} # You can use configuration variables with the `vars` context for dynamic jobs if: ${{ vars.USE_VARIABLES == 'true' }} runs-on: ${{ vars.RUNNER }} environment: ${{ vars.ENVIRONMENT_STAGE }} steps: - name: Use variables run: | echo "repository variable : $REPOSITORY_VAR" echo "organization variable : $ORGANIZATION_VAR" echo "overridden variable : $OVERRIDE_VAR" echo "variable from shell environment : $env_var" env: REPOSITORY_VAR: ${{ vars.REPOSITORY_VAR }} ORGANIZATION_VAR: ${{ vars.ORGANIZATION_VAR }} OVERRIDE_VAR: ${{ vars.OVERRIDE_VAR }} - name: ${{ vars.HELLO_WORLD_STEP }} if: ${{ vars.HELLO_WORLD_ENABLED == 'true' }} uses: actions/hello-world-javascript-action@main with: who-to-greet: ${{ vars.GREET_NAME }}
on:
workflow_dispatch:
env:
# Setting an environment variable with the value of a configuration variable
env_var: ${{ vars.ENV_CONTEXT_VAR }}
jobs:
display-variables:
name: ${{ vars.JOB_NAME }}
# You can use configuration variables with the `vars` context for dynamic jobs
if: ${{ vars.USE_VARIABLES == 'true' }}
runs-on: ${{ vars.RUNNER }}
environment: ${{ vars.ENVIRONMENT_STAGE }}
steps:
- name: Use variables
run: |
echo "repository variable : $REPOSITORY_VAR"
echo "organization variable : $ORGANIZATION_VAR"
echo "overridden variable : $OVERRIDE_VAR"
echo "variable from shell environment : $env_var"
env:
REPOSITORY_VAR: ${{ vars.REPOSITORY_VAR }}
ORGANIZATION_VAR: ${{ vars.ORGANIZATION_VAR }}
OVERRIDE_VAR: ${{ vars.OVERRIDE_VAR }}
- name: ${{ vars.HELLO_WORLD_STEP }}
if: ${{ vars.HELLO_WORLD_ENABLED == 'true' }}
uses: actions/hello-world-javascript-action@main
with:
who-to-greet: ${{ vars.GREET_NAME }}
์ด์ ์ฒด์ ๊ฒ์
RUNNER_OS
๊ธฐ๋ณธ ํ๊ฒฝ ๋ณ์ ๋ฐ ํด๋น ์ปจํ
์คํธ ์์ฑ ${{ runner.os }}
์(๋ฅผ) ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ด์ ์ฒด์ ์ ์ฌ์ฉํ ์ ์๋ ๋จ์ผ ์ํฌํ๋ก ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์คํ๊ธฐ์์ ์ฌ์ฉํ๋ ์
ธ์ ๋ฐ๋ผ ๋ค๋ฅธ ํ๊ฒฝ ๋ณ์์ ๊ตฌ๋ฌธ์ ๋ณ๊ฒฝํ์ง ์๊ณ ์ด์ ์ฒด์ ๋ฅผ macos-latest
์์ windows-latest
๋ก ๋ณ๊ฒฝํ๋ฉด ๋ค์ ์ํฌํ๋ก๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
on: workflow_dispatch jobs: if-Windows-else: runs-on: macos-latest steps: - name: condition 1 if: runner.os == 'Windows' run: echo "The operating system on the runner is $env:RUNNER_OS." - name: condition 2 if: runner.os != 'Windows' run: echo "The operating system on the runner is not Windows, it's $RUNNER_OS."
on: workflow_dispatch
jobs:
if-Windows-else:
runs-on: macos-latest
steps:
- name: condition 1
if: runner.os == 'Windows'
run: echo "The operating system on the runner is $env:RUNNER_OS."
- name: condition 2
if: runner.os != 'Windows'
run: echo "The operating system on the runner is not Windows, it's $RUNNER_OS."
์ด ์์์์ ๋ if
๋ฌธ์ runner
์ปจํ
์คํธ์ os
์์ฑ์ ํ์ธํ์ฌ ์คํ๊ธฐ์ ์ด์ ์ฒด์ ๋ฅผ ํ์ธํฉ๋๋ค. if
์กฐ๊ฑด์ GitHub Actions์ ์ํด ์ฒ๋ฆฌ๋๋ฉฐ, ์คํ๊ธฐ๋ก ์ ์ก๋๋ ๊ฒ์ฌ์์ true
๋ก ํ์ธ๋๋ ๋จ๊ณ๋ง ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ๊ฒ์ฌ ์ค ํ๋๊ฐ ํญ์ true
์ด๊ณ ๋ค๋ฅธ ํ๋๊ฐ false
์ด๋ฏ๋ก ๋จ๊ณ ์ค ํ๋๋ง ์คํ๊ธฐ์ ์ ์ก๋ฉ๋๋ค. ์์
์ด ์คํ๊ธฐ๋ก ์ ์ก๋๋ฉด ๋จ๊ณ๊ฐ ์คํ๋๊ณ ๋ช
๋ น์ echo
์ ํ๊ฒฝ ๋ณ์๊ฐ ์ ์ ํ ๊ตฌ๋ฌธ(Windows PowerShell์ ๊ฒฝ์ฐ $env:NAME
, Linux์ macOS์ bash์ sh์ธ ๊ฒฝ์ฐ $NAME
)์ ์ฌ์ฉํ์ฌ ๋ณด๊ฐ๋ฉ๋๋ค. ์ด ์์์์ ๋ฌธ runs-on: macos-latest
๋ ๋ ๋ฒ์งธ ๋จ๊ณ๊ฐ ์คํ๋ ๊ฒ์์ ์๋ฏธํฉ๋๋ค.
์ํฌํ๋ก์ ๋จ๊ณ์ ์์ ๊ฐ์ ๊ฐ ์ ๋ฌ
์์
์ ํ ๋จ๊ณ์์ ๊ฐ์ ์์ฑํ๋ ๊ฒฝ์ฐ ๊ธฐ์กด ๋๋ ์ ํ๊ฒฝ ๋ณ์์ ๊ฐ์ ํ ๋นํ ๋ค์ ์ด๋ฅผ GITHUB_ENV
ํ๊ฒฝ ํ์ผ์ ์์ฑํ์ฌ ๋์ผํ ์์
์ ํ์ ๋จ๊ณ์์ ๊ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ๊ฒฝ ํ์ผ์ ์์
์์ ์ง์ ์ฌ์ฉํ๊ฑฐ๋ run
ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ํฌํ๋ก ํ์ผ์ ์
ธ ๋ช
๋ น์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub Actions์ ๋ํ ์ํฌํ๋ก ๋ช
๋ น์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ํฌํ๋ก์ ํ ์์ ๋จ๊ณ์์ ์ํฌํ๋ก์ ๋ค๋ฅธ ์์ ์ ๋จ๊ณ๋ก ๊ฐ์ ์ ๋ฌํ๋ ค๋ ๊ฒฝ์ฐ ๊ฐ์ ์์ ์ถ๋ ฅ์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์, ๋ค๋ฅธ ์์ ์ ๋จ๊ณ์์ ์ด ์์ ์ถ๋ ฅ์ ์ฐธ์กฐํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub Actions์ ๋ํ ์ํฌํ๋ก ๊ตฌ๋ฌธ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๋ค์ ๋จ๊ณ
์ฐธ์กฐ ์ ๋ณด๋ ๋ณ์ ์ฐธ์กฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.