Code N Solve ๐: CI/CD ํ๊ฒฝ์์ Playwright ๋ฌธ์ ํด๊ฒฐํ๊ธฐ: ์ค์น ์ค๋ฅ ๋ถ์ ๋ฐ ํด๊ฒฐ ๋ฐฉ์
Gatsby๋ฅผ ์ฌ์ฉํด ๋ธ๋ก๊ทธ๋ฅผ ๋ฐฐํฌํ ๋, Playwright ์ค์น์ ๊ด๋ จํด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ป๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์ง ๋จ๊ณ๋ณ๋ก ์ดํด๋ณด์.
๋ฌธ์
- ๋ก์ปฌ ํ๊ฒฝ์์๋ ์ ์์ ์ผ๋ก ์๋ํ๋ Gatsby ๋ธ๋ก๊ทธ๊ฐ CI/CD ํ์ดํ๋ผ์ธ์์ Playwright ๋ธ๋ผ์ฐ์ ์ค์น ์ค๋ฅ๋ก ์ธํ ๋น๋ ์คํจ๊ฐ ๋ฐ์ํ๋ค.
- ํนํ, Playwright ์ค์น ํ, ๋ธ๋ผ์ฐ์ ์คํํ ๋ ๊ฒฝ๋ก๊ฐ ์ ๋๋ก ์ค์ ๋์ง ์์ ๋ฐ์ํ์๋ค.1
-
Error: Failed to launch chromium because executable doesnโt exist browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium-1124/chrome-linux/chrome Error:browserType.launch: Executable doesn't exist at /home/runner/.cache/ms- playwright/chromium-1124/chrome-linux/chrome
Playwright2 ? ๐ค
- ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋์ผ๋ก ํ ์คํธํ ์ ์๋ ๋๊ตฌ๋ก ์ฌ๋ฌ ๋ธ๋ผ์ฐ์ (Chromium, Firefox, WebKit ๋ฑ)์์ ์น ํ์ด์ง์ ๊ธฐ๋ฅ์ ํ ์คํธ ํ ์ ์๋ค.
Playwright ์ฌ์ฉ ๋ชฉ์
- CI/CD ํ์ดํ๋ผ์ธ์์ ์๋ํ๋ ๋ธ๋ผ์ฐ์ ํ ์คํธ๋ฅผ ์ํํ๊ธฐ ์ํด Playwright๋ฅผ ์ค์นํ๊ณ ์ ํ์๋ค.
- ์ด๋ฅผ ํตํด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ค์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ์ ์๋ํ๋์ง ํ์ธํ ์ ์๊ณ , ์ด๋ก ์ธํ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ๋ฏธ๋ฆฌ ๋ฐ๊ฒฌํ ์ ์๋ค.
- ๊ฒฐ๋ก : ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์์ ์๋ํ๋ ํ ์คํธ๋ฅผ ์ํด ์ฌ์ฉ.
CI/CD ์ค์
-
npm ci
(๋๋yarn install
)๋ก ํ์ํ ์์กด์ฑ์ ์ค์นํ ํ,npx playwright isntall
๋ช ๋ น์ด๋ก Playwright ๋ธ๋ผ์ฐ์ ๋ฅผ ์ค์นํ์๋ค.3 -
- name: Install Dependencies run: npm ci - name: Install Playwright Browsers run: npx playwright install
npm ci
4- CI/CD ํ์ดํ๋ผ์ธ์์ Node.js ํ๋ก์ ํธ์
package-lock.json
ํ์ผ์ ๊ธฐ๋ก๋ ์ ํํ ๋ฒ์ ์ ๋ชจ๋ ์ข ์์ฑ์ ์ค์นํ๋ ์ญํ ์ ์ํํ๋ค. - ํ๋ก์ ํธ์ ์์กด์ฑ์ ์ผ๊ด๋๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค์
- CI/CD ํ์ดํ๋ผ์ธ์์ Node.js ํ๋ก์ ํธ์
npm ci
VSnpm install
5 ?npm ci
๋npm install
๊ณผ ๋น์ทํ์ง๋ง, CI ํ๊ฒฝ์ ํนํ๋ ๋ช๊ฐ์ง ์ฐจ์ด์ ์ด ์๋ค.package-lock.json
ํ์ผ์ ์ ํํ ๋ง๋ ๋ฒ์ ์ ํจํค์ง๋ฅผ ์ค์นํ๋ฉฐ,node_modules
ํด๋๋ฅผ ๋จผ์ ์ญ์ ํ ํ ์ค์น๋ฅผ ์งํํ๋ค.- ๋ฐ๋ผ์ ์ถ๊ฐ์ ์ธ ๊ณ์ฐ ์์ด ๋ฐ๋ก ์ค์น๋ฅผ ์งํํ๋ฏ๋ก
npm install
์ ๋นํด ์ข ์์ฑ ์ค์น ์๋๊ฐ ๋น ๋ฅด๋ค.
- ๋ฐ๋ผ์ ์ถ๊ฐ์ ์ธ ๊ณ์ฐ ์์ด ๋ฐ๋ก ์ค์น๋ฅผ ์งํํ๋ฏ๋ก
npm install
์package.json
ํ์ผ์ ์ ์๋ ์ข ์์ฑ์ ๊ธฐ๋ฐ์ผ๋กnode_modules
ํด๋์ ์ค์นํ๋ฉฐ ์ด ๊ณผ์ ์์package-lock.json
ํ์ผ๋ ์ฐธ๊ณ ํ์ฌ ๊ฐ๋ฅํ ํ ๋์ผํ ๋ฒ์ ์ ํจํค์ง๋ฅผ ์ค์นํ๋ ค๊ณ ํ๋ค.- ๋, ํ์์
package-lock.json
์ ์ ๋ฐ์ดํธํ๋ค.
- ๋, ํ์์
package.json
๊ณผpackage-lock.json
ํ์ผ์ด ์ผ์นํ์ง ์์ผ๋ฉด ์คํจํ๋ฏ๋ก ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ CI ํ๊ฒฝ๊ฐ์ ์์กด์ฑ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ค.
๋ฌธ์ ๋ถ์
- ๊ถํ ๋ฌธ์
- Playwright ๋ธ๋ผ์ฐ์ ์ค์น ์ค ๊ถํ์ด ๊ฑฐ๋ถ๋์ด
sudo npx playwright install
์ ์๋ํ์ผ๋ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค.
- Playwright ๋ธ๋ผ์ฐ์ ์ค์น ์ค ๊ถํ์ด ๊ฑฐ๋ถ๋์ด
- ์ค์น ๊ฒฝ๋ก ๋ฌธ์
- Playwright์ ๊ธฐ๋ณธ ์ค์น ๊ฒฝ๋ก์ ๋ํ ๊ถํ ๋ฌธ์ ๋ก ์ธํด ๋ธ๋ผ์ฐ์ ๊ฐ ์ค์น๋์ง ์์๊ฑฐ๋, ์ค์น๋ ์์น์์ ์คํ๋์ง ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์ค์น ๊ฒฝ๋ก ์์
- Playwright ๋ธ๋ผ์ฐ์ ์ ์ค์น ๊ฒฝ๋ก๋ฅผ
$HOME/.cache/ms-playwright
๋ก ๋ณ๊ฒฝํ๊ณ , ์ด ๊ฒฝ๋ก๋ฅผ ํ๊ฒฝ ๋ณ์๋ก ์ค์ ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
- Playwright ๋ธ๋ผ์ฐ์ ์ ์ค์น ๊ฒฝ๋ก๋ฅผ
- ์บ์ ๋ฌดํจํ
- ์์๋์๊ฑฐ๋ ์ถฉ๋์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ์บ์๋ฅผ ๋ฌดํจํํ๊ณ , ์๋ก์ด ์บ์๋ฅผ ์์ฑํ๋๋ก ๋น๋๋ฅผ ์คํํ๋ค.
- ์ค์น ๊ฒฝ๋ก ๊ฒ์ฆ
- ์ค์น ํ ํด๋น ๊ฒฝ๋ก์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๋๋ก ์ค์น๋์๋์ง ํ์ธํ๋ ์ ์ฐจ๋ฅผ ์ถ๊ฐํ๋ค.
CI/CD ํ์ดํ๋ผ์ธ์์์ Playwright ์ค์
-
CI ํ์ดํ๋ผ์ธ
- Playwright ๋ธ๋ผ์ฐ์ ๋ฅผ
$HOME/.cache/ms-playwright
๊ฒฝ๋ก์ ์ค์นํ๊ณ ์ด ๊ฒฝ๋ก๋ฅผ ํ๊ฒฝ ๋ณ์๋ก ์ค์ ํ์ฌ ๋น๋ ๊ณผ์ ์์ ํ์ฉํ์๋ค. -
- name: Set Playwright Browsers Path run: echo "PLAYWRIGHT_BROWSERS_PATH=$HOME/.cache/ms-playwright" >> $GITHUB_ENV - name: Check Playwright Browsers Path run: echo "Playwright Browsers Path ---> ${{ env.PLAYWRIGHT_BROWSERS_PATH }}" - name: Install Playwright Browsers run: npx playwright install
- Playwright ๋ธ๋ผ์ฐ์ ๋ฅผ
-
CD ํ์ดํ๋ผ์ธ
- CI์์ ์ค์น๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฌ์ฉํ๋ ค ํ์ผ๋, GitHub Actions ํ๊ฒฝ์์ CI์ ์บ์๊ฐ CD๋ก ์ด์ด์ง์ง ์์ผ๋ฏ๋ก CD์์๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ค์นํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํด์ผ ํ๋ค.
-
ํจ์จ์ ์ธ ์ค์
- Playwright ๋ธ๋ผ์ฐ์ ์ค์น ํ ์ค์น ๊ฒฝ๋ก๋ฅผ ํ์ธํ๋ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ์ฌ ๋ฌธ์ ๋ฐ์ ์ฌ๋ถ๋ฅผ ์ฌ์ ์ ํ์ ํ๊ณ , ์ค์น๋ ํ์ผ์ ์ ํ์ฑ์ ๊ฒ์ฆํ์๋ค.
๊ฒฐ๋ก
- Playwright ์ค์น ๋ฌธ์
- CI/CD ํ๊ฒฝ์์ ๋ฐ์ํ๋ Playwright ๋ธ๋ผ์ฐ์ ์ค์น ๋ฌธ์ ๋ ๊ถํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ค์น ๊ฒฝ๋ก๋ฅผ ์์ ํ๊ณ , ์บ์ ๋ฌดํจํ ๋ฐ ์ค์น ๊ฒฝ๋ก ๊ฒ์ฆ ์ ์ฐจ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
- ํจ์จ์ ์ธ ๋น๋
- ์ด๋ฌํ ์ ๊ทผ๋ฒ์ ํตํด ๋ก์ปฌ ํ๊ฒฝ๋ฟ๋ง ์๋๋ผ, CI/CD ํ๊ฒฝ์์๋ ์์ ์ ์ธ ๋น๋๋ฅผ ์ ์งํ ์ ์๋ค.