nandi/nimstaticpublic Fork 0
main
Commits
Clone
git clone https://git.rickub.com/nandi/nimstatic.git
git clone ssh://git@rickub.com/nandi/nimstatic.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

failure

Release #5

push · v0.1.3 · f2e3231dran in 4s · 44 lines of output
queued <1s ran 3s total 4s
1 jobs
1 failed
4s duration
tests
0 artifacts
failurerelease → Resolve the tag View log
Unclassified failure The failure didn't match a known signature. Open the log — and this is a signal our classifier needs a new pattern.
release
failurerelease
successSet up job
cloning nandi/nimstatic @ f2e3231d85f07ecac57eb3b2da53d5223b773a67action actions/cache@v4: node20 (_actions/actions/cache/v4)action actions/upload-artifact@v4: node20 (_actions/actions/upload-artifact/v4)
successactions/checkout@v4 1s
(checkout already performed by the runner — delivered as the read-only work disk)
failureResolve the tag 2s
Run
set -euo pipefail
if [ -n "${INPUT_TAG:-}" ]; then
  TAG="$INPUT_TAG"
elif [ "$GITHUB_REF_TYPE" = tag ]; then
  TAG="$GITHUB_REF_NAME"
else
  TAG=$(git tag --list 'v*' --sort=-v:refname | head -1)
fi
case "$TAG" in
  v*) ;;
  *) echo "refusing to release '$TAG': not a v* tag" >&2; exit 1 ;;
esac
git checkout --detach "$TAG"
echo "releasing $TAG at $(git rev-parse --short HEAD)"
echo "TAG=$TAG" >> "$GITHUB_ENV"
ciguest: network up (172.30.0.2/30 via 172.30.0.1)ciguest: starting dockerd (overlay2, data-root on scratch)ciguest: dockerd is readyciguest: loaded baked image postgres_16-alpine.tar.gz: Loaded image: postgres:16-alpineciguest: 1 baked image archive(s) loaded (no per-job registry pull needed)ciguest: logged into registry registry.rickub.com as rickubbash: line 4: GITHUB_REF_TYPE: unbound variable
skippedInstall Nim and zig
Run
set -euo pipefail
mkdir -p "$HOME/toolchains"
curl -sSfL "https://nim-lang.org/download/nim-${NIM_VERSION}-linux_x64.tar.xz" \
  | tar -xJ -C "$HOME/toolchains"
curl -sSfL "https://ziglang.org/download/${ZIG_VERSION}/zig-x86_64-linux-${ZIG_VERSION}.tar.xz" \
  | tar -xJ -C "$HOME/toolchains"
echo "$HOME/toolchains/nim-${NIM_VERSION}/bin" >> "$GITHUB_PATH"
echo "$HOME/toolchains/zig-x86_64-linux-${ZIG_VERSION}" >> "$GITHUB_PATH"
(skipped: step if: condition evaluated to false)
skippedVersions
Run
nim --version | head -1
zig version
(skipped: step if: condition evaluated to false)
skippedactions/cache@v4
(skipped: step if: condition evaluated to false)
skippedTest
Run
nim c -d:ssl --hints:off -r tests/test_nimstatic.nim
(skipped: step if: condition evaluated to false)
skippedBootstrap nimstatic on the host
Run
nim c -d:release -d:ssl --hints:off -o:nimstatic-host src/nimstatic.nim
(skipped: step if: condition evaluated to false)
skippedBuild the static binary with itself
Run
set -euo pipefail
VERSION="${TAG#v}"
NAME="nimstatic-${VERSION}-x86_64-linux"
./nimstatic-host src/nimstatic.nim -o "$NAME" -- -d:ssl --passL:-s
# `file` is not on the runner image; ldd answers the only question
# that matters, and running it proves the thing actually starts.
ldd "$NAME" 2>&1 | grep -q "not a dynamic executable"
./"$NAME" --help > /dev/null
xz -9e -k "$NAME"
sha256sum "$NAME" "$NAME.xz" > SHA256SUMS
cat SHA256SUMS
echo "NAME=$NAME" >> "$GITHUB_ENV"
(skipped: step if: condition evaluated to false)
skippedAttach the binaries to the release
Run
set -euo pipefail
api() { curl -sSfL -H "Authorization: Bearer $GITHUB_TOKEN" \
             -H "Accept: application/vnd.github+json" "$@"; }
field() { python3 -c "import json,sys; print(json.load(sys.stdin).get(sys.argv[1],''))" "$1"; }

if ! api "$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/releases/tags/$TAG" > release.json; then
  api -X POST "$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/releases" \
      -d "{\"tag_name\":\"$TAG\",\"name\":\"nimstatic $TAG\"}" > release.json
fi

upload_url=$(field upload_url < release.json | cut -d'{' -f1)
echo "uploading to $upload_url"

for asset in "$NAME" "$NAME.xz" SHA256SUMS; do
  # Replace an asset of the same name, so a re-run is idempotent.
  existing=$(python3 -c "import json,sys; print(next((a['url'] for a in (json.load(open('release.json')).get('assets') or []) if a['name']==sys.argv[1]),''))" "$asset")
  if [ -n "$existing" ]; then
    api -X DELETE "$existing" > /dev/null
  fi
  api -X POST "$upload_url?name=$asset" \
      -H "Content-Type: application/octet-stream" \
      --data-binary "@$asset" > /dev/null
  echo "uploaded $asset"
done
(skipped: step if: condition evaluated to false)
skippedactions/upload-artifact@v4
(skipped: step if: condition evaluated to false)
Post actions/cache@v4
(post step skipped: the action's main step did not run)step failed: exit code 1 — Resolve the tag

No test reports for this run.

Tell a job where its test runner writes its report and this tab fills in: how many tests passed, failed and were skipped, a bar of the result at a glance, then every failure first — with the assertion that failed and the output around it — over a per-suite list of cases and their durations. No scrolling a log for the word FAIL.

It is one reports: key on the job — a job key, not a step, so the report is collected whatever the job concluded. JUnit XML and go test -json are both understood, and most runners already emit one of them. reports: is a rickub extension and works only in .rickub/workflows/; in .github/workflows/ it is a parse error on purpose, because those files are also meant to run on github.com.