main
pico.sh
Eric Bower
·
2026-07-23
1#!/usr/bin/env bash
2set -euo pipefail
3
4export ZMX_SESSION_PREFIX="${ZMX_SESSION_PREFIX:-ci.zmx.}"
5EVENT="${PICI_EVENT:-manual}"
6BRANCH="${PICI_BRANCH:-tmp}"
7
8echo "running ci event=${EVENT} session=${ZMX_SESSION_PREFIX}"
9
10zmx run build docker build -t zig-zmx .
11zmx run fmt -d docker run --rm -v "$(pwd):/app" -t zig-zmx:latest zig fmt --check .
12zmx run test -d docker run --rm -v "$(pwd):/app" -t zig-zmx:latest zig build test
13zmx run bin -d docker run --rm -v "$(pwd):/app" -t zig-zmx:latest zig build
14zmx run integration -d docker run --rm -v "$(pwd):/app" -t zig-zmx:latest bats --jobs 1 test/*.bats
15zmx wait "*"
16
17zmx run upload-build docker build -t zmx-upload -f Dockerfile.upload .
18
19if [[ $BRANCH = "main" ]]; then
20 zmx run upload docker run --rm \
21 -v "$(pwd)/README.md:/app/README.md:ro" \
22 -v "$(pwd)/logo.png:/app/logo.png:ro" \
23 -v "$(pwd)/index.tmpl:/app/index.tmpl:ro" \
24 -v ~/.ssh:/root/.ssh:ro \
25 zmx-upload
26fi
27
28if [[ $EVENT != "git.tag" ]]; then
29 echo "success!"
30 exit 0
31fi
32
33TAG="${PICI_TAG}"
34NEW_VERSION="${PICI_TAG#v}"
35
36zmx run semver sed -i "s/\.version = \"[^\"]*\"/.version = \"$NEW_VERSION\"/" build.zig.zon && cat build.zig.zon
37zmx run update-readme sed -i "s/zmx-[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*/zmx-$NEW_VERSION/g" README.md
38zmx run build-release -d docker run --rm -v "$(pwd):/app" -t zig-zmx:latest zig build release
39zmx run brew -d bash gen-brew.sh "$NEW_VERSION"
40
41echo "distributing bins"
42zmx run upload docker run --rm \
43 -v "$(pwd)/zig-out/dist:/app/dist:ro" \
44 -v ~/.ssh:/root/.ssh:ro \
45 zmx-upload rsync -rv dist/ pgs.sh:/zmx/a
46zmx run gh-build docker build -t gh-release -f Dockerfile.release .
47zmx run gh docker run --rm \
48 -v "$(pwd)/zig-out/dist":/dist \
49 -e GH_TOKEN \
50 -e TAG="$TAG" \
51 gh-release
52
53echo "success!"