์๋ํ๋ ์์กด์ฑ ์ ๋ฐ์ดํธ๋ฅผ ์ํด ํ๋ฐํธ์๋ Renovate๋ฅผ ๋ง์คํฐํ์ธ์. ์น ํ๋ก์ ํธ์ ๋ณด์, ์ฑ๋ฅ, ๊ฐ๋ฐ์ ํจ์จ์ฑ์ ํฅ์์ํค์ธ์. ๊ธ๋ก๋ฒ ํ์ ์ํ ์ข ํฉ ๊ฐ์ด๋์ ๋๋ค.
ํ๋ฐํธ์๋ Renovate: ์ต์ ์น ๊ฐ๋ฐ์ ์ํ ์์กด์ฑ ์ ๋ฐ์ดํธ ๊ฐ์ํ
๋น ๋ฅด๊ฒ ๋ณํํ๋ ํ๋ฐํธ์๋ ๊ฐ๋ฐ ์ธ๊ณ์์, ์์กด์ฑ์ ์ต์ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์, ์ฑ๋ฅ ๋ฐ ์์ ์ฑ์ ์ ์งํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ํ์ง๋ง ์ด๋ฌํ ์ ๋ฐ์ดํธ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ํ๋ก์ธ์ค์ ๋๋ค. ์ด๋ ์์กด์ฑ ์ ๋ฐ์ดํธ๋ฅผ ์๋ํํ์ฌ ๊ฐ๋ฐ์๋ค์ด ํ์ ์ ์ธ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ง์คํ ์ ์๋๋ก ํด์ฃผ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ธ Renovate๊ฐ ๋ฑ์ฅํฉ๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋์์๋ ํ๋ฐํธ์๋ ํ๋ก์ ํธ์ Renovate๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ, ๊ทธ ์ด์ , ๊ตฌ์ฑ ๋ฐ ๊ธ๋ก๋ฒ ํ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํด๋ด ๋๋ค.
์๋ํ๋ ์์กด์ฑ ์ ๋ฐ์ดํธ๊ฐ ์ค์ํ ์ด์
Renovate์ ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ์ ์ดํด๋ณด๊ธฐ ์ ์, ์๋ํ๋ ์์กด์ฑ ์ ๋ฐ์ดํธ๊ฐ ์ ๊ทธ๋ ๊ฒ ์ค์ํ์ง ์ดํดํด ๋ณด๊ฒ ์ต๋๋ค:
- ๋ณด์: ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ์ทจ์ฝ์ ์ด ์์ฃผ ๋ฐ๊ฒฌ๋ฉ๋๋ค. ์์กด์ฑ์ ์ ์ํ๊ฒ ์ ๋ฐ์ดํธํ๋ฉด ์ด๋ฌํ ์ทจ์ฝ์ ์ ํจ์นํ๊ณ ์ ์ฌ์ ์ธ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณดํธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, Lodash์ ๊ฐ์ ์ธ๊ธฐ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ทจ์ฝ์ ์ ์ ์ํ๊ฒ ํด๊ฒฐ๋์ง ์์ผ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (XSS) ๊ณต๊ฒฉ์ ๋ ธ์ถ์ํฌ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ: ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๋ฒ์ ์๋ ์ข ์ข ์ฑ๋ฅ ๊ฐ์ ๋ฐ ๋ฒ๊ทธ ์์ ์ด ํฌํจ๋ฉ๋๋ค. ์์กด์ฑ์ ์ต์ ์ํ๋ก ์ ์งํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ต์ ์ ์ฑ๋ฅ์ผ๋ก ์คํ๋๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด React์ ๊ฒฝ์ฐ, ์ ๋ฐ์ดํธ๋ ๊ฐ์ DOM ๋ ๋๋ง ํ๋ก์ธ์ค์ ๋ํ ์ฑ๋ฅ ํฅ์์ ์์ฃผ ๊ฐ์ ธ์ต๋๋ค.
- ํธํ์ฑ: ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ํธํ์ฑ์ด ๊นจ์ง๋ ๋ณ๊ฒฝ(breaking changes)์ด ๋์ ๋ ์ ์์ต๋๋ค. ์ ๊ธฐ์ ์ธ ์์กด์ฑ ์ ๋ฐ์ดํธ๋ฅผ ํตํด ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ํ์ ํ๊ณ ํด๊ฒฐํ์ฌ ํ๋ก๋์ ์์ ์๊ธฐ์น ์์ ๋ฌธ์ ๋ฅผ ์๋ฐฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, AngularJs์์ Angular๋ก์ ์ ํ์๋ ์๋นํ ์ฝ๋ ๋ณ๊ฒฝ์ด ํ์ํ์ต๋๋ค. ๊ฐ ํ๋ ์์ํฌ์ ์์กด์ฑ์ ์ต์ ์ํ๋ก ์ ์งํ๋ฉด ์ ํ์ด ๋ ์ฌ์์ง๋๋ค.
- ๊ธฐ๋ฅ ๊ฐ์ฉ์ฑ: ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ต์ ๋ฒ์ ์ ์ข ์ข ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๊ธฐ๋ฅ์ ๋์ ํฉ๋๋ค. ์ต์ ์ํ๋ฅผ ์ ์งํ๋ฉด ์ด๋ฌํ ์๋ก์ด ๊ธฐ๋ฅ์ ํ์ฉํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ๊ฐ๋ฐ์ ์์ฐ์ฑ: ์์กด์ฑ ์ ๋ฐ์ดํธ๋ฅผ ์๋ํํ๋ฉด ๊ฐ๋ฐ์๋ค์ด ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋ฅผ ํ์ธํ๊ณ ํจํค์ง ๋ฒ์ ์ ์ ๋ฐ์ดํธํ๋ ์ง๋ฃจํ๊ณ ๋ฐ๋ณต์ ์ธ ์์ ์์ ๋ฒ์ด๋ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ์ ์ฝ๋ ์๊ฐ์ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ตฌ์ถํ๊ฑฐ๋ ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ๋ ๋ฑ ๋ ์ํฅ๋ ฅ ์๋ ์์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Renovate ์๊ฐ: ์๋ํ ์๋ฃจ์
Renovate๋ ์์กด์ฑ ์
๋ฐ์ดํธ๋ฅผ ์๋ํํ๋๋ก ์ค๊ณ๋ ๋ฌด๋ฃ ์คํ ์์ค ๋๊ตฌ์
๋๋ค. ํ๋ก์ ํธ์ ์์กด์ฑ ํ์ผ(์: package.json
, yarn.lock
, pom.xml
)์ ์ ๊ธฐ์ ์ผ๋ก ์ค์บํ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ ์
๋ฐ์ดํธ์ ๋ํ ํ ๋ฆฌํ์คํธ(๋๋ ๋ณํฉ ์์ฒญ)๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ์ด๋ฌํ ํ ๋ฆฌํ์คํธ์๋ ์
๋ฐ์ดํธ๋ ์์กด์ฑ ๋ฒ์ ๊ณผ ํจ๊ป ๋ฆด๋ฆฌ์ค ๋
ธํธ, ๋ณ๊ฒฝ ๋ก๊ทธ, ํ
์คํธ ๊ฒฐ๊ณผ๊ฐ ํฌํจ๋์ด ์์ด ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ๊ฒ ๊ฒํ ํ๊ณ ์น์ธํ ์ ์์ต๋๋ค.
Renovate๋ ๋ค์์ ํฌํจํ ๊ด๋ฒ์ํ ํจํค์ง ๊ด๋ฆฌ์์ ํ๋ซํผ์ ์ง์ํฉ๋๋ค:
- ์๋ฐ์คํฌ๋ฆฝํธ: npm, Yarn, pnpm
- ํ์ด์ฌ: pip, poetry
- ์๋ฐ: Maven, Gradle
- Go: Go ๋ชจ๋
- ๋์ปค: Dockerfiles
- ํ ๋ผํผ: Terraform ๋ชจ๋
- ๊ทธ๋ฆฌ๊ณ ํจ์ฌ ๋ ๋ง์ต๋๋ค!
Renovate๋ ๋ค์์ ํฌํจํ ๋ค์ํ ํ๊ฒฝ์์ ์คํํ ์ ์์ต๋๋ค:
- GitHub: GitHub ์ฑ์ผ๋ก ํตํฉ
- GitLab: GitLab Integration์ผ๋ก ํตํฉ
- Bitbucket: Bitbucket ์ฑ์ผ๋ก ํตํฉ
- Azure DevOps: ์์ฒด ํธ์คํ ์์ด์ ํธ๋ฅผ ํตํด
- ์์ฒด ํธ์คํ : Docker ์ปจํ ์ด๋ ๋๋ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์คํ
ํ๋ฐํธ์๋ ํ๋ก์ ํธ์ Renovate ์ค์ ํ๊ธฐ
Renovate์ ์ค์ ํ๋ก์ธ์ค๋ ์ฌ์ฉ ์ค์ธ ํ๋ซํผ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. GitHub, GitLab ๋ฐ ์์ฒด ํธ์คํ ํ๊ฒฝ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์์ธํ ์ค๋ช ํฉ๋๋ค:
GitHub
- Renovate GitHub ์ฑ ์ค์น: GitHub Marketplace์ Renovate GitHub ์ฑ ํ์ด์ง๋ก ์ด๋ํ์ฌ ์ํ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ค์นํฉ๋๋ค. ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ค์นํ๊ฑฐ๋ ํน์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
- Renovate ๊ตฌ์ฑ: Renovate๋ ํ๋ก์ ํธ์ ์์กด์ฑ ํ์ผ์ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ์์ฒด ๊ตฌ์ฑ์ ์ํ ์ด๊ธฐ ํ ๋ฆฌํ์คํธ๋ฅผ ์์ฑํฉ๋๋ค. ์ด ํ ๋ฆฌํ์คํธ์๋ ์ผ๋ฐ์ ์ผ๋ก Renovate์ ๋์์ ์ฌ์ฉ์ ์ ์ํ ์ ์๋
renovate.json
ํ์ผ์ด ํฌํจ๋ฉ๋๋ค. - ๊ตฌ์ฑ ์ฌ์ฉ์ ์ ์ (์ ํ ์ฌํญ):
renovate.json
ํ์ผ์ ์ฌ์ฉ์ ์ ์ํ์ฌ ์ ๋ฐ์ดํธ ์ผ์ , ํจํค์ง ๊ท์น ๋ฐ ๊ธฐํ ์ค์ ์ ์ ์ํ ์ ์์ต๋๋ค.
renovate.json
๊ตฌ์ฑ ์์:
{
"extends": ["config:base"],
"schedule": ["every weekday"],
"packageRules": [
{
"matchDepTypes": ["devDependencies"],
"automerge": true
}
]
}
์ด ๊ตฌ์ฑ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ํ์ฅํ๊ณ , ํ์ผ๋ง๋ค ์
๋ฐ์ดํธ๊ฐ ์คํ๋๋๋ก ์์ฝํ๋ฉฐ, devDependencies
์ ๋ํ ์
๋ฐ์ดํธ๋ฅผ ์๋์ผ๋ก ๋ณํฉํฉ๋๋ค.
GitLab
- Renovate GitLab Integration ์ค์น: Renovate GitLab Integration ํ์ด์ง๋ก ์ด๋ํ์ฌ ์ํ๋ ๊ทธ๋ฃน์ด๋ ํ๋ก์ ํธ์ ์ค์นํฉ๋๋ค.
- Renovate ๊ตฌ์ฑ: GitHub์ ์ ์ฌํ๊ฒ Renovate๋
renovate.json
ํ์ผ์ ํฌํจํ์ฌ ์์ฒด ๊ตฌ์ฑ์ ์ํ ์ด๊ธฐ ๋ณํฉ ์์ฒญ์ ์์ฑํฉ๋๋ค. - ๊ตฌ์ฑ ์ฌ์ฉ์ ์ ์ (์ ํ ์ฌํญ): ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ Renovate์ ๋์์ ์กฐ์ ํ๊ธฐ ์ํด
renovate.json
ํ์ผ์ ์ฌ์ฉ์ ์ ์ํฉ๋๋ค.
GitLab์ ๊ตฌ์ฑ ์ต์ ์ GitHub์ ๋์ผํฉ๋๋ค.
์์ฒด ํธ์คํ
- Docker ์ค์น: ์๋ฒ์ Docker๊ฐ ์ค์น๋์ด ์คํ ์ค์ธ์ง ํ์ธํฉ๋๋ค.
- Renovate Docker ์ปจํ
์ด๋ ์คํ: ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ Renovate Docker ์ปจํ
์ด๋๋ฅผ ์คํํฉ๋๋ค:
docker run -d --name renovate \ --restart always \ -e LOG_LEVEL=debug \ -e PLATFORM=github \ -e GITHUB_TOKEN=YOUR_GITHUB_TOKEN \ -e REPOSITORIES=your-org/your-repo \ renovate/renovate
YOUR_GITHUB_TOKEN
์repo
์ค์ฝํ๋ฅผ ๊ฐ์ง ๊ฐ์ธ ์ก์ธ์ค ํ ํฐ์ผ๋ก ๋ฐ๊พธ๊ณ ,your-org/your-repo
๋ฅผ ์ ๋ฐ์ดํธํ๋ ค๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ๋ฐ๊พธ์ธ์. GitLab์ ๊ฒฝ์ฐ, PLATFORM์ ๋ณ๊ฒฝํ๊ณ GITLAB_TOKEN์ ์ฌ์ฉํ์ธ์. - Renovate ๊ตฌ์ฑ: ํ๊ฒฝ ๋ณ์๋
config.js
ํ์ผ์ ์ฌ์ฉํ์ฌ Renovate๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์์ฒด ํธ์คํ ์ Renovate์ ํ๊ฒฝ ๋ฐ ๊ตฌ์ฑ์ ๋ํ ๋ ํฐ ์ ์ด๊ถ์ ์ ๊ณตํ์ง๋ง, ๋ ๋ง์ ์ ์ง ๊ด๋ฆฌ ๋ ธ๋ ฅ์ด ํ์ํฉ๋๋ค.
Renovate ๊ตฌ์ฑ: ์ฌ์ธต ๋ถ์
Renovate์ ๊ตฌ์ฑ์ ๋งค์ฐ ์ ์ฐํ์ฌ ํน์ ์๊ตฌ์ ๋ง๊ฒ ๋์์ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
ํ๋ฆฌ์
Renovate๋ ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค์ ๋ํ ํฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ์ ์ ๊ณตํ๋ ๋ค์ํ ํ๋ฆฌ์ ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ํ๋ฆฌ์ ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ํ์ฅํ๊ณ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค. ์ธ๊ธฐ ์๋ ํ๋ฆฌ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
config:base
: ๊ถ์ฅ ์ค์ ์ด ํฌํจ๋ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ์ ๊ณตํฉ๋๋ค.config:recommended
: ๋ ๊ณต๊ฒฉ์ ์ธ ์ ๋ฐ์ดํธ ์ ๋ต๊ณผ ์ถ๊ฐ ๊ฒ์ฌ๋ฅผ ํฌํจํฉ๋๋ค.config:js-lib
: ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ก์ ํธ์ ๋ง๊ฒ Renovate๋ฅผ ์ต์ ํํฉ๋๋ค.config:monorepo
: ๋ชจ๋ ธ๋ ํฌ ํ๋ก์ ํธ๋ฅผ ์ํด Renovate๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
ํ๋ฆฌ์
์ ํ์ฅํ๋ ค๋ฉด renovate.json
ํ์ผ์์ extends
์์ฑ์ ์ฌ์ฉํ์ธ์:
{
"extends": ["config:base", "config:js-lib"]
}
์ค์ผ์ค
schedule
์์ฑ์ ์ฌ์ฉํ์ฌ Renovate๊ฐ ์
๋ฐ์ดํธ๋ฅผ ํ์ธํด์ผ ํ๋ ์์ ์ ๋ํ ์ค์ผ์ค์ ์ ์ํ ์ ์์ต๋๋ค. ์ค์ผ์ค์ cron ํํ์์ ์ฌ์ฉํ์ฌ ์ ์๋ฉ๋๋ค.
์์:
["every weekday"]
: ํ์ผ๋ง๋ค Renovate๋ฅผ ์คํํฉ๋๋ค.["every weekend"]
: ์ฃผ๋ง๋ง๋ค Renovate๋ฅผ ์คํํฉ๋๋ค.["0 0 * * *"]
: ๋งค์ผ ์์ (UTC)์ Renovate๋ฅผ ์คํํฉ๋๋ค.
ํจํค์ง ๊ท์น
ํจํค์ง ๊ท์น์ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ํจํค์ง๋ ํจํค์ง ์ ํ์ ๋ํ ํน์ ์ ๋ฐ์ดํธ ์ ๋ต์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ ํน์ ํธํ์ฑ ์๊ตฌ ์ฌํญ์ด ์๋ ํจํค์ง๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ dependencies์ devDependencies์ ๋ค๋ฅธ ์ ๋ฐ์ดํธ ์ ๋ต์ ์ ์ฉํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
์์:
{
"packageRules": [
{
"matchDepTypes": ["devDependencies"],
"automerge": true,
"semanticCommits": "disabled"
},
{
"matchPackageNames": ["eslint", "prettier"],
"groupName": "eslint and prettier"
}
]
}
์ด ๊ตฌ์ฑ์ devDependencies
์ ๋ํ ์
๋ฐ์ดํธ๋ฅผ ์๋์ผ๋ก ๋ณํฉํ๊ณ (๊ฐ๋ฐ ์์กด์ฑ ๋ณ๊ฒฝ์ ์ข
์ข
์๋งจํฑ ์ปค๋ฐ์ด ํ์ํ์ง ์์ผ๋ฏ๋ก ์๋งจํฑ ์ปค๋ฐ์ ๋นํ์ฑํํ๊ณ ) eslint
์ prettier
์ ๋ํ ์
๋ฐ์ดํธ๋ฅผ ๋จ์ผ ํ ๋ฆฌํ์คํธ๋ก ๊ทธ๋ฃนํํฉ๋๋ค.
์๋ ๋ณํฉ(Automerge)
automerge
์์ฑ์ ์ฌ์ฉํ๋ฉด Renovate๊ฐ ์์ฑํ ํ ๋ฆฌํ์คํธ๋ฅผ ์๋์ผ๋ก ๋ณํฉํ ์ ์์ต๋๋ค. ์ด๋ ์์ ์ ์ด๊ณ ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ์ข์ ๊ฒ์ผ๋ก ์๋ ค์ง ์์กด์ฑ์ ์ ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ์๋ ๊ฒํ ์์ด ํธํ์ฑ์ด ๊นจ์ง๋ ๋ณ๊ฒฝ(breaking changes)์ ๋์
ํ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฏ๋ก automerge
๋ฅผ ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
automerge
๋ ์ ์ญ์ ์ผ๋ก ๋๋ ํจํค์ง ๊ท์น ๋ด์์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๋ฒ์ ๊ด๋ฆฌ
๋ฒ์ ๊ณ ์ (pinning)์ ๋ ผ๋์ ์ฌ์ง๊ฐ ์์ง๋ง ๋๋ก๋ ํ์ํ ์์กด์ฑ ๊ด๋ฆฌ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. Renovate๋ ๋ฒ์ ๊ณ ์ ์ ์๋์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด๋ Dockerfile์ ๋ค๋ฃฐ ๋ ํนํ ์ ์ฉํฉ๋๋ค.
์์:
{
"packageRules": [
{
"matchFileNames": ["Dockerfile"],
"pinVersions": true
}
]
}
์ด ๊ตฌ์ฑ์ Dockerfile์ ๋ฒ์ ์ ๊ณ ์ ํ๊ณ ๊ณ ์ ๋ ๋ฒ์ ์ ์๋์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
์๋งจํฑ ์ปค๋ฐ
Renovate๋ ํ ๋ฆฌํ์คํธ์ ๋ํ ์๋งจํฑ ์ปค๋ฐ์ ์์ฑํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์๋งจํฑ ์ปค๋ฐ์ ๋ณ๊ฒฝ์ ์ฑ๊ฒฉ์ ๋ํ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ํน์ ํ์์ ๋ฐ๋ฅด๋ฏ๋ก ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ฅผ ๋ ์ฝ๊ฒ ์ดํดํ๊ณ ์๋ํํ ์ ์์ต๋๋ค.
์๋งจํฑ ์ปค๋ฐ์ ํ์ฑํํ๋ ค๋ฉด semanticCommits
์์ฑ์ enabled
๋ก ์ค์ ํ์ธ์.
ํ๋ฐํธ์๋ ํ๋ก์ ํธ์์ Renovate ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
Renovate์ ์ด์ ์ ๊ทน๋ํํ๊ณ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์ต์ํํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด์ธ์:
- ๊ธฐ๋ณธ ๊ตฌ์ฑ์ผ๋ก ์์ํ๊ธฐ:
config:base
ํ๋ฆฌ์ ์ผ๋ก ์์ํ์ฌ ํน์ ์๊ตฌ์ ๋ง๊ฒ ์ ์ง์ ์ผ๋ก ์ฌ์ฉ์ ์ ์ํ์ธ์. ํ ๋ฒ์ ๋๋ฌด ๋ง์ ๋ณ๊ฒฝ์ ํ๋ฉด ๋ฌธ์ ํด๊ฒฐ์ด ์ด๋ ค์์ง ์ ์์ต๋๋ค. - ํจํค์ง ๊ท์น์ ์ฌ์ฉํ์ฌ ๋ค์ํ ์์กด์ฑ ์ ํ ๊ด๋ฆฌํ๊ธฐ: dependencies, devDependencies ๋ฐ ๊ธฐํ ํจํค์ง ์ ํ์ ๋ํ ํน์ ์ ๋ฐ์ดํธ ์ ๋ต์ ์ ์ํ์ธ์. ์ด๋ฅผ ํตํด ๊ฐ ์์กด์ฑ ์ ํ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ Renovate์ ๋์์ ์กฐ์ ํ ์ ์์ต๋๋ค.
- ์๋ ๋ณํฉ์ ์ ์คํ๊ฒ ํ์ฑํํ๊ธฐ: ์์ ์ ์ด๊ณ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ์ข์ ๊ฒ์ผ๋ก ์๋ ค์ง ์์กด์ฑ์ ๋ํด์๋ง ์๋ ๋ณํฉ์ ํ์ฑํํ์ธ์. ์๋ํ๋ ๋ณํฉ์ด ํธํ์ฑ์ด ๊นจ์ง๋ ๋ณ๊ฒฝ์ ๋์ ํ์ง ์๋๋ก ๋ฉด๋ฐํ ๋ชจ๋ํฐ๋งํ์ธ์.
- ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์ ์ผ์นํ๋ ์ค์ผ์ค ๊ตฌ์ฑํ๊ธฐ: ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ๋ฐฉํดํ์ง ์์ผ๋ฉด์ ์ ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธ๋ฅผ ๊ฒํ ํ๊ณ ์น์ธํ ์ ์๋ ์ค์ผ์ค์ ์ ํํ์ธ์.
- Renovate ํ๋ ๋ชจ๋ํฐ๋งํ๊ธฐ: ์ ๊ธฐ์ ์ผ๋ก Renovate์ ๋ก๊ทธ์ ํ ๋ฆฌํ์คํธ๋ฅผ ํ์ธํ์ฌ ๋ฌธ์ ๋ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ์ธ์.
- Renovate๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๊ธฐ: ์ต์ ๊ธฐ๋ฅ๊ณผ ๋ฒ๊ทธ ์์ ์ ํ์ฉํ๋ ค๋ฉด ์ต์ ๋ฒ์ ์ Renovate๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ์ธ์.
- ์ฒ ์ ํ๊ฒ ํ ์คํธํ๊ธฐ: Renovate๊ฐ ์ ๋ฐ์ดํธ๋ฅผ ๋์ง๋ง ํ ์คํธ๋ ์ฌ์ ํ ์ค์ํฉ๋๋ค. ์๊ธฐ์น ์์ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํ๊ธฐ ์ํด ๊ฐ๋ ฅํ ํ ์คํธ ์ ๋ต(๋จ์, ํตํฉ, ์๋ํฌ์๋)์ด ๋ง๋ จ๋์ด ์๋์ง ํ์ธํ์ธ์.
- ํ๊ณผ ํ๋ ฅํ๊ธฐ: ๋ชจ๋ ์ฌ๋์ด ๋์ผํ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋๋ก Renovate์ ๊ตฌ์ฑ ๋ฐ ์ ๋ฐ์ดํธ ์ ๋ต์ ๋ํด ํ๊ณผ ๋ ผ์ํ์ธ์. ์ด๋ฌํ ํ๋ ฅ์ ์ ๊ทผ ๋ฐฉ์์ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ Renovate๊ฐ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉ๋๋๋ก ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฌธ์ ํด๊ฒฐ
Renovate๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ด์ง๋ง ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ๋๋ฌด ๋ง์ ํ ๋ฆฌํ์คํธ: Renovate๋ ๋๋๋ก ๋ง์ ์์ ํ ๋ฆฌํ์คํธ๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ, ํนํ ์์กด์ฑ์ด ๋ง์ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๊ทธ๋ ์ต๋๋ค. ์ด๋ฅผ ์ํํ๋ ค๋ฉด ํจํค์ง ๊ท์น์ ์ฌ์ฉํ์ฌ ๊ด๋ จ ํจํค์ง์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ๊ทธ๋ฃนํํ๊ณ ํ์ ์ ๋ฐ์ดํธ ๊ฒํ ๋ฅ๋ ฅ์ ๋ง๋ ์ค์ผ์ค์ ๊ตฌ์ฑํ์ธ์.
- ํธํ์ฑ์ด ๊นจ์ง๋ ๋ณ๊ฒฝ(Breaking changes): Renovate๊ฐ ์ ๋ฐ์ดํธ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ค ๋ ธ๋ ฅํ์ง๋ง, ํธํ์ฑ์ด ๊นจ์ง๋ ๋ณ๊ฒฝ์ ์ฌ์ ํ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ์ ์ํฅ์ ์ต์ํํ๋ ค๋ฉด ์๋ ๋ณํฉ์ ์ ์คํ๊ฒ ํ์ฑํํ๊ณ , ์ ๋ฐ์ดํธ๋ฅผ ์ฒ ์ ํ ํ ์คํธํ๋ฉฐ, ๊ธฐ๋ฅ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ๋ฒ์ ์ ์์กด์ฑ์ ์ ์ง์ ์ผ๋ก ๋ฐฐํฌํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
- ๊ตฌ์ฑ ๋ณต์ก์ฑ: Renovate์ ๊ตฌ์ฑ์ ํนํ ํฌ๊ณ ๋ณต์กํ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๋ณต์กํ ์ ์์ต๋๋ค. ๊ตฌ์ฑ์ ๋จ์ํํ๋ ค๋ฉด ๊ธฐ๋ณธ ํ๋ฆฌ์ ์ผ๋ก ์์ํ์ฌ ํ์์ ๋ง๊ฒ ์ ์ง์ ์ผ๋ก ์ฌ์ฉ์ ์ ์ํ๊ณ ๊ตฌ์ฑ์ ๋ช ํํ๊ฒ ๋ฌธ์ํํ์ธ์.
- ๋ฒ์ ์ถฉ๋: ๋๋๋ก ์ฌ๋ฌ ํจํค์ง๊ฐ ๋์ผํ ์์กด์ฑ์ ์ถฉ๋ํ๋ ๋ฒ์ ์ ์์กดํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. Renovate๊ฐ ์ด๋ฌํ ์ถฉ๋์ ์๋์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ๋ ์์ง๋ง ์๋ ๊ฐ์ ์ด ํ์ํ ์ ์์ต๋๋ค. ํจํค์ง ๋ฒ์ ๊ณผ ์ฌ์ฉ ๊ฐ๋ฅํ ์ ๋ฐ์ดํธ๋ฅผ ํ์ธํ๊ณ ๊ฐ๋ฅํ๋ฉด ํจํค์ง๋ค์ด ํธํ๋๋ ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ์กฐ์ ํ์ธ์.
Renovate์ CI/CD
Renovate๋ CI/CD(์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ) ํ์ดํ๋ผ์ธ๊ณผ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค. ๊ฐ Renovate ํ ๋ฆฌํ์คํธ๋ CI/CD ํ์ดํ๋ผ์ธ์ ํธ๋ฆฌ๊ฑฐํ์ฌ ํ ์คํธ๋ฅผ ์คํํ๊ณ ๋ค๋ฅธ ๊ฒ์ฌ๋ฅผ ์ํํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ๋ฐ์ดํธ๊ฐ ๋ฉ์ธ ๋ธ๋์น์ ๋ณํฉ๋๊ธฐ ์ ์ ์ฒ ์ ํ ํ ์คํธ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
Renovate ํ ๋ฆฌํ์คํธ์ ๋ํด CI/CD ํ์ดํ๋ผ์ธ์ด ์คํจํ๋ฉด ์คํจ ์์ธ์ ์กฐ์ฌํ๊ณ ์ ๋ฐ์ดํธ๋ฅผ ์น์ธํ๊ธฐ ์ ์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ธ์.
๊ฒฐ๋ก
Renovate๋ ์ต์ ํ๋ฐํธ์๋ ๊ฐ๋ฐ์ ์์ด ๊ท์คํ ๋๊ตฌ๋ก, ํ์ด ์์กด์ฑ ์ ๋ฐ์ดํธ๋ฅผ ์๋ํํ๊ณ , ๋ณด์์ ๊ฐ์ ํ๋ฉฐ, ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ํฅ์์ํฌ ์ ์๋๋ก ํฉ๋๋ค. ๊ตฌ์ฑ ์ต์ ์ ์ดํดํ๊ณ , ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉฐ, ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ์ผ๋ก์จ Renovate๋ฅผ ํ์ฉํ์ฌ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ์ํํ๊ณ ๋ ๊ฒฌ๊ณ ํ๊ณ ์์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์๊ฒ ์์ํ๊ณ , ์ ์ง์ ์ผ๋ก ์ฌ์ฉ์ ์ ์ํ๋ฉฐ, ํ๊ณผ ํ๋ ฅํ์ฌ Renovate๊ฐ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉ๋๋๋ก ํ์ธ์. Renovate์ ๊ฐ์ ๋๊ตฌ๋ก ์๋ํ๋ ์์กด์ฑ ์ ๋ฐ์ดํธ๋ฅผ ์์ฉํ๋ ๊ฒ์ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ๋ ์์ ํ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ฉฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ์น ์ํ๊ณ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์์ด ์ค์ํ ๋จ๊ณ์ ๋๋ค.