name: Deploy Next.js to Home Server run-name: ${{ gitea.actor }} is deploying Blog ๐Ÿš€ # 1. ์–ธ์ œ ์‹คํ–‰ํ• ๊นŒ์š”? -> main ๋ธŒ๋žœ์น˜์— ์ฝ”๋“œ๊ฐ€ ํ‘ธ์‹œ๋  ๋•Œ on: push: branches: - main jobs: build-and-deploy: # 2. ๋ˆ„๊ฐ€ ์‹คํ–‰ํ• ๊นŒ์š”? -> ์•„๊นŒ ์„ค์ •ํ•œ 'home-server' ๋ผ๋ฒจ์„ ๊ฐ€์ง„ Runner๋งŒ ์‹คํ–‰! runs-on: blog-frontend steps: # ๋‹จ๊ณ„ 1: Gitea ์ €์žฅ์†Œ์—์„œ ์ตœ์‹  ์ฝ”๋“œ๋ฅผ ๋‚ด๋ ค๋ฐ›์Šต๋‹ˆ๋‹ค. - name: Check out repository code uses: actions/checkout@v3 # ๋‹จ๊ณ„ 2: ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. # docker.sock์„ ๊ณต์œ ํ–ˆ์œผ๋ฏ€๋กœ, Runner ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ docker ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด # ์‹ค์ œ๋กœ๋Š” ํ˜ธ์ŠคํŠธ(VM)์˜ ๋„์ปค ๋ฐ๋ชฌ์ด ์ผ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. - name: Build Docker Image run: | echo "Building Docker image..." docker build \ --build-arg NEXT_PUBLIC_API_URL=https://blogserver.wypark.me \ -t blog-frontend:latest . # ๋‹จ๊ณ„ 3: ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„๊ณ  ์ƒˆ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. - name: Deploy Container run: | echo "Deploying new container..." # ๊ธฐ์กด์— ๋Œ๊ณ  ์žˆ๋Š” 'blog-frontend' ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ค‘์ง€ํ•˜๊ณ  ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. # (|| true๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚˜๋„ ๋ฌด์‹œํ•˜๊ณ  ๋‹ค์Œ ์ค„๋กœ ๋„˜์–ด๊ฐ€๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค) docker stop blog-frontend || true docker rm blog-frontend || true # ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. # -d: ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰ # -p 3005:3000: ํ˜ธ์ŠคํŠธ์˜ 3005๋ฒˆ ํฌํŠธ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ 3000๋ฒˆ ํฌํŠธ์— ์—ฐ๊ฒฐ (NPM์šฉ) # --restart unless-stopped: ์„œ๋ฒ„ ์žฌ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹คํ–‰ docker run -d \ --name blog-frontend \ --restart unless-stopped \ -p 3005:3000 \ -e NEXT_PUBLIC_API_URL=https://blogserver.wypark.me \ blog-frontend:latest # ๋‹จ๊ณ„ 4: ๋นŒ๋“œ ๊ณผ์ •์—์„œ ์ƒ๊ธด ์ž„์‹œ ์ด๋ฏธ์ง€๋“ค์„ ์ฒญ์†Œํ•ฉ๋‹ˆ๋‹ค. (์šฉ๋Ÿ‰ ๊ด€๋ฆฌ) - name: Cleanup Old Images run: | docker image prune -f