remove unused research docs
This commit is contained in:
parent
f3cc7c9401
commit
4b6d75260e
1 changed files with 0 additions and 208 deletions
|
|
@ -1,208 +0,0 @@
|
||||||
# Picoclaw Nightly Build Research
|
|
||||||
|
|
||||||
## Repository Overview
|
|
||||||
|
|
||||||
**Repository**: https://github.com/sipeed/picoclaw
|
|
||||||
**Current Branch**: `main`
|
|
||||||
**Latest Commit**: `66e6fb6`
|
|
||||||
|
|
||||||
### Project Structure
|
|
||||||
|
|
||||||
```
|
|
||||||
picoclaw/
|
|
||||||
├── .github/workflows/ # GitHub Actions workflows
|
|
||||||
│ ├── build.yml # CI build on push to main
|
|
||||||
│ ├── pr.yml # PR validation
|
|
||||||
│ ├── release.yml # Release workflow (manual trigger)
|
|
||||||
│ └── upload-tos.yml # Upload to Volcengine TOS
|
|
||||||
├── .goreleaser.yaml # GoReleaser configuration
|
|
||||||
├── Makefile # Build targets
|
|
||||||
├── go.mod # Go 1.25.7
|
|
||||||
├── cmd/ # Main entry points
|
|
||||||
│ ├── picoclaw/ # Main binary
|
|
||||||
│ ├── picoclaw-launcher/ # Web launcher
|
|
||||||
│ └── picoclaw-launcher-tui/ # TUI launcher
|
|
||||||
├── pkg/ # Core packages
|
|
||||||
│ ├── agent/ # Agent logic
|
|
||||||
│ ├── auth/ # Authentication
|
|
||||||
│ ├── channels/ # Communication channels
|
|
||||||
│ ├── config/ # Configuration
|
|
||||||
│ ├── memory/ # Memory management
|
|
||||||
│ ├── providers/ # LLM providers
|
|
||||||
│ ├── skills/ # Skills system
|
|
||||||
│ └── tools/ # Tool functions
|
|
||||||
├── docker/ # Docker configurations
|
|
||||||
└── docs/ # Documentation
|
|
||||||
```
|
|
||||||
|
|
||||||
## Existing Workflows
|
|
||||||
|
|
||||||
### 1. build.yml
|
|
||||||
- **Trigger**: Push to `main`
|
|
||||||
- **Action**: Builds picoclaw using `make build-all`
|
|
||||||
- **Platform**: Ubuntu latest
|
|
||||||
|
|
||||||
### 2. release.yml
|
|
||||||
- **Trigger**: Manual workflow dispatch
|
|
||||||
- **Actions**:
|
|
||||||
- Creates git tag
|
|
||||||
- Runs GoReleaser to build for all platforms
|
|
||||||
- Uploads to GitHub Releases
|
|
||||||
- Optionally uploads to TOS
|
|
||||||
- **Platforms**: Linux, Windows, Darwin, FreeBSD (amd64, arm64, riscv64, loong64, arm)
|
|
||||||
- **Docker**: Multi-platform builds to GHCR and DockerHub
|
|
||||||
|
|
||||||
### 3. pr.yml
|
|
||||||
- **Trigger**: Pull requests
|
|
||||||
- **Action**: PR validation (details not visible in current session)
|
|
||||||
|
|
||||||
### 4. upload-tos.yml
|
|
||||||
- **Trigger**: Called from release workflow
|
|
||||||
- **Action**: Uploads artifacts to Volcengine TOS
|
|
||||||
|
|
||||||
## Build System
|
|
||||||
|
|
||||||
### Makefile Targets
|
|
||||||
| Target | Description |
|
|
||||||
|--------|-------------|
|
|
||||||
| `build` | Build for current platform |
|
|
||||||
| `build-all` | Build for all platforms (8 variants) |
|
|
||||||
| `build-whatsapp-native` | Build with WhatsApp native support |
|
|
||||||
| `build-linux-arm` | Build for Linux ARMv7 |
|
|
||||||
| `build-linux-arm64` | Build for Linux ARM64 |
|
|
||||||
| `build-pi-zero` | Build for Raspberry Pi Zero 2 W |
|
|
||||||
| `install` | Install to `~/.local/bin` |
|
|
||||||
| `test` | Run tests |
|
|
||||||
| `lint` | Run golangci-lint |
|
|
||||||
| `docker-build` | Build minimal Docker image (Alpine) |
|
|
||||||
| `docker-build-full` | Build full Docker image (Node.js 24) |
|
|
||||||
|
|
||||||
### GoReleaser Configuration
|
|
||||||
|
|
||||||
**Builds:**
|
|
||||||
- `picoclaw` - Main binary
|
|
||||||
- `picoclaw-launcher` - Web launcher
|
|
||||||
- `picoclaw-launcher-tui` - TUI launcher
|
|
||||||
|
|
||||||
**Target Platforms:**
|
|
||||||
- OS: Linux, Windows, Darwin, FreeBSD
|
|
||||||
- Arch: amd64, arm64, riscv64, loong64, arm (v6, v7)
|
|
||||||
|
|
||||||
**Docker Images:**
|
|
||||||
- `ghcr.io/<owner>/picoclaw`
|
|
||||||
- `docker.io/<repository>`
|
|
||||||
- Platforms: linux/amd64, linux/arm64, linux/riscv64
|
|
||||||
|
|
||||||
## Nightly Build Requirements
|
|
||||||
|
|
||||||
### Goals
|
|
||||||
1. Build daily snapshots of the `main` branch
|
|
||||||
2. Upload artifacts to GitHub Releases (as pre-release)
|
|
||||||
3. Optionally build and push Docker images
|
|
||||||
4. Keep limited number of nightly builds (cleanup old ones)
|
|
||||||
|
|
||||||
### Design Decisions
|
|
||||||
|
|
||||||
| Decision | Rationale |
|
|
||||||
|----------|-----------|
|
|
||||||
| **Cron Schedule**: `0 2 * * *` (2 AM UTC) | Off-peak hours, allows testing during business day |
|
|
||||||
| **Release Type**: Pre-release | Clearly distinguishes from stable releases |
|
|
||||||
| **Tag Format**: `nightly-YYYYMMDD` | Easy to identify and sort by date |
|
|
||||||
| **Artifact Retention**: 30 days | Balance between availability and storage |
|
|
||||||
| **Docker Tags**: `nightly`, `nightly-YYYYMMDD` | Allow both latest and pinned versions |
|
|
||||||
|
|
||||||
## Proposed Nightly.yml Workflow
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
name: Nightly Build
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: '0 2 * * *' # Daily at 2 AM UTC
|
|
||||||
workflow_dispatch: # Allow manual trigger
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
nightly:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Setup Go
|
|
||||||
uses: actions/setup-go@v6
|
|
||||||
with:
|
|
||||||
go-version-file: go.mod
|
|
||||||
|
|
||||||
- name: Set nightly tag
|
|
||||||
id: tag
|
|
||||||
run: |
|
|
||||||
NIGHTLY_TAG="nightly-$(date +%Y%m%d)"
|
|
||||||
echo "tag=$NIGHTLY_TAG" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- name: Create/Update nightly tag
|
|
||||||
run: |
|
|
||||||
git config user.name "github-actions[bot]"
|
|
||||||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
||||||
git tag -f "${{ steps.tag.outputs.tag }}"
|
|
||||||
git push -f origin "${{ steps.tag.outputs.tag }}"
|
|
||||||
|
|
||||||
- name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v3
|
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
|
|
||||||
- name: Login to GHCR
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
registry: ghcr.io
|
|
||||||
username: ${{ github.actor }}
|
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Run GoReleaser (snapshot)
|
|
||||||
uses: goreleaser/goreleaser-action@v6
|
|
||||||
with:
|
|
||||||
distribution: goreleaser
|
|
||||||
version: ~> v2
|
|
||||||
args: release --clean --snapshot
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
NIGHTLY_TAG: ${{ steps.tag.outputs.tag }}
|
|
||||||
DOCKERHUB_IMAGE_NAME: ${{ vars.DOCKERHUB_REPOSITORY }}
|
|
||||||
|
|
||||||
- name: Upload artifacts
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: nightly-artifacts
|
|
||||||
path: dist/
|
|
||||||
|
|
||||||
- name: Clean old nightly releases
|
|
||||||
run: |
|
|
||||||
# Keep only last 30 nightly releases
|
|
||||||
gh release list \
|
|
||||||
--query "[startsWith(name, 'nightly-')] | [30:].[].name" \
|
|
||||||
--json name \
|
|
||||||
-t '{{ range . }}{{ .name }}{{ "\n" }}{{ end }}' \
|
|
||||||
| xargs -I {} gh release delete {} --yes || true
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Notes
|
|
||||||
|
|
||||||
1. **Security**: No secrets required for basic nightly builds
|
|
||||||
2. **Storage**: GitHub provides 2GB free storage; implement cleanup if needed
|
|
||||||
3. **Testing**: Nightly builds serve as canary builds for testing
|
|
||||||
4. **Docker**: Can optionally push `nightly` Docker tags
|
|
||||||
5. **Notifications**: Could add Slack/discord notifications on failure
|
|
||||||
|
|
||||||
## References
|
|
||||||
|
|
||||||
- GoReleaser docs: https://goreleaser.com/
|
|
||||||
- GitHub Actions docs: https://docs.github.com/en/actions
|
|
||||||
- Picoclaw docs: /docs/tools_configuration.md
|
|
||||||
Loading…
Add table
Reference in a new issue