From f0c36840773cbe3f2f52e4c967937741ccd7244e Mon Sep 17 00:00:00 2001 From: Kazuhiro NISHIYAMA Date: Sat, 11 Jul 2026 23:53:23 +0900 Subject: [PATCH 1/2] =?UTF-8?q?CI=20=E3=81=A7=20rake=20sig=20=E3=81=A8=20s?= =?UTF-8?q?teep=20check=20=E3=82=92=E5=9B=9E=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #231 で sig/ が lib/ の全宣言をカバーし steep check がエラー0・警告0に なったので、退行を防ぐため CI に typecheck ジョブを追加する: - rake rbs:install(rbs_collection.lock.yaml で固定された collection を取得) - rake sig(rbs prototype → rbs subtract の残余ゼロ = sig 網羅の検査 + rbs validate) - steep check Ruby は最新安定版の 3.4 固定(バージョン網羅は build ジョブが担う)。 rbs / steep のバージョンは Gemfile.lock(rbs 3.10.3 / steep 1.9.4)で 再現される。 あわせて doctree と同様に、ドキュメント(doc/・README.md・ChangeLog) だけの変更では既存ジョブ含め CI を回さないようにする。 Co-Authored-By: Claude Fable 5 --- .github/workflows/test.yml | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9c32cb19..8ab99ad1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,6 +1,17 @@ name: test -on: [push, pull_request] +# doc/ 等ドキュメントだけの変更では CI を回さない(doctree と同様) +on: + push: + paths-ignore: + - 'doc/**' + - 'README.md' + - 'ChangeLog' + pull_request: + paths-ignore: + - 'doc/**' + - 'README.md' + - 'ChangeLog' jobs: ruby-versions: @@ -33,6 +44,24 @@ jobs: - name: Run test run: bundle exec rake + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + # 型検査は最新安定版1本で回す(バージョン網羅は build ジョブが担う)。 + # rbs/steep のバージョンは Gemfile.lock で固定されている + ruby-version: '3.4' + bundler-cache: true + - name: Install RBS collection + run: bundle exec rake rbs:install + # sig/ が lib/ の全宣言をカバーしているか(rbs subtract の残余ゼロ)+ rbs validate + - name: Check sig coverage + run: bundle exec rake sig + - name: Run steep check + run: bundle exec steep check + rurema: needs: ruby-versions runs-on: ubuntu-latest From 5f440afccd515722fab35635a85c091225a96d81 Mon Sep 17 00:00:00 2001 From: Kazuhiro NISHIYAMA Date: Sun, 12 Jul 2026 00:42:02 +0900 Subject: [PATCH 2/2] =?UTF-8?q?CI=20=E3=81=AE=20typecheck=20=E3=81=A7?= =?UTF-8?q?=E8=87=AA=E5=88=86=E8=87=AA=E8=BA=AB=E3=81=AE=20sig/=20?= =?UTF-8?q?=E3=81=8C=E4=BA=8C=E9=87=8D=E3=83=AD=E3=83=BC=E3=83=89=E3=81=95?= =?UTF-8?q?=E3=82=8C=E3=82=8B=E3=81=AE=E3=82=92=E7=9B=B4=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #232 の CI で steep check が RBS::DuplicatedDeclaration 48 件で失敗した。 原因は rbs collection install がロックを再解決し、path gem である bitclust-core が sig/ を持つため「gem 同梱 RBS」としてコレクションに 追加されたこと(Using bitclust-core:1.4.0 (.../bitclust/sig))。 steep は Steepfile の signature "sig" とコレクション経由で同じ sig/ を 二重ロードし、interface・type alias・定数の宣言が全て重複扱いになった。 (rake sig の rbs validate はコレクションしか読まないため通過していた) - rbs_collection.yaml: bitclust-core / bitclust-dev / refe2 を ignore し、 再解決しても自分自身を取り込まないようにする - CI: rbs collection install --frozen でロックのとおりに取得する (再解決による gem_rbs_collection の revision の変動も防ぐ) - typecheck の Ruby バージョンのコメントを実態に合わせて修正 (3.4 は「最新安定版」ではなく、rbs/steep のロックを検証した環境) Co-Authored-By: Claude Fable 5 --- .github/workflows/test.yml | 8 +++++--- rbs_collection.yaml | 10 ++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8ab99ad1..1a6d550b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -50,12 +50,14 @@ jobs: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: - # 型検査は最新安定版1本で回す(バージョン網羅は build ジョブが担う)。 - # rbs/steep のバージョンは Gemfile.lock で固定されている + # 型検査は1バージョンで回せば十分(バージョン網羅は build ジョブが担う)。 + # rbs 3.10 / steep 1.9(Gemfile.lock で固定)の検証済み環境である 3.4 を使う ruby-version: '3.4' bundler-cache: true - name: Install RBS collection - run: bundle exec rake rbs:install + # --frozen: rbs_collection.lock.yaml のとおりに取得する。 + # 再解決すると gem_rbs_collection の revision が動き、環境差も出るため + run: bundle exec rbs collection install --frozen # sig/ が lib/ の全宣言をカバーしているか(rbs subtract の残余ゼロ)+ rbs validate - name: Check sig coverage run: bundle exec rake sig diff --git a/rbs_collection.yaml b/rbs_collection.yaml index d9516eb6..5e6d7c7d 100644 --- a/rbs_collection.yaml +++ b/rbs_collection.yaml @@ -21,6 +21,16 @@ gems: - name: steep ignore: true + # bitclust 自身(path gem)は sig/ を持つため、コレクション解決に + # 含まれると Steepfile の signature "sig" と二重ロードになり + # DuplicatedDeclaration で steep が失敗する。必ず除外する + - name: bitclust-core + ignore: true + - name: bitclust-dev + ignore: true + - name: refe2 + ignore: true + - name: date #- name: drb - name: erb