Forgejo v16.0 출시 — 알림·PR 리뷰·Actions 기능 확장
4 days ago
14
- 2026년 7월 16일 출시된 Forgejo v16.0은 저장소별 알림 제어, 마이그레이션 진행률, 풀 리퀘스트 리뷰, Actions 및 API 기능을 확장함
- Git 미러의 HTTP 리디렉션을 차단해 SSRF 방어를 강화했으며, 이름이나 소유자가 바뀐 원격 저장소는 미러 주소를 직접 갱신해야 함
- 컨테이너에서 역방향 프록시 인증을 사용한다면 신뢰할 프록시 주소 범위를 명시해야 하며, 기본 웹 포트가 신뢰할 수 없는 네트워크에 노출된 일부 기존 구성은 더 이상 동작하지 않음
- 여러 줄 리뷰와 git blame --reverse 기반 댓글 위치 추적, Actions 실행 우선순위, JWT 기반 Authorized Integrations, 워크플로 로그·아티팩트·취소 API가 추가됨
- v16.0은 비 LTS 릴리스로 2026년 10월 29일까지 지원되며, 업그레이드 전에 전체 백업을 만들고 모든 호환성 변경을 확인해야 함
출시와 업그레이드
호환성 변경과 보안 강화
-
Git 미러의 SSRF 방어
- [migrations].ALLOWED_DOMAINS, LOCKED_DOMAINS, ALLOW_LOCALNETWORKS가 일부 예외 상황에서 제대로 적용되지 않던 문제를 수정함
- Git이 HTTP(S) 저장소 접근 중 리디렉션을 따라가 설정을 우회하지 못하도록 http.followRedirects=false 를 적용함
- 이름이 바뀌었거나 새 소유자에게 이전된 원격 Forgejo 저장소는 리디렉션이 오류로 처리되므로, 기존 미러를 새 저장소 주소로 갱신해야 함
-
아바타 EXIF 제거 기능 삭제
- v13.0에서 추가한 아바타 이미지의 EXIF 메타데이터 제거 기능은 AGPL 라이브러리를 잘못 사용한 라이선스 문제로 삭제됨
- 다른 구현 방식을 검토하는 동안 해당 기능을 제거해 라이선스 준수 상태를 회복함
-
컨테이너의 신뢰할 프록시 설정
- 기존 Forgejo 컨테이너는 REVERSE_PROXY_TRUSTED_PROXIES = *를 기본값으로 사용함
- 다음 조건이 모두 충족되면 승인되지 않은 사용자가 X-WebAuth-User 헤더를 이용해 다른 사용자를 가장할 수 있었음
- Docker 또는 Podman 기반 컨테이너로 배포함
- [service].ENABLE_REVERSE_PROXY_AUTHENTICATION=true로 설정함
- [security].REVERSE_PROXY_TRUSTED_PROXIES의 기본값 *를 변경하지 않음
- 기본 :3000 웹 포트가 신뢰할 수 없는 네트워크에 노출돼 인증 역방향 프록시를 우회할 수 있음
- v16은 이런 구성의 역방향 프록시 설정을 더 이상 따르지 않으므로, 트래픽이 들어오는 신뢰할 프록시 주소 범위를 명시해야 함
- 환경 변수 설정 예시는 FORGEJO__security__REVERSE_PROXY_TRUSTED_PROXIES=127.0.0.0/8,::1/128,172.16.X.X/X임
- app.ini에서는 [security] 아래 REVERSE_PROXY_TRUSTED_PROXIES에 같은 주소 목록을 설정함
저장소와 조직 사용성
- 저장소 알림을 이슈(Issues), 풀 리퀘스트(Pull requests), 릴리스(Releases) 세 범주로 나눠 구독할 수 있음
- 재설계된 알림 백엔드는 앞으로 더 세밀한 설정을 지원할 기반이 됨
- 지나치게 많은 옵션을 노출하지 않으면서 사용자에게 알림 제어권을 제공하는 것이 목표임
- 저장소 마이그레이션 화면은 원본의 이슈와 풀 리퀘스트를 배치 단위로 옮기는 진행률을 표시해 장시간 작업이 멈췄는지 확인할 수 있음
- 기본 배치 크기는 45개이며, 진행률이 표시되는 최소 항목 수도 45개임
- 전체 크기가 필요하지 않은 위치에는 두 가지 축소 아바타를 생성해 대역폭 사용량과 로딩 시간을 줄임
- 조직 구성원 목록에서 직접 대화상자를 열어 새 구성원을 추가하고 한 번에 여러 팀에 배정할 수 있음
- Git이 수신 객체의 여러 불일치를 검사하고 거부해 저장소가 불일치하거나 손상된 상태가 되는 것을 방지함
- 백엔드 저장소에는 Git 예제 훅 파일을 더 이상 생성하지 않으며, 인스턴스 공통 Git 훅도 저장소마다 복제하지 않고 중앙에 보관함
- 저장소당 약 20KiB를 절약함
- 기존 저장소의 예제 및 중복 자동 생성 파일은 업그레이드 가이드에 따라 삭제할 수 있음
- 저장소 기능을 더 활성화하라는 안내가 신규 사용자에게 보이지 않던 v7.0.0 이후의 버그를 수정하고, 안내를 끄는 설정도 찾기 쉽게 바꿈
- “Enable more” 안내는 관리자나 저장소 소유자가 일부 저장소 기능을 명시적으로 비활성화한 경우에만 나타남
풀 리퀘스트와 코드 리뷰
- 풀 리퀘스트 페이지의 커밋 목록을 더 읽기 쉽고 화면 크기에 잘 대응하는 새 레이아웃으로 변경함
- 현재는 풀 리퀘스트 페이지에만 적용되며 다른 커밋 목록 화면으로 점진적으로 확대할 계획임
- 변경된 여러 줄을 하나의 리뷰 댓글에 연결하는 다중 행 리뷰를 지원함
- Shift를 누른 상태에서 첫 행 옆의 더하기 버튼을 누르고 마지막 행까지 드래그하면 선택한 행들이 한 댓글에 연결됨
- 리뷰 댓글이 잘못된 diff나 화면 위치에 나타나거나 diff 연결을 잃던 문제를 수정함
- 기존 git blame은 댓글 대상 코드가 이후 커밋에서 이동하면 위치를 잘못 찾을 수 있었음
- 내부적으로 git blame --reverse 를 사용해 코드 변경을 현재 위치까지 추적함
- 현재 풀 리퀘스트의 HEAD뿐만 아니라 리뷰어가 실제로 보고 있는 base와 head, 표시 중인 코드의 커밋을 기준으로 댓글 위치를 계산함
- 삭제된 행은 삭제 시점을 찾고 현재 diff의 같은 위치에서도 삭제 상태인지 확인한 뒤, 댓글을 배치하거나 오래된 댓글로 표시함
Forgejo Actions와 JWT 통합
-
실행 우선순위와 워크플로 관리
- 개별 워크플로 실행을 수동으로 우선 처리 대상으로 지정할 수 있으며, Forgejo Actions는 이를 일반 실행보다 먼저 처리함
- 가능한 경우 if 조건을 Forgejo가 직접 평가해 Forgejo Runner로 작업을 보내지 않으므로 실행을 더 빠르게 시작할 수 있음
- 완료된 워크플로 실행과 로그·아티팩트를 UI 또는 HTTP API에서 삭제할 수 있음
- 저장소 관리자 또는 write:repository 권한이 있는 액세스 토큰만 삭제 가능함
- cron 표현식은 기존 CRON_TZ 형식과 함께 GitHub 방식의 시간대 지정 문법도 지원함
- 이전 버전에서 성공으로 표시하던 건너뛴 검사는 v16부터 skipped로 표시됨
-
Authorized Integrations
- v15에서 외부 시스템이 인증에 활용할 수 있는 JWT 생성 기능을 추가한 데 이어, v16은 JWT로 Forgejo API와 Git 접근을 인증하는 Authorized Integrations를 제공함
- 로컬 Forgejo Actions에서 사용하거나, 규칙을 구성해 임의의 JWT를 Forgejo가 검증하도록 설정할 수 있음
- ${{ forgejo.token }}의 일반 권한을 넘어서는 접근이 필요할 때 정적 액세스 토큰을 설정하고 향후 교체하지 않아도 됨
- 워크플로 작성자가 예상 밖의 권한을 스스로 부여하는 기능은 노출하지 않음
- 여러 Forgejo 저장소에 걸쳐 사용할 수 있음
- 기술 요구사항을 충족하는 외부 시스템은 시스템 간 정적 비밀값 없이 사용자의 Authorized Integration을 통해 Forgejo API와 Git 저장소에 직접 접근할 수 있음
- 예시로 Amazon Web Services, GitHub Actions, GitLab CI/CD가 포함됨
Actions와 관리 API
- 전체 워크플로 실행 또는 개별 작업의 로그를 가져오는 API가 추가됨
- 아티팩트를 나열·다운로드·삭제하는 엔드포인트를 제공함
- 아티팩트 업로드용으로 문서화된 엔드포인트는 향후 작업 목록에 남아 있음
- 개별 워크플로 실행을 취소하는 API가 추가됨
- /actions/run은 자동 토큰 FORGEJO_TOKEN이 속한 워크플로 실행 정보를 반환함
- 그 밖의 API 변경 사항은 다음과 같음
- 여러 엔드포인트가 반환하는 조직 모델에 생성 시간이 추가됨
- 풀 리퀘스트 검색에서 base와 head 브랜치 이름으로 필터링할 수 있음
- 인스턴스 관리자가 사용자 액세스 토큰을 나열·발급·삭제할 수 있음
- 사용자 목록을 2FA 상태로 필터링할 수 있음
지원 기간과 테스트 빌드
- 주요 릴리스는 3개월마다 나오며, 패치 릴리스는 포함된 버그나 보안 수정의 심각도에 따라 더 자주 배포됨
- v16.0은 비 LTS 릴리스로 2026년 10월 29일까지 지원됨
- v11.0 LTS는 2026년 7월 16일 지원이 종료됨
- v15.0 LTS는 2027년 7월 15일까지 지원됨
- v17.0은 2026년 10월 15일 출시 예정이며 2027년 1월 28일까지 지원될 예정임
- v16.0/forgejo 개발 브랜치의 최신 변경으로 16.0-test 일일 빌드를 생성해 테스트 인스턴스에 배포함
-
Homepage
-
Tech blog
- Forgejo v16.0 출시 — 알림·PR 리뷰·Actions 기능 확장