Skip to content

Commit e778ec1

Browse files
massongitclaude
andcommitted
fix: docker saveでOCI形式からjq+tar+gunzipでuvバイナリを抽出
docker cp/runはcontainerd v2のmanifest unknownバグで失敗するため、 docker saveでローカルtarを取り出しOCI形式のblobs/sha256/を jq+tar+gunzipで辿ってuvバイナリを抽出する方式に変更。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 968a238 commit e778ec1

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

scripts/deploy_hato_bot/update_uv_version/get_uv_version.sh

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,18 @@ set -e
33

44
image_tag=ghcr.io/dependabot/dependabot-updater-uv
55
docker pull "$image_tag"
6-
tmp_container=$(docker create "$image_tag")
7-
docker cp "${tmp_container}:/usr/local/bin/uv" /tmp/uv
8-
docker rm "${tmp_container}"
6+
tmp_tar=$(mktemp)
7+
trap 'rm "$tmp_tar"' EXIT
8+
docker save "$image_tag" -o "$tmp_tar"
9+
manifest_digest=$(tar -xOf "$tmp_tar" index.json | jq -r '.manifests[0].digest' | sed 's/sha256://')
10+
11+
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 >/tmp/uv && [ -s /tmp/uv ]; then
13+
chmod +x /tmp/uv
14+
break
15+
fi
16+
done
17+
918
uv_version=$(/tmp/uv --version | sed -e 's/^uv //g')
1019
rm /tmp/uv
1120
sed -i -e "s/required-version = .*/required-version = \"$uv_version\"/g" pyproject.toml

0 commit comments

Comments
 (0)