diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000..d7555e1 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,39 @@ +name: docker-image + +on: + push: + tags: + - "v*" + +jobs: + build-and-push: + runs-on: ubuntu-latest + + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: amd64,arm64 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Gitea Container Registry + uses: docker/login-action@v3 + with: + registry: code.wanderingbadger.dev + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_TOKEN }} + + - name: Build and push multi-arch image + uses: docker/build-push-action@v6 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: | + code.wanderingbadger.dev/tliu93/home-automation:${{ github.ref_name }} + code.wanderingbadger.dev/tliu93/home-automation:latest \ No newline at end of file diff --git a/README.md b/README.md index 6631f21..e9b949b 100644 --- a/README.md +++ b/README.md @@ -229,6 +229,32 @@ docker compose up -d --build docker compose logs -f app ``` +## Container Image CI + +项目提供了一个 release image workflow: + +- workflow 文件:`.github/workflows/docker-image.yml` +- 触发条件:push 匹配 `v*` 的 tag,例如 `v1.0.0` +- registry:`code.wanderingbadger.dev` +- image:`code.wanderingbadger.dev/tliu93/home-automation` + +这个 workflow 会构建并推送 multi-arch image: + +- `linux/amd64` +- `linux/arm64` + +推送的 tag: + +- release tag 本身,例如 `v1.0.0` +- `latest` + +workflow 依赖以下 secrets: + +- `REGISTRY_USERNAME` +- `REGISTRY_TOKEN` + +CI 产出的 image 是给部署机直接 `docker pull` 使用的。部署机不需要 checkout 本仓库,也不需要本地执行 `docker build`。 + ## 运行测试 ```bash @@ -278,19 +304,3 @@ SQLite 持久化目录: - 本地 `./data` - 容器内 `/app/data` - -## 后续迁移建议 - -后续可以在当前骨架上继续迁移这些模块: - -- TickTick integration -- Home Assistant integration -- poo records - -建议继续参考: - -- [当前系统盘点](docs/current-system-inventory.md) -- [Python 重构方案](docs/python-rewrite-plan.md) -- [迁移风险清单](docs/migration-risks.md) -- [Location Recorder 接管说明](docs/location-recorder.md) -- [基础鉴权说明](docs/auth.md)