들어가며

안녕하세요~ 오늘은 자동적으로 버젼을 관리해주는 renovate 에 대해 알아보도록 해보겠습니다.
소프트웨어를 운영하다보면 여러가지 라이브러리들을 사용하게 되고, 관리하는 라이브러리들이 점점 많아지게 되는데요.
아무래도 소프트웨어를 지속적으로 운영하기 위해서는 버젼관리가 항상 필수적으로 요구되는 사항입니다.
우리는 버젼관리 에 대한 자동화를 통해 조금 더 원활하게 버젼관리를 진행하고, 매번 업데이트되는 사항들을 받아보는 것을 기반으로 Pull request 까지 자동 생성하게끔 하는 것이 renovate 를 사용하는 목적이라고 볼 수 있겠습니다.
Renovate란?

Renovate는 오픈 소스 도구로, GitHub, GitLab, Bitbucket과 같은 다양한 플랫폼에서 의존성의 자동 업데이트를 지원합니다.
이 도구는 프로젝트의 package.json, Gemfile, pom.xml 등 다양한 설정 파일을 분석하여 필요한 업데이트를 자동으로 제안하고, 이를 Pull Request 형태로 생성합니다.
주요 기능
그래서 주요한 기능에 대해 먼저 알아볼 것인데요. Renovate 에서 제공하는 주요 기능들은 아래와 같습니다.
크게 4가지 주요한 기능들이 아주 중요한 포인트라고 볼 수 있어요.
- 자동 업데이트
- Renovate는 다양한 패키지 매니저(예: npm, Yarn, Maven 등)를 지원하여 프로젝트의 의존성을 자동으로 확인하고, 최신 버전을 제안합니다.
- 각 Pull Request는 업데이트된 버전의 세부 정보와 변경 로그를 포함하여 개발자가 쉽게 이해할 수 있도록 합니다.
- 스케줄링
- 사용자 맞춤형 스케줄을 설정하여 업데이트 빈도를 조정할 수 있습니다. 예를 들어, 매주 월요일마다 업데이트를 확인하도록 설정할 수 있습니다.
- 보안 취약점 탐지
- Renovate는 보안 취약점이 발견된 패키지를 자동으로 감지하여 최신 안정 버전으로 업데이트합니다. 이는 프로젝트의 보안을 크게 강화하는 데 기여합니다.
- 세부 설정 옵션
- Renovate는 다양한 설정을 통해 업데이트 방식과 조건을 조정할 수 있습니다. 예를 들어, 특정 라이브러리는 항상 최신 버전으로 업데이트하도록 설정하거나, 메이저 버전 업그레이드는 수동으로 처리하도록 설정할 수 있습니다.
적용 예시
먼저 k8s 기반으로 self hosting 하는 예시를 들어볼까 합니다.
아무래도 회사내 시스템에 적용하는 것을 목표로 한다면, public github 보다는 enterprise github 혹은 gitlab 을 사용할 가능성이 높으니까요
apiVersion: batch/v1
kind: CronJob
metadata:
name: renovate
spec:
schedule: '@hourly' # 실행 주기 설정
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
containers:
- name: renovate
image: renovate/renovate:latest
args:
- user/repo
env:
- name: LOG_LEVEL
value: debug
envFrom:
- secretRef:
name: renovate-env
restartPolicy: Never
위와 같이 기본적인 cronjob 을 생성해주고, 얼마정도의 주기로 실행해줄 지를 적용합니다.
그 다음 인증정보를 채워주는 secret 만 등록해주면 되는데요~!
apiVersion: v1
kind: Secret
metadata:
name: renovate-env
type: Opaque
stringData:
RENOVATE_GITHUB_COM_TOKEN: 'any-personal-user-token-for-github-com-for-fetching-changelogs'
# You can set RENOVATE_AUTODISCOVER to true to run Renovate on all repos you have push access to
RENOVATE_AUTODISCOVER: 'false'
RENOVATE_ENDPOINT: 'https://github.company.com/api/v3'
RENOVATE_GIT_AUTHOR: 'Renovate Bot <bot@renovateapp.com>'
RENOVATE_PLATFORM: 'github'
RENOVATE_TOKEN: 'your-github-enterprise-renovate-user-token'
이런식으로 사외 github 에서 change log 를 가져올 github access token 과 사내에서 사용되는 github token 을 발급받아 지정해주면 됩니다.
그렇게 되면, 자동으로 renovate 는 돌게 되고,
sample repository
아무래도 사내 github 을 가져올 수는 없으니, 공개 github 에 적용되어 있는 제 예시 repository 와 함께 샘플로 남겨드립니다 ㅎㅎ
https://github.com/huisam/spring-observability/blob/main/renovate.json
spring-observability/renovate.json at main · huisam/spring-observability
Playground for spring observability based on opentelemetry - huisam/spring-observability
github.com
마무리하며

Renovate는 소프트웨어 개발에서 의존성 관리를 혁신적으로 변화시키는 도구입니다.
자동화된 업데이트, 보안 관리, 유연한 설정 옵션 등을 통해 개발자는 코드의 품질을 유지하고, 프로젝트의 안전성을 강화할 수 있습니다.
더 이상 수동으로 의존성을 관리할 필요 없이, Renovate를 통해 효율적인 개발 환경을 구축해보시면 좋겠네요 ㅎㅎ
참고
Renovate Docs
'Developer > Observability' 카테고리의 다른 글
Observability - Integration with spring boot (3) | 2024.08.30 |
---|---|
Observability - Concept with grafana example (feat. Prometheus, Tempo, Loki) (0) | 2024.07.29 |
들어가며

안녕하세요~ 오늘은 자동적으로 버젼을 관리해주는 renovate 에 대해 알아보도록 해보겠습니다.
소프트웨어를 운영하다보면 여러가지 라이브러리들을 사용하게 되고, 관리하는 라이브러리들이 점점 많아지게 되는데요.
아무래도 소프트웨어를 지속적으로 운영하기 위해서는 버젼관리가 항상 필수적으로 요구되는 사항입니다.
우리는 버젼관리 에 대한 자동화를 통해 조금 더 원활하게 버젼관리를 진행하고, 매번 업데이트되는 사항들을 받아보는 것을 기반으로 Pull request 까지 자동 생성하게끔 하는 것이 renovate 를 사용하는 목적이라고 볼 수 있겠습니다.
Renovate란?

Renovate는 오픈 소스 도구로, GitHub, GitLab, Bitbucket과 같은 다양한 플랫폼에서 의존성의 자동 업데이트를 지원합니다.
이 도구는 프로젝트의 package.json, Gemfile, pom.xml 등 다양한 설정 파일을 분석하여 필요한 업데이트를 자동으로 제안하고, 이를 Pull Request 형태로 생성합니다.
주요 기능
그래서 주요한 기능에 대해 먼저 알아볼 것인데요. Renovate 에서 제공하는 주요 기능들은 아래와 같습니다.
크게 4가지 주요한 기능들이 아주 중요한 포인트라고 볼 수 있어요.
- 자동 업데이트
- Renovate는 다양한 패키지 매니저(예: npm, Yarn, Maven 등)를 지원하여 프로젝트의 의존성을 자동으로 확인하고, 최신 버전을 제안합니다.
- 각 Pull Request는 업데이트된 버전의 세부 정보와 변경 로그를 포함하여 개발자가 쉽게 이해할 수 있도록 합니다.
- 스케줄링
- 사용자 맞춤형 스케줄을 설정하여 업데이트 빈도를 조정할 수 있습니다. 예를 들어, 매주 월요일마다 업데이트를 확인하도록 설정할 수 있습니다.
- 보안 취약점 탐지
- Renovate는 보안 취약점이 발견된 패키지를 자동으로 감지하여 최신 안정 버전으로 업데이트합니다. 이는 프로젝트의 보안을 크게 강화하는 데 기여합니다.
- 세부 설정 옵션
- Renovate는 다양한 설정을 통해 업데이트 방식과 조건을 조정할 수 있습니다. 예를 들어, 특정 라이브러리는 항상 최신 버전으로 업데이트하도록 설정하거나, 메이저 버전 업그레이드는 수동으로 처리하도록 설정할 수 있습니다.
적용 예시
먼저 k8s 기반으로 self hosting 하는 예시를 들어볼까 합니다.
아무래도 회사내 시스템에 적용하는 것을 목표로 한다면, public github 보다는 enterprise github 혹은 gitlab 을 사용할 가능성이 높으니까요
apiVersion: batch/v1
kind: CronJob
metadata:
name: renovate
spec:
schedule: '@hourly' # 실행 주기 설정
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
containers:
- name: renovate
image: renovate/renovate:latest
args:
- user/repo
env:
- name: LOG_LEVEL
value: debug
envFrom:
- secretRef:
name: renovate-env
restartPolicy: Never
위와 같이 기본적인 cronjob 을 생성해주고, 얼마정도의 주기로 실행해줄 지를 적용합니다.
그 다음 인증정보를 채워주는 secret 만 등록해주면 되는데요~!
apiVersion: v1
kind: Secret
metadata:
name: renovate-env
type: Opaque
stringData:
RENOVATE_GITHUB_COM_TOKEN: 'any-personal-user-token-for-github-com-for-fetching-changelogs'
# You can set RENOVATE_AUTODISCOVER to true to run Renovate on all repos you have push access to
RENOVATE_AUTODISCOVER: 'false'
RENOVATE_ENDPOINT: 'https://github.company.com/api/v3'
RENOVATE_GIT_AUTHOR: 'Renovate Bot <bot@renovateapp.com>'
RENOVATE_PLATFORM: 'github'
RENOVATE_TOKEN: 'your-github-enterprise-renovate-user-token'
이런식으로 사외 github 에서 change log 를 가져올 github access token 과 사내에서 사용되는 github token 을 발급받아 지정해주면 됩니다.
그렇게 되면, 자동으로 renovate 는 돌게 되고,
sample repository
아무래도 사내 github 을 가져올 수는 없으니, 공개 github 에 적용되어 있는 제 예시 repository 와 함께 샘플로 남겨드립니다 ㅎㅎ
https://github.com/huisam/spring-observability/blob/main/renovate.json
spring-observability/renovate.json at main · huisam/spring-observability
Playground for spring observability based on opentelemetry - huisam/spring-observability
github.com
마무리하며

Renovate는 소프트웨어 개발에서 의존성 관리를 혁신적으로 변화시키는 도구입니다.
자동화된 업데이트, 보안 관리, 유연한 설정 옵션 등을 통해 개발자는 코드의 품질을 유지하고, 프로젝트의 안전성을 강화할 수 있습니다.
더 이상 수동으로 의존성을 관리할 필요 없이, Renovate를 통해 효율적인 개발 환경을 구축해보시면 좋겠네요 ㅎㅎ
참고
Renovate Docs
'Developer > Observability' 카테고리의 다른 글
Observability - Integration with spring boot (3) | 2024.08.30 |
---|---|
Observability - Concept with grafana example (feat. Prometheus, Tempo, Loki) (0) | 2024.07.29 |