بنقرة واحدة
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.
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.
| 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>