github pages๋ก flutter web์ ๋ฐฐํฌํด๋ด ์๋ค
1. Github repository ์์ฑ
๋จผ์ , ์ฝ๋๋ฅผ ์ ์ฅํ github repository๋ฅผ ์์ฑํด์ผํฉ๋๋ค.
์ ์ฌ์ง์ฒ๋ผ์ New๋ฅผ ๋๋ฌ ์๋ก์ด repository๋ฅผ ์์ฑํด์ค์๋ค.
๋ ํ์งํ ๋ฆฌ Name์ ๋์ค์ ์น์ฌ์ดํธ์ Url์ ๊ผญ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ์ ์คํ๊ฒ ์ ํด์ฃผ์ธ์!
์๋์ create repository๋ฅผ ๋๋ฅด๋ฉด ์ ์์ ์ผ๋ก ์๋ก์ด repository๊ฐ ์์ฑ๋ ๊ฒ ์ ๋๋ค.
2. Flutter project ์์ฑ
๋ค์์ผ๋ก๋, github web์ ๋ฐฐํฌํ flutter project๋ฅผ ์์ฑํด์ค์ผํฉ๋๋ค.
ํฐ๋ฏธ๋์ ์๋ ๋ช ๋ น์ด๋ฅผ ์น๊ณ chrome์ flutter web์ ์คํ์์ผ๋ด ์๋ค.
flutter channel stable
flutter upgrade
flutter config --enable-web
flutter create my_flutter_web_app
cd my_flutter_web_app
flutter run -d chrome
์์๋๋ก ์ณค์๋, chrome์ด ์ ์์ ์ผ๋ก ์คํ๋๋ฉด ์ ๋๋ก ์ ํ ์ด ๋๊ฑฐ์ ๋๋ค.
3. Flutter project์ git repository ์ฐ๊ฒฐ
flutter web๊ณผ repository๋ฅผ ์์ฑํ์ผ๋ฉด ์ด์ ์ฐ๊ฒฐ์ ํด์ผํฉ๋๋ค.
flutter project๋ฅผ ์์ฑํ ๊ฒฝ๋ก์์ ํฐ๋ฏธ๋์ ์๋ ๋ช ๋ น์ด๋ค์ ์ฐจ๋ก๋๋ก ์ ๋ ฅํด์ค์๋ค.
cd my_flutter_project
git init
git add .
git commit -m "Initial commit"
git remote add origin <github ๋ ํ์งํ ๋ฆฌ ๋งํฌ>
git push -u origin master
์๋ ๋ช ๋ น์ด๋ค์ ์ฐจ๋ก๋๋ก ์ ๋ ฅํ๊ณ , repository์ ์ ์์ ์ผ๋ก ํ์ผ์ด ์ฌ๋ผ๊ฐ์ผ๋ฉด ์ ํ ์๋ฃ์ ๋๋ค.
4.gh-pages ์ค์
4๋ฒ์งธ๋ก gh-pages ์ค์ ์ ๋๋ค.
ํ๋ก์ ํธ ํด๋์์ ์๋ ์ฌ์ง์ฒ๋ผ .github/workflows/build-deploy.yml ํ์ผ์ ๋ง๋ค์ด์ค๋๋ค.
(์ด๋ฆ์ ํฌ๊ฒ ์ค์ํ์ง ์์ต๋๋ค)
๊ทธ๋ฆฌ๊ณ ์๋ ์ฝ๋์ ๊ฐ์ด build-deploy.yml ๋ด์ฉ์ ์์ฑํด์ค์๋ค
name: Deploy Flutter Web App to GitHub Pages
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.10.6' # ์ฌ์ฉํ๋ Flutter ๋ฒ์ ์ผ๋ก ๋ณ๊ฒฝ
- name: Install Dependencies
run: flutter pub get
- name: Build Web
run: flutter build web --release
- name: Add .nojekyll
run: echo > build/web/.nojekyll
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.MY_SECRET_KEY_NAME }} # repository์์ ์ฌ์ฉํ ์ํฌ๋ฆฟ ํค ์ด๋ฆ
publish_dir: build/web
publish_branch: gh-pages
์ฝ๋์ ๋ํด์ ๊ฐ๋จํ ์ค๋ช ํ๋ค๋ฉด
build-and-deploy ๋ด๋ถ
runs-on : ์คํ ํ๊ฒฝ
steps : ์๋ ๋ด์ฉ์ ์์ฐจ์ ์ผ๋ก ์คํ
steps ๋ด๋ถ
name : ์คํํ ๋ก์ง์ ์ด๋ฆ
uses : ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ฆ๊ณผ ๋ฒ์ ๋ช
์
with : ์ต์
์ค์
์ ๋๋ค.
์์ ๊ณผ์ ์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๋ค๋ฉด, ๋จผ์ ์ฐ๋ถํฌ์์ ๋ ํฌ์งํ ๋ฆฌ ์์ค๋ฅผ ๊ฐ์ ธ์จ๋ค์ ํ๋ฌํฐ์ ํ ์ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ web์ผ๋ก ๋น๋ํ ๋ค์ ghํ์ด์ง์ ๋ฐฐํฌํ๋๊ฒ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๋๋ค์ gh-pages๋ฅผ ํตํด ๋ฐฐํฌ๋ ์ ํฌ์ ์ฑ์ ๋ณผ์ ์๊ฒ ๋๋๊ฒ๋๋ค.
MY_SECRET_KEY_NAME ๊ฐ์ ๊ฒฝ์ฐ๋ ์ด๋ฆ์ ๋ง์๋๋ก ์ง์ ํด๋ ๋ฉ๋๋ค!
๋ค์ ํํธ์์ secret key์ ๋ํด ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ ์์ ์ผ๋ก ์๋ฃ๋์์ผ๋ฉด ๋ธ๋์น์ push๊ฐ ๋ ๋ ์๋์ผ๋ก ์ก์ ์ด ๋์๊ฐ๊ฒ ๋ ๊ฒ๋๋ค.
5. index.html ์์
์ฒ์์ github repository๋ฅผ ๋ง๋ค๋, ์ด๋ฆ์ด ๋ฐฐํฌํ ์น์ url์ ๋ค์ด๊ฐ๋ค๊ณ ํ์์ฃ ?
๊ทธ์ ๊ด๋ จํด์ index.html์ ์์ ํด์ค์ผํฉ๋๋ค.
๋ค๋ฅธ๊ฒ ์๋๋ผ base href์์ /<์์ ์ ๋ ์ํผํ ๋ฆฌ ์ด๋ฆ>/์ ๋ฃ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
<base href = "/<์์ ์ ๋ ํ์งํ ๋ฆฌ ์ด๋ฆ>/">
์์ ์ ์๋ฃํ๋ค, ํฐ๋ฏธ๋์ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ฃผ์ญ์๋ค.
flutter build web --release
์์ ๋ช ๋ น์ด๋ ๋ก์ปฌ ํ๊ฒฝ์์ web ๋น๋๋ฅผ ์๋ํ์ฌ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธํ๋ ๋ช ๋ น์ด์ ๋๋ค.
์ด ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด, build/web ์ด๋ผ๋ ํด๋๊ฐ ๋ง๋ค์ด์ง๋๋ฐ ์ด ํด๋๊ฐ ์ ๋๋ก ๋ง๋ค์ด์ก๋์ง ๊ผญ ํ์ธํด์ผํฉ๋๋ค.
6. repository secret key ์ค์
๊ฑฐ์ ๋ง๋ฐ์ง ๋จ๊ณ์ ๋๋ค.
์์ฑํ repository์์ build-deploy.yml ํ์ผ์์ ์ ๋ ฅํ๋ secret key๋ฅผ ์์ฑํด์ค์ผํฉ๋๋ค.
๋จผ์ , github์์ settings์ ๋ค์ด๊ฐ๋ค์, ์๋์ฌ์ง์ฒ๋ผ
Developer settings -> Tokens(classic) -> Generate new Token (classic)์ ๋๋ฌ์ ์๋ก์ด secretํค๋ฅผ ์์ฑํด์ค๋๋ค.
(์ฌ๊ธฐ์ secretํค ์ด๋ฆ์ ์๋ฌด๊ฑฐ๋ ํ์ ๋ ๊ด์ฐฎ์ต๋๋ค!)
๊ทธ๋ฐ ๋ค์, ์๋์ repo์ workflow๋ ๊ผญ ์ฒดํฌํด์ฃผ์ธ์.
secretํค๋ฅผ ์์ฑํ์ผ๋ฉด, ์์ฑ๋ secret key๋ฅผ ๋ณต์ฌํ๊ณ repository๋ก ๊ฐ์ settings๋ฅผ ๋๋ฌ์ค์๋ค.
๊ทธ๋ฐ ๋ค์, Secrets and variables / Actions ํญ์์ New repository secret์ ๋ง๋ค์ด์ค๋๋ค.
์ฌ๊ธฐ์ ๋ง๋๋ repository secret์ ์ด๋ฆ ๋ฐ๋์ build-deploy.yml ํ์ผ์ secrets.[repositroy secrets์ด๋ฆ]๊ณผ ์ผ์นํด์ผํฉ๋๋ค.
7. pages ์ค์ ๋ฐ ์น ๋ฐฐํฌ ํ์ธ
๋ง์ง๋ง ๋จ๊ณ์ ๋๋ค.
์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด repository settings์์ Pages ํญ์์
gh-pages, /(root)๋ก ์ ํ ํด์ฃผ๊ณ Save๋ฅผ ๋๋ฌ์ค์ผ ํฉ๋๋ค.
์ฌ๊ธฐ์ gh-pages๊ฐ ์๋ ๋ถ๋ค๋ ์์ํ
๋ฐ, ๊ทธ๋ฐ๊ฒฝ์ฐ์๋ ํ๋ฒ pr๋ก main์ mergeํ๋ฉด gh-pages๊ฐ ๋ฐ๊ฒ๋๋ค.
merge๋ฅผ ํ๊ณ ๋ gh-pages๊ฐ ์๋ฌ๋ค๋ฉด Actions์์ ์คํจํ ํญ๋ชฉ์ด ์๋์ง ์ดํด๋ด ์๋ค.
๋ณธ๋ก ์ผ๋ก ๋์ด์์ Save๋ฅผ ๋๋ฅธ๋ค๋ฉด github Actions๊ฐ ๋์๊ฐ๊ฒ ๋ฉ๋๋ค.
github Actions์ check ํ์๊ฐ ๋ฌ๋ค๋ฉด ์ด๋ ๊ฒ ์ ์์ ์ผ๋ก ๋ฐฐํฌ๊ฐ ๋์๋๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๋งํฌ๋ฅผ ๋๋ฌ๋ณด๋ฉด ์ด๋ ๊ฒ ์ ์์ ์ผ๋ก ๋ฐฐํฌ๊ฐ ๋๊ฒ์ ํ์ธํด๋ณผ์ ์๋ค์~
๊ธ์ด ์กฐ๊ธ ๊ธธ์๋ค์.
๋ชจ๋ ์ฆ๊ฑฐ์ด ๊ฐ๋ฐํ์ธ์~!