~ knotless Search/
↑↓ move↵ open⇧↵ all results

johnandersen777.bsky.social/knotless-fork-infra

0
0
main
Go to filet
Code
README.md

knotless-fork-infra

Our knotless fork (branch runner-atlibs-composition), deployed:

https://knotless.socialweb.computerknotless-serve + pages
https://knotless-runner.socialweb.computerknotless-run --executor composition: CI on an atlibs composition

Sign in

Log in → your handle → Log in.

home log in

Authorize on your PDS.

authorize signed in

Set up CI on a composition

+ → name → Create repository.

new repository

Settings › Actions › Runners: aliceoa.bsky.social (new repositories here name it already).

runners

Settings › Executor: bobvmbuilder.bsky.social/socialweb-computer-cicd → Look it up → bidders → Bind it. Runner: https://knotless-runner.socialweb.computer → follow the sign-in link.

["did:plc:4vcig7s43z3nyqrnepmcfzqt", "did:plc:7q5lnitxv4meizdon5fmhzrq"]

bind bound

Authorize the composition at the runner: its own client, only its modules' scopes.

runner authorize runner signed in

Push

export KNOTLESS_APPVIEW=https://knotless.socialweb.computer
knotless login you.bsky.social
git init -q -b main kc-ci-demo && cd kc-ci-demo
echo 42 > answer.txt && git add . && git commit -q -m answer
git remote add origin knotless://you.bsky.social/kc-ci-demo
git push -u origin main

pushed

A workflow: each push to main rents a VM, runs the steps, releases it.

mkdir -p .knotless/workflows && cat > .knotless/workflows/ci.yml <<'EOF'
on:
  push:
    refs: [refs/heads/main]
steps:
  - name: where
    run: uname -a && id -un && pwd && git log --oneline -1
  - name: test
    run: test "$(cat answer.txt)" = 42 && echo "answer ok"
EOF
git add . && git commit -q -m ci && git push

Deploy

Build on hat-8, ship to the socialweb.computer gateway, run as systemd-managed docker containers behind its Caddy.

git clone https://knotless.dev/johnandersen777.bsky.social/knotless-fork-infra && cd knotless-fork-infra
scripts/build.sh
scripts/deploy.sh
scripts/deploy.sh rollback   # back to the image the last deploy replaced
File
versions.envfork commit, base images by digest
scripts/build.shknotless-fork:<commit> on hat-8
Dockerfilethe fork's image + dumbpipe and ssh (atlibs-iroh reaches a rented machine with them)
scripts/deploy.shdocker save | docker load to the gateway, units, Caddy (backup, validate, reload), restart
host/systemd/serve 127.0.0.1:2590, pages (network only), runner 127.0.0.1:8796
host/caddy//etc/caddy/sites/knotless*.caddy
host/knotless-fork.env/etc/knotless-fork/knotless-fork.env: domains, DIDs; no secrets

Caps (4 vCPU / 8 GB host): serve 1.5 CPU 1.5 GB, pages 1 CPU 512 MB, runner 1 CPU 512 MB; --cpu-shares 256 each, so the gateway wins contention.

Once, after the first deploy: the runner's account logs in at https://knotless.socialweb.computer/oauth/bot?account=aliceoa.bsky.social.

State: /var/lib/knotless-fork/{serve,runner} on the gateway.

Unlicense.