Github Actions - Matrix & Secrets
์ด๋ฒ์๋ Matrix๋ฅผ ํ์ฉํ์ฌ ๋ค์ค OS ํ๊ฒฝ, ๋ค์ํ ๋ฒ์ ์ ์ธ์ด, ํ๋ ์์ํฌ ๋ฑ์ ํ์ฑํ ์ํค๋ ์ํฌํ๋ก์ฐ๋ฅผ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค.
Matrix
Matrix๋ Array์ ์ ์ฌํฉ๋๋ค. YAML์์๋ ํน์ ๋ณ์๋ฅผ ์ ์ธํ ์ ์๋๋ฐ, ์ด๋ฅผ ๋ณต์๊ฐ๋ก ์ ์ธํ๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ Matrix๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ง ๊ธฐ์กด์ Travis CI๋ฅผ ์จ๋ณด์ ๋ถ๋ค์ด๋ผ๋ฉด ์ต์ํ ๊ฒ์ ๋๋ค.
name: Practice actions
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
strategy:
max-parallel: 4
matrix:
python-version: [2.7, 3.5, 3.6, 3.7]
steps:
- uses: actions/checkout@v1
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies...
run: python -m pip install --upgrade pip # Instead of APT for debian package manager
๊ธฐ์กด์ ์ฌ์ฉํ๋ Workflow๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ master ๋ธ๋์น์ Push, PR์ ๊ธฐ๋ณธ ์ด๋ฒคํธ๋ก ๋๊ณ , Python ์ธ์ด์์ ์์ ํ๋ค๊ณ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค. Python ๋ฒ์ ์ ์๊ฐ๋ณด๋ค ๋ง๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๋ฒ์ ์์ ํธํ์ ์ํ๋ค๋ฉด ๊ฐ ๋ฒ์ ์์ ํ ์คํธํด์ผ ํ ํ์๊ฐ ์๊ธฐ๊ฒ ๋ฉ๋๋ค.
์ด๋ด ๋๋ Github Actions์์ ์ ๊ณตํ๋ setup ๋ ํฌ์งํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํด๋น ๋ ํฌ์งํฐ๋ฆฌ์์ ์ ๊ณตํ๋ Python Setup ํจํค์ง๋ฅผ steps์ ์ถ๊ฐํ๊ณ , with ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ฉด, matrix์์ ๋ณธ์ธ์ด ์ ์ํ ๋ฒ์ ์ ์ค์นํด์ค๋๋ค.
๊ทธ๋ฌ๋ฉด ์ผ์ชฝ์ ๋ณด์๋ ๊ฒ๊ณผ ๊ฐ์ด ๋น๋ ํ๊ฒฝ์ด ๋ฒ์ ๋ณ๋ก ๋์ด์ด ๋๋ ๊ฒ์ ํ์ธํ์ค ์ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, ๊ผญ ๊ตณ์ด step์ ๋ฐ์ ๋ Github Actions์์ ์ ๊ณตํ๋ ์ฝ๋๋ง ์จ์ผํ ๊น์? ๋ฌผ๋ก ๊ทธ๊ฒ์ ์๋๋๋ค. ์ด ์ฝ๋๋ ๋ณด๋ค์ํผ OS ํ๊ฒฝ์ Ubuntu๋ก ์ฌ์ฉํ๊ณ ์๊ณ , ๋น๋ ํ๊ฒฝ ๋ํ Travis CI๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ Debian์์ ์ ๊ณตํ๋ apt package manager๋ฅผ ์ฌ์ฉํด๋ ๋ ๊ฒ์ ๋๋ค.
name: Practice actions
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
max-parallel: 4
matrix:
python-version: [2.7, 3.5, 3.6, 3.7]
os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
- uses: actions/checkout@v1
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies...
run: python -m pip install --upgrade pip # Instead of APT for debian package manager
์ถ๊ฐ๋ก OS์ ๋ํด์๋ ์์ ๊ฐ์ด Matrix๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค.
ํจ๋ฌ๋ ๋ฅผ ํ์ฑํ ์์ผฐ๋๋ ํ๊ฒฝ ๋ง๋๋ ์์ ์ด ๊ทธ๋ ๊ฒ ์ค๋ ๊ฑธ๋ฆฌ์ง ์๋ค์.. ์ ๋ถ ๋ค ํด์ ํ 5๋ถ ์ ๋ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๋ฅผ ์์ฉํด์ Java, Javascript ๋ฑ์ ์ธ์ด๋ ๋์ผํ๊ฒ ์ํฌํ๋ก์ฐ๋ฅผ ๋ง๋์ค ์ ์์ต๋๋ค.
Secrets
๋ค์์ Secrets์ ๋๋ค. Secrets๋ ๋งค์ฐ ์ค์ํ์ฃ . ์ฌ๋ฌ๋ถ๋ค์ด ๋ง์ฝ, PR Workflow์์ ๊ธฐ๋ณธ์ ์ธ ํ ์คํธ๋ฅผ ์งํํ๊ณ , ์ด๊ฒ์ด Merge๊ฐ ์ด๋ฃจ์ด์ง๋ฉด ๋ฐฐํฌ๋ฅผ ํด์ผ๊ฒ ์ฃ ? Git flow๋ฅผ ์๋ก ๋ค์์ ๋, develop์ด ๋๋๋ฉด, Test ํ, Production์ผ๋ก ๊ฐ๋ ๊ฒ๊ณผ ๋น์ทํ ์ํฉ์ธ ๊ฒ์ ๋๋ค.
ํ์ง๋ง On-Premise ํ๊ฒฝ์์ ๋ฐฐํฌ๋ฅผ ํ๋ ๊ฒ์ด๋ผ๋ฉด, IP ์ฃผ์๊ฐ ๊ฐ์ฅ ๋ฏผ๊ฐํ ์ฌํญ์ผ ๊ฒ์ด๊ณ , VPN์ ์ฌ์ฉํ๋ค๋ฉด ๊ทธ์ ์ ๋ ฅ๋๋ ๊ณ์ ์ฌํญ์ด ์ต์์ ๋ณด์ ์ ๋ณด์ ํด๋น๋ ๊ฒ์ ๋๋ค. ์์ ํ ํ๋กํ ์ฝ์ด๋ Secure Layer๋ฅผ ์ ์ฉํ๋ค ํ๋๋ผ๋ ์ด๋ค์ด ๊ฐ์ด ๋ ํฌ์งํฐ๋ฆฌ์ ๊ณต์ ๋ ์ํ๋ก ์๋ค๋ฉด ๊ฒ์ ์์ง ํ๊ฒฝ์ ๋ ธ์ถ์ด ๋๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒฐ์ฝ ๊ถ์ฅํ์ง ์๋ ์ฌํญ ์ค์ ํ๋์ ๋๋ค.
Travis CI์์๋ ์์ฒด์ ์ผ๋ก Virtual Environment๋ฅผ ์ ๊ณตํ์ฌ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๋ณด๊ดํ ์ ์๋ ๊ณณ์ด ์์์ฃ . Github์์ ๋ํ ์ด๋ฌํ ๊ฐ์ ํ๊ฒฝ์ ์ ๊ณตํ์ฌ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ๋ณด๊ดํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋ ํฌ์งํฐ๋ฆฌ์ ์ค์ ์ ๊ฐ๋ฉด Secrets ๋ฉ๋ด๊ฐ ์๊ฒจ์ ธ ์์ต๋๋ค. Secrets ๋ฉ๋ด์์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ํธํํ์ฌ Actions์ ์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋ณด๋ค ์์ ํ๊ฒ ํด๋ผ์ฐ๋์ IAM ์ธ์ฆ ์ ๋ณด ๋ฑ์ ์ฌ์ฉํ์ฌ API๋ก ์ฝ๊ฒ ๋ฐฐํฌํ๋ ํ๊ฒฝ์ ๋ง๋ค ์ ์์ต๋๋ค.
name: Practice actions
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
max-parallel: 4
matrix:
python-version: [2.7, 3.5, 3.6, 3.7]
os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies...
run: python -m pip install --upgrade pip # Instead of APT for debian package manager
- name: Download for changes...
uses: actions/checkout@v1
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
ํ๊ฒฝ๋ณ์๋ฅผ ๋ถ๋ฅด๋ ๋ฐฉ๋ฒ์ secrets ๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ๋ฐฐํฌ ํ๊ฒฝ์ ๋ง๋๋ ๊ฒ๋ ๋ฌธ์ ์์ด Actions๋ฅผ ์ด์ฉํด์ ์ฝ๊ฒ ๋ง๋์ค ์ ์์ต๋๋ค.
๋ค์ ๊ธ์์๋ React ํ๋ก์ ํธ + Firebase Deploy ํ๊ฒฝ์ ์ฌ์ฉํ ์๋ ๋ฐฐํฌ ํ๊ฒฝ์ ๋ง๋๋ ์๊ฐ์ ๊ฐ์ง๋๋ก ํ๊ฒ ์ต๋๋ค.
'DevOps > Git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Github] Github Actions์ Firebase Channel์ ์ด์ฉํ ์คํ ์ด์ง ํ๊ฒฝ ๊ตฌ์ถ (0) | 2021.08.29 |
---|---|
[Github] Password authentication was removed์ ๋์ฒํ๊ธฐ (0) | 2021.08.19 |
Github Actions - React ํ๋ก์ ํธ๋ฅผ Firebase์ Deploy ํ๊ธฐ (0) | 2019.08.27 |
Github Actions - ๊ฐ๋จํ ์ํฌํ๋ก์ฐ ์์ฑํด๋ณด๊ธฐ (0) | 2019.08.24 |
Github Actions ๋๋์ด ํ์ฑํ ๋๋ค. (0) | 2019.08.24 |