From 2a544ab1ac6ded9a2d27b53e9c1d76d5abd1d506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jalil=20David=20Salam=C3=A9=20Messina?= Date: Sun, 15 Dec 2024 20:34:46 +0100 Subject: [PATCH] refactor(ci): switch to action This allows me to easily change the implementation and work on it separately. --- .forgejo/workflows/check.yml | 4 +- ci-scripts/report-size.sh | 102 ----------------------------------- 2 files changed, 2 insertions(+), 104 deletions(-) delete mode 100755 ci-scripts/report-size.sh diff --git a/.forgejo/workflows/check.yml b/.forgejo/workflows/check.yml index f8cb7d6..561bec7 100644 --- a/.forgejo/workflows/check.yml +++ b/.forgejo/workflows/check.yml @@ -31,5 +31,5 @@ jobs: steps: - uses: "https://git.salame.cl/actions/checkout@v4" - run: nix --version - - name: Report Size - run: ci-scripts/report-size.sh + - name: Create Size Report + uses: https://git.salame.cl/jalil/nix-flake-outputs-size@main diff --git a/ci-scripts/report-size.sh b/ci-scripts/report-size.sh deleted file mode 100755 index 0c9d038..0000000 --- a/ci-scripts/report-size.sh +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/sh - -set -eu - -echo 'Retrieving Flake information' >&2 -flake_info=$(nix flake show --json 2>/dev/null) -packages=$( - jq --raw-output '.packages."x86_64-linux" | keys[]' <<-EOF - $flake_info - EOF -) -echo "Packages:" >&2 -echo "$packages" >&2 -configurations=$( - jq --raw-output '.nixosConfigurations | keys[]' <<-EOF - $flake_info - EOF -) -echo "NixOS Configurations:" >&2 -echo "$configurations" >&2 - -package_size_table() { - table='| Installable | NAR Size | Closure Size | -|-------------|---------:|-------------:| -' - for package in $packages; do - echo "Building $package" >&2 - path=$(nix build --print-out-paths ".#$package" 2>/dev/null) - echo "Calculating size of $package" >&2 - row=$(nix path-info --size --closure-size --human-readable "$path" 2>/dev/null | - sed "s/^\(\S\+\)\(\s\+\)\(\S\+\)\(\s\+\)\(\S\+\)$/| \`$package\` | \3 | \5 |/") - table="$table$row -" - done - - printf '%s' "$table" -} - -configuration_size_table() { - table='| NixOS Configuration | NAR Size | Closure Size | -|-------------|---------:|-------------:| -' - for config in $configurations; do - echo "Building $config" >&2 - path=$(nix build --print-out-paths ".#nixosConfigurations.$config.config.system.build.toplevel" 2>/dev/null) - echo "Calculating size of $config" >&2 - row=$(nix path-info --size --closure-size --human-readable "$path" 2>/dev/null | - sed "s/^\(\S\+\)\(\s\+\)\(\S\+\)\(\s\+\)\(\S\+\)$/| \`$config\` | \3 | \5 |/") - table="$table$row -" - done - - printf '%s' "$table" -} - -markdown() { - cat <<-EOF - ## Outputs' size - - ### NixOS Configurations sizes - - $(configuration_size_table) - - - ### Package sizes - - $(package_size_table) - EOF -} - -if [ "${CI-false}" = "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_REF_NAME" '.[] | select(.head.ref == $head_ref) | .number') - - if [ -z "$pr_number" ]; then - echo "No PR created for this commit" - exit 0 - fi - - echo "Retrieved index: $pr_number" >&2 - echo "Expected PR URL: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/pulls/$pr_number" >&2 - - echo 'Generating comment body' >&2 - comment=$(markdown) - - echo 'Posting comment:' >&2 - echo "$comment" >&2 - - echo 'Request data:' >&2 - data=$(echo '{}' | jq --arg comment "$comment" '.body=$comment') - echo "$data" >&2 - curl -o - -X 'POST' \ - "$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/issues/$pr_number/comments" \ - -H 'accept: application/json' \ - -H "Authorization: token $GITHUB_TOKEN" \ - -H 'Content-Type: application/json' \ - -d "$data" -else - markdown -fi -- 2.47.0