The release procedure involves updating hard-coded version numbers across multiple configuration and documentation files, building new executables, running sanity tests via dig, and deploying the new binaries to remote nameservers.
1. Update Version Numbers
Set the OLD_VERSION and VERSION environment variables, then use sed to update the following files:
bin/make_allspec/spec_suite_test.gok8s/document_root_sslip.io/experimental.htmlk8s/document_root_sslip.io/index.htmlDocker/sslip.io-dns-server/Dockerfileterraform/*/cloud-init.yaml (and .sh)
2. Build and Test
Build the executables using bin/make_all and start the local DNS server. Use dig to verify various record types (A, TXT, CNAME, MX, PTR) and ensure the version status matches the new version.
3. Deploy to Nameservers
Deploy the new sslip.io-dns-server-linux-amd64 binary to remote hosts (ns-00, ns-01, ns-ovh, blocked) via scp, install them to /usr/bin/sslip.io-dns-server, and reboot the hosts. Verify the update by querying version.status.sslip.io via DNS.
export OLD_VERSION=5.1.4
export VERSION=5.1.5
cd ~/workspace/sslip.io
git pull -r --autostash
# Update version numbers
sed -i '' "$OLD_VERSION/$VERSION/g" \
bin/make_all \
spec/spec_suite_test.go \
k8s/document_root_sslip.io/experimental.html \
k8s/document_root_sslip.io/index.html \
Docker/sslip.io-dns-server/Dockerfile \
terraform/ns-00/cloud-init.yaml \
terraform/ns-01/cloud-init.yaml \
terraform/ns-ovh/cloud-init.sh \
terraform/blocked/cloud-init.yaml
# Build and run
bin/make_all
bin/sslip.io-dns-server-darwin-arm64 --port 5333