Skip to content

Commit 2321026

Browse files
massongitclaude
andcommitted
fix: tarパスをtar -tfで動的に取得して./の有無に対応
GNU tarとBSD tarでパスの./プレフィックス扱いが異なるため、 tar -tf -でレイヤー内のuvバイナリパスを先に取得し、 その実際のパスで抽出することで両環境に対応。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 291d7f7 commit 2321026

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

scripts/deploy_hato_bot/update_uv_version/get_uv_version.sh

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,19 @@ docker save "$image_tag" -o "$tmp_tar"
99
manifest_digest=$(tar -xOf "$tmp_tar" index.json | jq -r '.manifests[0].digest' | sed 's/sha256://')
1010

1111
for digest in $(tar -xOf "$tmp_tar" "blobs/sha256/$manifest_digest" | jq -r '.layers[].digest' | sed 's/sha256://'); do
12-
if tar -xOf "$tmp_tar" "blobs/sha256/$digest" 2>/dev/null | gunzip 2>/dev/null | tar -xOf - ./usr/local/bin/uv 2>/dev/null >"$HOME/uv" && [ -s "$HOME/uv" ]; then
13-
chmod +x "$HOME/uv"
14-
break
15-
fi
12+
uv_path=$(tar -xOf "$tmp_tar" "blobs/sha256/$digest" 2>/dev/null | gunzip 2>/dev/null | tar -tf - 2>/dev/null | grep -E "usr/local/bin/uv$" | head -1)
13+
14+
if [ -z "$uv_path" ]; then
15+
continue
16+
fi
17+
18+
tar -xOf "$tmp_tar" "blobs/sha256/$digest" | gunzip | tar -xOf - "$uv_path" >"$HOME/uv"
19+
trap 'rm "$HOME/uv"' EXIT
20+
chmod +x "$HOME/uv"
21+
break
1622
done
1723

1824
uv_version=$("$HOME/uv" --version | sed -e 's/^uv //g')
19-
rm "$HOME/uv"
2025
sed -i -e "s/required-version = .*/required-version = \"$uv_version\"/g" pyproject.toml
2126
image_name=ghcr.io/astral-sh/uv
2227
image_tag=$image_name:$uv_version-python3.14-bookworm-slim

0 commit comments

Comments
 (0)