๋ค์ด๊ฐ๋ฉฐ
์ฌ๋ฌ ๋ฐฐํฌ ํ๋ก์ธ์ค ์ค Jenkins
๋ก Build
๋ ๊ฒฐ๊ณผ๋ฌผ์ SSH
์ฐ๊ฒฐ์ ํตํด ์ง์ ์๋ฒ์ ์ ๊ทผํ์ฌ ๋ฐฐํฌํ๋ ํ๋ก์ธ์ค์ ๋ํด ์์ฑํด๋ณด์์ต๋๋ค.
๋ณด์์ ์ด์๋ก ์ธํด ๊ถ์ฅํ๋ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ ์๋์ง๋ง, ์ฌ๋ฌ ๋ฐฐํฌ ๋ฐฉ์ ์ค ์ด๋ฐ ๋ฐฉ์๋ ์๋ค ๋ผ๋ ์ ์ ์์์ฃผ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
Process
๋จผ์ Process
๋ ์์ ๊ฐ์ต๋๋ค.
- ๊ฐ๋ฐ ์๋ฃ๋ ์ฝ๋๋ฅผ
git
์ ํตํด ์ ์ฅ์์push
ํฉ๋๋ค. gitlab
์push event
๋ฅผtrigger
ํ๋ฉฐ,push
๋ช ๋ น์ด ๊ฐ์ง๋๋ฉดjenkins
์webhook
์ ์ ์กํฉ๋๋ค.jenkins
๋gitlab
์ผ๋ก ๋ถํฐwebhook
์ ์์ ํ๊ฒ๋๋ฉดbuild
๋ฅผ ํ๊ฒ๋ฉ๋๋ค. ์ด๋ ์ค์ ํด๋์build process
์ ๋ฐ๋ผbuild
๊ฐ ์งํ๋ฉ๋๋ค.build
๊ฐ ์๋ฃ๋๋ฉดSSH
ํต์ ์ ํ์ฌAWS EC2
๋ก ์์ฑ๋server
์ ๊ฒฐ๊ณผ๋ฌผ์ ์ ์กํฉ๋๋ค.
Jenkins build Pipeline Setting
build setting
Gitlab Webhook Setting
๋จผ์ webhook
์ผ๋ก ์ฐ๋๋ gitlab repository
์ค์ ์ ํฉ๋๋ค.
Credentials๊ฐ Jenkins์ ์ค์ ๋์ด ์์ด์ผ gitlab์์ Webhook ์ ์ก์ ํ ๋์ ์ธ์ฆ์ด ๋๋ ๊ผญ ๋จผ์ ์ค์ ํด์ฃผ์ธ์ !
Gitlab Repository
๋ฅผ ์ค์ ํ์๋ค๋ฉด ๊ทธ ๋ค์ ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
Jenkins
์ build
๋งค๊ฐ๋ณ์๋ ํน์ Parameter
๊ฐ ์ ๋ฌ๋์์๋ ์คํ๋๋ ์กฐ๊ฑด์ ์๋ฏธ ํฉ๋๋ค.
gitlab repository
์์ develop
์ผ๋ก push
๋ commit
์ webhook
์ผ๋ก ๋ฐ์กํ ๋์ Jenkins
์์ ๊ฐ์งํ๊ธฐ ์ํด branch : develop
์ผ๋ก ์ค์ ํฉ๋๋ค. ์ฆ, Jenkins
์์๋ develop branch
์ ๊ดํ webhook
๋ง ๊ฐ์งํ๋ค๋ ์๋ฏธ์
๋๋ค.
๋น๋ ์ ๋ฐ ์ด๋ฒคํธ๋ฅผ ์ค์ ํฉ๋๋ค.
ํด๋น ์ค์ ์ Gitlab
์์ Webhook
์ผ๋ก ์ด๋ฒคํธ๋ฅผ ์ ์กํ ๋์ ์ด๋ป๊ฒ ํ์ฉํ ๊ฑด์ง์ ๋ํ ์ค์ ์
๋๋ค.
๋งจ ํ๋จ์ ๋ณด์๋ฉด Secret token
์์ฑ ์นธ์ด ์๋๋ฐ, ํด๋น ๊ฐ์ gitlab webhook
์ค์ ํ๋ฉด์์ secret token
์
๋ ฅ์นธ์ ๋ฃ์ด์ฃผ์๋ฉด ๋ฉ๋๋ค.
๊ทธ ํ Gitlab Repository
์ Webhook
๋ฉ๋ด๋ก ์ด๋ํ์ฌ URL
์๋ Jenkins Project URL
์ ์
๋ ฅํ๊ณ , Scret Token
์๋ ์์์ ์์ฑ๋ Secret Token
๊ฐ์ ๋ฃ์ด์ค๋๋ค.
์! ์ด๋ฌ๋ฉด Jenkins
์ Gitlab
์ Wehook
์ฐ๋์ด ์๋ฃ๋์์ต๋๋ค.
์ด์ Gitlab reposiory
์์ ํน์ branch
(์ฌ๊ธฐ์ develop
)์ git push
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด Jenkins
์ Webhook
์ ๋ฐ์กํ์ฌ ๋น๋๊ฐ ์์๋ฉ๋๋ค.
jenkins build
์ด ๋ถ๋ถ์ build
์ค์ ๋จ๊ณ์
๋๋ค.
ํด๋น ํ๋ก์ ํธ๋ node.js
๊ธฐ๋ฐ์ Vue.js
ํ๋ก์ ํธ์ด๊ธฐ ๋๋ฌธ์ Jenkins
์์ node.js
๋ฅผ ์ค์นํ ํ ์คํฌ๋ฆฝํธ๋ก build
๋ฅผ ์งํํด์ผํฉ๋๋ค.
Jenkins Market Place์
์ Node.js
๋ฅผ ์ค์นํด์ฃผ์ ํ ํด๋น Jenkins
ํ๋ก์ ํธ์์ Provide
์ค์ ์ ํฉ๋๋ค.
๊ทธ ํ Build
ํญ์์ Script
๋ฅผ ์์ฑํฉ๋๋ค.
npm install yarn -g
yarn cache clean
yarn install
yarn build:test
๊ทธ ํ chmod
๋ช
๋ น์ด๋ฅผ ํตํด ํด๋น direcoty์ ๊ถํ์ ์์ ํฉ๋๋ค. directory
์ ๊ถํ์ ์์ ํด์ฃผ์
์ผ SSH
ํต์ ์ ํตํด AWS EC2
์๋ฒ๋ก build
๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ฎ๊ธธ ์ ์์ต๋๋ค.
node.js
๊ธฐ๋ฐ์ Vue.js
ํ๋ก์ ํธ๋ฅผ build
ํ ํ ๊ฒฐ๊ณผ๋ฌผ์ธ dist
๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒ๊น์ง ์๋ฃ๋์์ต๋๋ค.
SSH setting
์ด์ ๋ SSH Plugin
์ ์ด์ฉํ์ฌ AWS EC2
์ ์ ์ํ ํ ํด๋น ๋๋ ํ ๋ฆฌ๋ฅผ ์ฎ๊ฒจ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋จผ์ ํด๋น AWS EC2
์ ์๋ฒ์ ์ ์์ ํ ํ ssh-keygen
๋ช
๋ น์ด๋ฅผ ํตํด rsa key
๋ฅผ ์์ฑํด์ค๋๋ค.
์์ฑ๋ rsa-key
๋ ์์ ํ๋ฉด์์ ๋ณด์ฌ์ง๋ ๊ฒ ์ฒ๋ผ ~/.ssh
๊ฒฝ๋ก์์ ํ์ธ ํ์ค ์ ์์ต๋๋ค.
$ vim id_rsa.pub
id_rsa.pub
ํ์ผ์ ํธ์งํ์ฌ ์์ฑ๋ ssh-key๊ฐ์ ํ์ธํฉ๋๋ค.
๊ทธ ํ Jenkins
๋ก ๋์์ SSH Server
์ค์ ์ ํฉ๋๋ค.
Hostname
:AWS EC2
์IP
์ฃผ์๋ฅผ ์ ๋ ฅํฉ๋๋ค.Username
:AWS EC2
์User
๋ฅผ ์ ๋ ฅํฉ๋๋ค. (์ฌ๊ธฐ์Ubuntu
)Remote Directory
: ์ ์ํ์์๋์ ์ฒซ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํฉ๋๋ค.use Password Authenticaton, or use a different Key
์ฒดํฌ ๋ฐ์ค๋ฅผ ์ ํ ํ ํKey
์ ๋ ฅ์นธ์ ์์์ ์์ฑํด๋์ssh-rsa
๊ฐ์ ์ ๋ ฅํฉ๋๋ค.
์ด๋ ๊ฒ ํด์ฃผ์๋ฉด Jenkins SSH Publish
์ค์ ์ด ์๋ฃ๋์์ต๋๋ค!! ๐๐
์ด์ Jenkins
์์ build
๊ฐ ์๋ฃ๋๋ฉด SSH
ํต์ ์ผ๋ก AWS EC2
์๋ฒ์ ์ ์ ํ ํ ์ค์ ํด๋์ ๊ฒฝ๋ก์ build
๊ฒฐ๊ณผ๋ฌผ์ ์ ์กํ๊ฒ๋ฉ๋๋ค !
Deploy
๋ชจ๋ ์ค์ ์ ๋ง์น ํ ํ๋ฒ develop branch
์ PUSH
๋ฅผ ํด๋ณด์์ต๋๋ค.
์ ์์ ์ผ๋ก build
๊ฐ ์๋ฃ๊ฐ ๋ ํ SSH
ํต์ ์ ํตํด file
์ ์ ์กํ log
๋ฅผ ํตํด ํ์ธํด๋ณด์ค ์ ์์ต๋๋ค! ๐๐
๋ง์น๋ฉฐ
์ฌ์ค ๋ณด์์์ ์ด์๋ก ์ธํด Jenkins
์์ SSH Publish
์ฌ์ฉ์ ๊ถ์ฅํ์ง ์์ต๋๋ค,,ใ
ใ
ํ์ง๋ง ์ด๋ ๊ฒ ๊ตฌ์ฑํด๋ณด๊ณ ์๋ฃ๋ฅผ ์ ๋ฆฌํด๋ณด๋ ์ด์ ๋ "์ด๋ฌํ ๋ฐฐํฌ ๋ฐฉ์๋ ์์๋ค."๋ผ๋ ๊ฒ์ ๊ฒฝํํด๋ณด๊ณ ์ถ์์ต๋๋ค. ๐บ๐บ