uncompressed docker size with buildx
This commit is contained in:
parent
3065ad1c5e
commit
07a2c81f05
1 changed files with 15 additions and 15 deletions
30
.github/workflows/docker.yml
vendored
30
.github/workflows/docker.yml
vendored
|
|
@ -95,19 +95,19 @@ jobs:
|
||||||
# https://gist.github.com/MichaelSimons/fb588539dcefd9b5fdf45ba04c302db6
|
# https://gist.github.com/MichaelSimons/fb588539dcefd9b5fdf45ba04c302db6
|
||||||
- name: Docker (un)compressed sizes
|
- name: Docker (un)compressed sizes
|
||||||
run: |
|
run: |
|
||||||
echo '```console' >> "$GITHUB_STEP_SUMMARY"
|
IMG=ghcr.io/${{ github.actor }}/free-games-claimer:${{env.IMAGE_TAG}}
|
||||||
# echo '# Uncompressed size (max, not size on disk due to sharing):'
|
emd() { echo "$@" | tee -a "$GITHUB_STEP_SUMMARY"; }
|
||||||
# echo '$ docker image ls' >> "$GITHUB_STEP_SUMMARY"
|
cmd() { echo "\$ $@" | tee -a "$GITHUB_STEP_SUMMARY"; "$@" | tee -a "$GITHUB_STEP_SUMMARY"; }
|
||||||
# docker image ls | tee -a "$GITHUB_STEP_SUMMARY"
|
emd '```console'
|
||||||
# echo
|
emd "# Compressed (download) sizes:"
|
||||||
# echo '# size = unique + shared:'
|
|
||||||
# echo '$ docker system df -v' >> "$GITHUB_STEP_SUMMARY"
|
|
||||||
# docker system df -v | tee -a "$GITHUB_STEP_SUMMARY"
|
|
||||||
## the above work locally, but in CI with buildx just list moby/buildkit and tonistiigi/binfmt
|
|
||||||
echo "# Compressed sizes:" >> "$GITHUB_STEP_SUMMARY"
|
|
||||||
dockersize() { docker manifest inspect -v "$1" | jq -c 'if type == "array" then .[] else . end' | jq -r '[ ( .Descriptor.platform | [ .os, .architecture, .variant, ."os.version" ] | del(..|nulls) | join("/") ), ( [ ( .OCIManifest // .SchemaV2Manifest ).layers[].size ] | add ) ] | join(" ")' | numfmt --to iec --format '%.2f' --field 2 | sort | column -t ; }
|
dockersize() { docker manifest inspect -v "$1" | jq -c 'if type == "array" then .[] else . end' | jq -r '[ ( .Descriptor.platform | [ .os, .architecture, .variant, ."os.version" ] | del(..|nulls) | join("/") ), ( [ ( .OCIManifest // .SchemaV2Manifest ).layers[].size ] | add ) ] | join(" ")' | numfmt --to iec --format '%.2f' --field 2 | sort | column -t ; }
|
||||||
dockersize ghcr.io/${{ github.actor }}/free-games-claimer:${{env.IMAGE_TAG}} | tee -a "$GITHUB_STEP_SUMMARY"
|
cmd dockersize "$IMG"
|
||||||
log() { echo "\$ $@" >> "$GITHUB_STEP_SUMMARY"; "$@" >> "$GITHUB_STEP_SUMMARY"; }
|
cmd docker buildx history inspect
|
||||||
log docker buildx history inspect
|
cmd docker buildx du
|
||||||
log docker buildx du
|
## in CI with buildx `docker image ls` just lists moby/buildkit and tonistiigi/binfmt since the multi-arch build is pushed to registry instead of loaded locally, so we need to pull it first (cached anyway)
|
||||||
echo '```' >> "$GITHUB_STEP_SUMMARY"
|
cmd docker pull "$IMG"
|
||||||
|
emd '# Uncompressed size (max, not size on disk due to sharing):'
|
||||||
|
cmd docker image ls
|
||||||
|
emd '# size = unique + shared:'
|
||||||
|
cmd docker system df -v
|
||||||
|
emd '```'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue