-
-
Notifications
You must be signed in to change notification settings - Fork 11
Open
Description
背景
TAKT 実行中に Gradle で NativeServices.createSystemInfo(): Operation not permitted が発生し、テストが停止する事象が継続発生している。
同系統の問題は npm/pnpm 等でも cache/tmp 書き込み時に再現しうる。
問題
- ツールごとに作業ディレクトリ外へ書き込みに行く(HOME, tmp, cache)
- sandbox/権限制約下で EACCES / Operation not permitted が発生
- 対症療法がツール単位で増え、運用コストが上がる
目的
Gradle だけでなく npm/pnpm/maven/pytest などを含め、TAKT の実行基盤で一貫して権限問題を回避する。
提案
1. post-clone で実行基盤を準備
.runtime/tmp.runtime/cache.runtime/config.runtime/state.runtime/env.sh(共通 env 定義)
2. 各ムーブメント実行前に共通 env を毎回注入
source .runtime/env.shもしくは共通ランナーrun-command.sh経由post-cloneの一回実行だけに依存しない(再キュー/再開時の取りこぼし防止)
3. 共通 env(例)
TMPDIR=.runtime/tmpXDG_CACHE_HOME=.runtime/cacheXDG_CONFIG_HOME=.runtime/configXDG_STATE_HOME=.runtime/stateCI=true
4. ツール固有 env(最小)
- Gradle:
GRADLE_USER_HOME=.runtime/gradle,-Djava.io.tmpdir=.runtime/tmp - npm:
npm_config_cache=.runtime/npm - pnpm:
PNPM_HOME=.runtime/pnpm(必要に応じて store path も固定)
受け入れ条件
- TAKT 経由実行時に env が注入されていることをログで確認できる
.runtime/*配下にのみ cache/tmp/state が生成される- Gradle テストで NativeServices...Operation not permitted が再現しない
- npm/pnpm でも権限系エラー(EACCES)が再現しない
確認手順
- 軽量タスクで
echo $TMPDIR $GRADLE_USER_HOME $npm_config_cacheを出力 find .runtime -maxdepth 3 -type dで生成先を確認./gradlew test/npm testを TAKT から実行して再現有無を確認
補足
根本対応は「ツール別パッチ」ではなく、実行基盤の共通化で行う。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels