1 ポイント 投稿者 GN⁺ 4 시간 전 | 1件のコメント | WhatsAppで共有
  • 2026年7月16日にリリースされた Forgejo v16.0 は、リポジトリ別の通知制御、マイグレーション進捗、プルリクエストレビュー、ActionsおよびAPI機能を拡張
  • GitミラーのHTTPリダイレクトをブロックして SSRF対策 を強化し、名前や所有者が変わったリモートリポジトリはミラーURLを直接更新する必要がある
  • コンテナでリバースプロキシ認証を使っている場合は 信頼するプロキシのアドレス範囲 を明示する必要があり、デフォルトのWebポートが信頼できないネットワークに公開されていた一部の既存構成は動作しなくなる
  • 複数行レビューと git blame --reverse ベースのコメント位置追跡、Actions実行優先度、JWTベースのAuthorized Integrations、ワークフローログ・アーティファクト・キャンセルAPIが追加
  • v16.0は 非LTSリリース として2026年10月29日までサポートされ、アップグレード前に完全バックアップを作成し、すべての互換性変更を確認する必要がある

リリースとアップグレード

互換性変更とセキュリティ強化

  • GitミラーのSSRF対策

    • [migrations].ALLOWED_DOMAINSLOCKED_DOMAINSALLOW_LOCALNETWORKS が一部の例外状況で正しく適用されていなかった問題を修正
    • GitがHTTP(S)リポジトリアクセス中にリダイレクトをたどって設定を迂回できないよう、http.followRedirects=false を適用
    • 名前が変わった、または新しい所有者へ移管されたリモートForgejoリポジトリはリダイレクトがエラーとして扱われるため、既存ミラーを 新しいリポジトリURLへ更新 する必要がある
  • アバターの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 Webポートが信頼できないネットワークに公開され、認証リバースプロキシを迂回できる
    • 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 に同じアドレス一覧を設定する

リポジトリと組織の使い勝手

  • リポジトリ通知を Issue、プルリクエスト、リリース の3カテゴリに分けて購読できる
    • 再設計された通知バックエンドは、今後さらに細かな設定をサポートする基盤になる
    • 過剰に多くのオプションを公開せず、ユーザーに通知の制御権を提供することが目標
  • リポジトリのマイグレーション画面は、元のIssueとプルリクエストをバッチ単位で移行する 進捗率 を表示し、長時間の作業が止まっていないか確認できる
    • デフォルトのバッチサイズは45件で、進捗率が表示される最小項目数も45件
  • フルサイズが不要な場所には2種類の縮小アバターを生成し、帯域幅使用量と読み込み時間 を削減
  • 組織メンバー一覧から直接ダイアログを開いて新しいメンバーを追加し、一度に複数のチームへ割り当てられる
  • Gitが受信オブジェクトの複数の不整合を検査して拒否し、リポジトリが 不整合または破損した状態 になるのを防ぐ
  • バックエンドリポジトリにはGitのサンプルフックファイルを作成しなくなり、インスタンス共通のGitフックもリポジトリごとに複製せず中央に保管
    • リポジトリあたり約 20KiB を節約
    • 既存リポジトリのサンプルおよび重複して自動生成されたファイルは、アップグレードガイド に従って削除できる
  • リポジトリ機能をさらに有効化するよう促す案内が新規ユーザーに表示されなかったv7.0.0以降のバグを修正し、案内をオフにする設定も見つけやすく変更
    • “Enable more” の案内は、管理者またはリポジトリ所有者が一部のリポジトリ機能を明示的に無効化した場合にのみ表示される

プルリクエストとコードレビュー

  • プルリクエストページのコミット一覧を、より読みやすく画面サイズに適応しやすい 新しいレイアウト に変更
    • 現時点ではプルリクエストページにのみ適用され、他のコミット一覧画面へ段階的に拡大する予定
  • 変更された複数行を1つのレビューコメントに紐づける 複数行レビュー をサポート
    • Shift を押した状態で最初の行の横にあるプラスボタンを押し、最後の行までドラッグすると、選択した行が1つのコメントに紐づく
  • レビューコメントが誤った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 日次ビルド を作成し、テストインスタンス にデプロイ

1件のコメント

 
GN⁺ 4 시간 전
Lobste.rs の意見
  • @pushcx、suggest リンクはどこへ行った? vcs タグを提案しようとしたのに、もうどの記事でもリンクが見当たらない

    • 私も同じ現象が起きていて、理由を知りたい
    • 現在はこの記事とホーム画面の大半の記事で suggest リンク が見えており、https://lobste.rs/moderations にもアカウントに対する措置履歴はない。バグのようだ
  • すべての貢献者、とくに マージチーム に感謝。個人的には https://forgejo.org/2026-07-release-v16-0/#repository-units-hint の修正に貢献できたことを誇りに思う

  • 数日かけて https://forge.l3x.in で個人用 Forge を構築・調整しながら GitHub から段階的に移行したが、Forgejo のセルフホスト は非常に満足度の高い体験で、強く勧めたい
    SourceHut も良いと聞いているが実際には使ったことがなく、今は Forgejo に集中している

  • 複数行レビューとレビューコメント位置指定 の機能は歓迎。$JOB にはコードレビューがないので慣れておらず、自由・オープンソースプロジェクトに送ったパッチのレビューを受けたとき、コメントがどのコードブロックを指しているのか何度か誤解したことがある

  • 細かな購読設定 に大いに期待している。GitHub で使っていた機能なので、Forgejo にないのがとても惜しかった
    GitHub でも、イシューや PR が 新規作成されたときに購読 する機能をずっと前から望んでいた。たまにしか貢献しないプロジェクトの開発状況を追いながら、興味のない通知の 90% を毎回購読解除しなくて済むからだ
    Forgejo リポジトリに機能要望を登録した: https://codeberg.org/forgejo/forgejo/issues/13494

  • ホームラボで Forgejo をしばらく運用してきたが、とても満足している。Github.com にあったリポジトリ約 500 個を移行 したが、過程もほとんど不便はなく、Forgejo とランナーを k8s 内で動かしている
    Forgejo Runner が GitHub Actions と同じワークフロー定義 を使う点が特に便利で、ローカルランナーに正しいラベルを作るだけでよかった
    GitHub を読み取り専用で残すか、削除するか、同等のミラーとして維持するかはまだ決めていない。いずれにせよ、今では GitHub ではなく Forgejo インスタンスに直接 push しており、すべての作業が数秒単位ではるかに速くなった