with one click
release-strix
// Full release of Strix -- merge develop to main, tag, build multiarch Docker image, build static binaries, push to Docker Hub, update hassio-strix, create GitHub Release with binaries attached.
// Full release of Strix -- merge develop to main, tag, build multiarch Docker image, build static binaries, push to Docker Hub, update hassio-strix, create GitHub Release with binaries attached.
| name | release_strix |
| description | Full release of Strix -- merge develop to main, tag, build multiarch Docker image, build static binaries, push to Docker Hub, update hassio-strix, create GitHub Release with binaries attached. |
| disable-model-invocation | true |
You are performing a full release of Strix. Follow every step exactly. Do NOT skip steps. Do NOT ask for confirmation except where explicitly noted below.
/home/user/Strix/home/user/hassio-strixVersion is injected at build time via ldflags (-X main.version=$VERSION). There is NO hardcoded version in the source code -- main.go has var version = "dev" as default. The Dockerfile passes --build-arg VERSION which maps to the same ldflags. Do NOT edit main.go to set the version.
cd /home/user/Strix
git checkout develop
git pull origin develop
git pull origin main
# Get last release tag
git tag --sort=-version:refname | head -1
# Show all commits since last release
git log main..develop --oneline
# Show changed files
git diff main..develop --stat
Use AskUserQuestion to ask the user which version to release.
Show them:
Offer options:
Wait for answer. Store the chosen version as VERSION (without "v" prefix).
cd /home/user/Strix
gh release download latest --repo eduard256/StrixCamDB --pattern "cameras.db" --clobber
Verify the database was downloaded:
ls -lh cameras.db
cd /home/user/Strix
go test ./...
CGO_ENABLED=0 go build ./...
If tests or build fail -- STOP and report the error. Do not continue.
Read /home/user/Strix/CHANGELOG.md. Add a new section at the top (after the header lines), based on the commits from Step 1. Follow the existing format exactly:
## [VERSION] - YYYY-MM-DD
### Added
- ...
### Fixed
- ...
### Changed
- ...
Use today's date. Categorize commits into Added/Fixed/Changed/Technical sections. Only include sections that have entries. Write clear, user-facing descriptions (not raw commit messages).
cd /home/user/Strix
git add CHANGELOG.md
git commit -m "Release v$VERSION"
git checkout main
git merge develop --no-ff -m "Merge develop into main for v$VERSION release"
git tag v$VERSION
git push origin main --tags
git checkout develop
git merge main
git push origin develop
cd /home/user/Strix
docker buildx build --platform linux/amd64,linux/arm64 \
--build-arg VERSION=$VERSION \
-t eduard256/strix:$VERSION \
-t eduard256/strix:latest \
-t eduard256/strix:$(echo $VERSION | cut -d. -f1-2) \
-t eduard256/strix:$(echo $VERSION | cut -d. -f1) \
--push .
curl -s "https://hub.docker.com/v2/repositories/eduard256/strix/tags/?page_size=10" | jq '.results[].name'
docker manifest inspect eduard256/strix:$VERSION | jq '.manifests[].platform'
Verify the new version tag exists and both amd64 and arm64 platforms are present.
docker run --rm -d --name strix-smoke-test -p 14567:4567 eduard256/strix:$VERSION
sleep 5
curl -s http://localhost:14567/api | jq '.version'
docker stop strix-smoke-test
Verify the health endpoint returns the correct version string.
cd /home/user/hassio-strix
git pull origin main
Edit /home/user/hassio-strix/strix/config.json -- change "version" to the new VERSION.
Edit /home/user/hassio-strix/strix/CHANGELOG.md -- add the same CHANGELOG section as in Step 5.
cd /home/user/hassio-strix
git add strix/config.json strix/CHANGELOG.md
git commit -m "Release v$VERSION"
git push origin main
Build static binaries for both platforms:
cd /home/user/Strix
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -X main.version=$VERSION" -o strix-linux-amd64 .
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "-s -w -X main.version=$VERSION" -o strix-linux-arm64 .
Verify both binaries are statically linked:
file strix-linux-amd64 strix-linux-arm64
Create the release and attach binaries:
cd /home/user/Strix
PREV_TAG=$(git tag --sort=-version:refname | sed -n '2p')
gh release create v$VERSION \
--title "v$VERSION" \
--notes "$(git log --oneline ${PREV_TAG}..v$VERSION)" \
strix-linux-amd64 strix-linux-arm64
Clean up binaries after upload:
rm -f strix-linux-amd64 strix-linux-arm64
Output a summary:
Release v$VERSION complete:
- Git: tag v$VERSION pushed to main
- Docker Hub: eduard256/strix:$VERSION (amd64 + arm64)
- Health check: version "$VERSION" verified
- Binaries: strix-linux-amd64, strix-linux-arm64 attached to GitHub Release
- hassio-strix: config.json updated to $VERSION, pushed to main
- GitHub Release: <URL from gh release create>
Create or redesign frontend pages for Strix. Use when building new HTML pages, redesigning existing ones, or working on any UI task in the www/ directory. Covers design principles, layout patterns, and component usage.
Add a new protocol support to Strix -- full flow from research to implementation. Covers stream handler registration, URL builder updates, database issues, and go2rtc integration.
Add a new device type detector to the Strix probe system. Covers adding new probers, result types, and detector functions.
Build and push dev Docker image for Strix, update hassio-strix dev add-on version.