wip: report package sizes
All checks were successful
/ report-size (pull_request) Successful in 25s

Added as a comment to the current pull request
This commit is contained in:
Jalil David Salamé Messina 2024-12-14 23:49:23 +01:00
parent 6bde92bd91
commit 5d99a468a1
Signed by: jalil
GPG key ID: F016B9E770737A0B
4 changed files with 62 additions and 23 deletions

View file

@ -1,23 +0,0 @@
on:
push:
jobs:
check:
runs-on: nixos
steps:
- uses: "https://code.forgejo.org/actions/checkout@v4"
- run: nix --version
- run: nix flake check --keep-going --verbose
build:
runs-on: nixos
strategy:
matrix:
target:
- audiomenu
- docs
- jpassmenu
- nixosConfigurations.vm.config.system.build.toplevel
- nvim
steps:
- uses: "https://code.forgejo.org/actions/checkout@v4"
- run: nix --version
- run: nix build --print-build-logs '.#${{ matrix.target }}'

View file

@ -0,0 +1,10 @@
on:
pull_request:
jobs:
report-size:
runs-on: nixos
steps:
- uses: "https://git.salame.cl/actions/checkout@v4"
- run: nix --version
- name: Report Size
run: ci-scripts/report-size.sh

1
.gitignore vendored
View file

@ -1,4 +1,5 @@
result
result-*
.direnv/
.pre-commit-config.yaml
# ignore vm images

51
ci-scripts/report-size.sh Executable file
View file

@ -0,0 +1,51 @@
#!/bin/sh
package_size_table() {
packages=$(nix flake show --json 2>/dev/null | jq --raw-output '.packages."x86_64-linux" | ".#" + keys[]')
# we want to split the words as each of them is a different installable
# shellcheck disable=SC2086
nix build $packages
# shellcheck disable=SC2086
table=$(nix path-info --size --closure-size --human-readable \
$packages |
sed 's/^\(\S\+\)\(\s\+\)\(\S\+\)\(\s\+\)\(\S\+\)$/| \1\2| \3 | \4\5 |/')
cat <<-EOF
| Nix Store Path | NAR Size | Closure Size |
|----------------|---------:|-------------:|
$table
EOF
}
if [ "$CI" = "true" ]; then
pr_number=$(curl -X 'GET' \
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/pulls?state=open&sort=recentupdate" \
-H 'accept: application/json' |
jq --arg head_ref "$GITHUB_HEAD_REF" '.[] | select(.head.ref == $head_ref) | .number')
echo "Retrieved index: $pr_number"
echo "Expected PR URL: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/pulls/$pr_number"
echo 'Generating comment body'
comment=$(
cat <<-EOF
### NixOS Configurations sizes
TODO
### Package sizes
$(package_size_table)
EOF
)
echo 'Posting comment:'
echo "$comment"
echo 'Request data:'
data=$(echo '{}' | jq --arg comment "$comment" '.body=$comment')
echo "$data"
curl -o - -v -X 'POST' \
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/issues/$pr_number/comments?token=$GITHUB_TOKEN" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d "$data"
else
package_size_table
fi