コンテキスト
LinuxシステムでGitHub Actionが実行されています。
次の操作を行います(ほとんど関係がないかもしれないので、まず質問にスキップしたいかもしれません。):
pwd
:/home/runner/work/net.twisterrob.cinema/net.twisterrob.cinema
- zipをダウンロードし、次の場所に解凍します。
diff/prev
- zipをダウンロードし、次の場所に解凍します。
diff/curr
- 他のすべては
diff
フォルダ内で実行されます。 prev
次のように内部ファイルペアに対してdiffを実行しますcurr
。diff --unified=3 --new-file --text --minimal "prev/backend.lockfile" "curr/backend.lockfile" > "backend.lockfile.diff"
- 異なるファイルに対して異なる diff セットを実行します。
./dependency-tree-diff.jar "prev/$1.dependencies" "curr/$1.dependencies" > "$1.dependencies.diff"
- シェルスクリプトを介してdiffをパッチに変換します。
./dependency-tree-diff-to-patch.sh "$1.dependencies.diff" "${BASE}" "${HEAD}" > "$1.dependencies.patch"
- 最後に、ディレクトリの内容は次のとおりです。
ls -la
total 272 drwxr-xr-x 4 runner docker 4096 Jan 27 21:13 . drwxr-xr-x 12 runner docker 4096 Jan 27 21:12 .. -rw-r--r-- 1 runner docker 32293 Jan 27 21:13 backend-database.dependencies.diff -rw-r--r-- 1 runner docker 32784 Jan 27 21:13 backend-database.dependencies.patch -rw-r--r-- 1 runner docker 4250 Jan 27 21:13 backend-database.lockfile.diff -rw-r--r-- 1 runner docker 2 Jan 27 21:13 backend-database.lockfile.diff.error -rw-r--r-- 1 runner docker 14853 Jan 27 21:13 backend-endpoint.dependencies.diff -rw-r--r-- 1 runner docker 15322 Jan 27 21:13 backend-endpoint.dependencies.patch -rw-r--r-- 1 runner docker 4202 Jan 27 21:13 backend-endpoint.lockfile.diff -rw-r--r-- 1 runner docker 2 Jan 27 21:13 backend-endpoint.lockfile.diff.error -rw-r--r-- 1 runner docker 0 Jan 27 21:13 backend-feed.dependencies.diff -rw-r--r-- 1 runner docker 426 Jan 27 21:13 backend-feed.dependencies.patch -rw-r--r-- 1 runner docker 0 Jan 27 21:13 backend-feed.lockfile.diff -rw-r--r-- 1 runner docker 2 Jan 27 21:13 backend-feed.lockfile.diff.error -rw-r--r-- 1 runner docker 0 Jan 27 21:13 backend-network.dependencies.diff -rw-r--r-- 1 runner docker 438 Jan 27 21:13 backend-network.dependencies.patch -rw-r--r-- 1 runner docker 0 Jan 27 21:13 backend-network.lockfile.diff -rw-r--r-- 1 runner docker 2 Jan 27 21:13 backend-network.lockfile.diff.error -rw-r--r-- 1 runner docker 0 Jan 27 21:13 backend-quickbook.dependencies.diff -rw-r--r-- 1 runner docker 446 Jan 27 21:13 backend-quickbook.dependencies.patch -rw-r--r-- 1 runner docker 0 Jan 27 21:13 backend-quickbook.lockfile.diff -rw-r--r-- 1 runner docker 2 Jan 27 21:13 backend-quickbook.lockfile.diff.error -rw-r--r-- 1 runner docker 13691 Jan 27 21:13 backend-sync.dependencies.diff -rw-r--r-- 1 runner docker 14141 Jan 27 21:13 backend-sync.dependencies.patch -rw-r--r-- 1 runner docker 3869 Jan 27 21:13 backend-sync.lockfile.diff -rw-r--r-- 1 runner docker 2 Jan 27 21:13 backend-sync.lockfile.diff.error -rw-r--r-- 1 runner docker 0 Jan 27 21:13 backend.dependencies.diff -rw-r--r-- 1 runner docker 406 Jan 27 21:13 backend.dependencies.patch -rw-r--r-- 1 runner docker 0 Jan 27 21:13 backend.lockfile.diff -rw-r--r-- 1 runner docker 2 Jan 27 21:13 backend.lockfile.diff.error drwxr-xr-x 2 runner docker 4096 Jan 27 21:12 curr -rwxr-xr-x 1 runner docker 441 Jan 27 21:13 dependency-tree-diff-to-patch.sh -rwxr-xr-x 1 runner docker 20979 Jun 17 2022 dependency-tree-diff.jar -rw-r--r-- 1 runner docker 0 Jan 27 21:13 plugins-settings.lockfile.diff -rw-r--r-- 1 runner docker 2 Jan 27 21:13 plugins-settings.lockfile.diff.error -rw-r--r-- 1 runner docker 0 Jan 27 21:13 plugins.dependencies.diff -rw-r--r-- 1 runner docker 406 Jan 27 21:13 plugins.dependencies.patch -rw-r--r-- 1 runner docker 0 Jan 27 21:13 plugins.lockfile.diff -rw-r--r-- 1 runner docker 2 Jan 27 21:13 plugins.lockfile.diff.error drwxr-xr-x 2 runner docker 4096 Jan 27 21:12 prev -rw-r--r-- 1 runner docker 0 Jan 27 21:13 root-settings.lockfile.diff -rw-r--r-- 1 runner docker 2 Jan 27 21:13 root-settings.lockfile.diff.error -rw-r--r-- 1 runner docker 0 Jan 27 21:13 root.dependencies.diff -rw-r--r-- 1 runner docker 394 Jan 27 21:13 root.dependencies.patch -rw-r--r-- 1 runner docker 0 Jan 27 21:13 root.lockfile.diff -rw-r--r-- 1 runner docker 2 Jan 27 21:13 root.lockfile.diff.error -rw-r--r-- 1 runner docker 0 Jan 27 21:13 test-helpers.dependencies.diff -rw-r--r-- 1 runner docker 426 Jan 27 21:13 test-helpers.dependencies.patch -rw-r--r-- 1 runner docker 0 Jan 27 21:13 test-helpers.lockfile.diff -rw-r--r-- 1 runner docker 2 Jan 27 21:13 test-helpers.lockfile.diff.error
- フォルダサイズをよりよく測定するには、次の手順を実行します。
du -h -d 1
2.3M ./prev 2.3M ./curr 4.8M .
- ディスク使用量:
df
Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 87204404 51329544 35858476 59% / tmpfs 3555312 172 3555140 1% /dev/shm tmpfs 1422128 1092 1421036 1% /run tmpfs 5120 0 5120 0% /run/lock /dev/sdb15 106858 5329 101529 5% /boot/efi /dev/sda1 14341128 4194336 9396508 31% /mnt tmpfs 711060 12 711048 1% /run/user/1001
- diffファイルを1つのファイルにマージ
ls --format=single-column --time=ctime --reverse *.dependencies.diff | xargs tail --lines=+1 > all.dependencies.diff
ステップ11の目的は、cat *.dependencies.diff > all.dependencies.diff
より多くの制御(順序)と毛羽(タイトル)を持つことです。https://stackoverflow.com/a/2817024+https://stackoverflow.com/a/7816490man ls
+フラグを使用して拡張しますman tail
。
問題と質問
最後のステップ11でタイムアウトすることがあります。全体のGitHub Actionのタイムアウトは10分で、ステップ11は通常9分かかり、キャンセルされます。しかし、いつもそうではない、一般的に「動作」します。 All ls
、du
およびdf
は何が起こっているのかを診断するためのものです。誰かがこの設定/スクリプト/環境で完了しない可能性がある問題を見つけたいと思うようにこの記事を投稿してください。私のスクリプトからエラーを除外しようとしています。
はい
まったく同じコード(変更なし)のさまざまなシナリオをすべて示す優れた例があります。
試み1:失敗https://github.com/TWiStErRob/net.twisterrob.cinema/actions/runs/4028195985/jobs/6924812632
試み2:失敗https://github.com/TWiStErRob/net.twisterrob.cinema/actions/runs/4028195985/jobs/6925862191
試み3:成功 https://github.com/TWiStErRob/net.twisterrob.cinema/actions/runs/4028195985/jobs/6930610577
最も奇妙なことは、失敗したときに常に「デバイスに残りのスペースがありません」というメッセージが表示され、常にこの段階にあることです!
System.IO.IOException: No space left on device : '/home/runner/runners/2.301.1/_diag/Worker_20230127-210915-utc.log'
at System.IO.RandomAccess.WriteAtOffset(SafeFileHandle handle, ReadOnlySpan`1 buffer, Int64 fileOffset)
at System.IO.Strategies.BufferedFileStreamStrategy.FlushWrite()
at System.IO.Strategies.BufferedFileStreamStrategy.WriteSpan(ReadOnlySpan`1 source, ArraySegment`1 arraySegment)
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
at System.Diagnostics.TextWriterTraceListener.Flush()
at GitHub.Runner.Common.HostTraceListener.WriteHeader(String source, TraceEventType eventType, Int32 id)
at GitHub.Runner.Common.HostTraceListener.TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, Int32 id, String message)
at System.Diagnostics.TraceSource.TraceEvent(TraceEventType eventType, Int32 id, String message)
at GitHub.Runner.Worker.Worker.RunAsync(String pipeIn, String pipeOut)
at GitHub.Runner.Worker.Program.MainAsync(IHostContext context, String[] args)
System.IO.IOException: No space left on device : '/home/runner/runners/2.301.1/_diag/Worker_20230127-210915-utc.log'
at System.IO.RandomAccess.WriteAtOffset(SafeFileHandle handle, ReadOnlySpan`1 buffer, Int64 fileOffset)
at System.IO.Strategies.BufferedFileStreamStrategy.FlushWrite()
at System.IO.Strategies.BufferedFileStreamStrategy.WriteSpan(ReadOnlySpan`1 source, ArraySegment`1 arraySegment)
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
at System.Diagnostics.TextWriterTraceListener.Flush()
at GitHub.Runner.Common.HostTraceListener.WriteHeader(String source, TraceEventType eventType, Int32 id)
at GitHub.Runner.Common.HostTraceListener.TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, Int32 id, String message)
at System.Diagnostics.TraceSource.TraceEvent(TraceEventType eventType, Int32 id, String message)
at GitHub.Runner.Common.Tracing.Error(Exception exception)
at GitHub.Runner.Worker.Program.MainAsync(IHostContext context, String[] args)
Unhandled exception. System.IO.IOException: No space left on device : '/home/runner/runners/2.301.1/_diag/Worker_20230127-210915-utc.log'
at System.IO.RandomAccess.WriteAtOffset(SafeFileHandle handle, ReadOnlySpan`1 buffer, Int64 fileOffset)
at System.IO.Strategies.BufferedFileStreamStrategy.FlushWrite()
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
at System.Diagnostics.TextWriterTraceListener.Flush()
at System.Diagnostics.TraceSource.Flush()
at GitHub.Runner.Common.TraceManager.Dispose(Boolean disposing)
at GitHub.Runner.Common.TraceManager.Dispose()
at GitHub.Runner.Common.HostContext.Dispose(Boolean disposing)
at GitHub.Runner.Common.HostContext.Dispose()
at GitHub.Runner.Worker.Program.Main(String[] args)