feat(update): adopt framework rc2 release driver and checksum flow
This commit is contained in:
parent
9b0bd7e175
commit
3ba3475753
4 changed files with 52 additions and 4 deletions
|
|
@ -12,6 +12,7 @@ jobs:
|
|||
env:
|
||||
BINARY_NAME: email-mcp
|
||||
BUILD_PATH: build/email-mcp-linux-amd64
|
||||
CHECKSUM_PATH: build/email-mcp-linux-amd64.sha256
|
||||
MANIFEST_PATH: mcp.toml
|
||||
|
||||
steps:
|
||||
|
|
@ -28,6 +29,14 @@ jobs:
|
|||
- name: Build linux amd64 binary
|
||||
run: make build GOOS=linux GOARCH=amd64
|
||||
|
||||
- name: Generate binary checksum
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
asset_name="$(basename "${BUILD_PATH}")"
|
||||
checksum_value="$(sha256sum "${BUILD_PATH}" | cut -d' ' -f1)"
|
||||
printf '%s %s\n' "${checksum_value}" "${asset_name}" > "${CHECKSUM_PATH}"
|
||||
|
||||
- name: Generate release notes
|
||||
id: release_notes
|
||||
env:
|
||||
|
|
@ -165,3 +174,30 @@ jobs:
|
|||
cat asset.json >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Upload checksum asset
|
||||
env:
|
||||
REPOSITORY: ${{ github.repository }}
|
||||
API_URL: ${{ github.api_url }}
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
RELEASE_ID: ${{ steps.release.outputs.release_id }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
owner="${REPOSITORY%%/*}"
|
||||
repo="${REPOSITORY#*/}"
|
||||
asset_name="$(basename "${CHECKSUM_PATH}")"
|
||||
upload_url="${API_URL}/repos/${owner}/${repo}/releases/${RELEASE_ID}/assets?name=${asset_name}"
|
||||
|
||||
http_code="$(curl -sS -o asset.json -w '%{http_code}' \
|
||||
-X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/octet-stream" \
|
||||
--data-binary @"${CHECKSUM_PATH}" \
|
||||
"${upload_url}")"
|
||||
|
||||
if [ "${http_code}" -lt 200 ] || [ "${http_code}" -ge 300 ]; then
|
||||
echo "asset upload failed with status ${http_code}" >&2
|
||||
cat asset.json >&2
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
|||
10
README.md
10
README.md
|
|
@ -110,15 +110,20 @@ credentials not configured; run `email-mcp setup`
|
|||
./email-mcp update
|
||||
```
|
||||
|
||||
Le manifeste de ce repo pointe vers l’endpoint Gitea :
|
||||
Le manifeste de ce repo utilise le driver Gitea du framework :
|
||||
|
||||
```toml
|
||||
binary_name = "email-mcp"
|
||||
|
||||
[update]
|
||||
source_name = "email-mcp releases"
|
||||
driver = "gitea"
|
||||
repository = "AI/email-mcp"
|
||||
base_url = "https://gitea.lclr.dev"
|
||||
latest_release_url = "https://gitea.lclr.dev/api/v1/repos/AI/email-mcp/releases/latest"
|
||||
asset_name_template = "{binary}-{os}-{arch}{ext}"
|
||||
checksum_asset_name = "{asset}.sha256"
|
||||
checksum_required = true
|
||||
token_env_names = ["GITEA_TOKEN"]
|
||||
```
|
||||
|
||||
## Diagnostic
|
||||
|
|
@ -173,6 +178,7 @@ Une release est générée automatiquement quand tu pousses un tag `v*` sur le r
|
|||
Les assets publiés sont :
|
||||
|
||||
- `build/email-mcp-linux-amd64`
|
||||
- `build/email-mcp-linux-amd64.sha256`
|
||||
- `mcp.toml`
|
||||
|
||||
## Compiler depuis les sources
|
||||
|
|
|
|||
|
|
@ -705,8 +705,9 @@ func TestAppRunUpdateLoadsManifestNearExecutable(t *testing.T) {
|
|||
if err := os.WriteFile(filepath.Join(tempDir, "mcp.toml"), []byte(`
|
||||
[update]
|
||||
source_name = "test"
|
||||
driver = "gitea"
|
||||
repository = "AI/email-mcp"
|
||||
base_url = "http://127.0.0.1:1"
|
||||
latest_release_url = "http://127.0.0.1:1/releases/latest"
|
||||
`), 0o600); err != nil {
|
||||
t.Fatalf("WriteFile manifest returned error: %v", err)
|
||||
}
|
||||
|
|
|
|||
7
mcp.toml
7
mcp.toml
|
|
@ -3,8 +3,13 @@ docs_url = "https://gitea.lclr.dev/AI/email-mcp"
|
|||
|
||||
[update]
|
||||
source_name = "email-mcp releases"
|
||||
driver = "gitea"
|
||||
repository = "AI/email-mcp"
|
||||
base_url = "https://gitea.lclr.dev"
|
||||
latest_release_url = "https://gitea.lclr.dev/api/v1/repos/AI/email-mcp/releases/latest"
|
||||
asset_name_template = "{binary}-{os}-{arch}{ext}"
|
||||
checksum_asset_name = "{asset}.sha256"
|
||||
checksum_required = true
|
||||
token_env_names = ["GITEA_TOKEN"]
|
||||
|
||||
[environment]
|
||||
known = ["EMAIL_MCP_PROFILE", "EMAIL_MCP_HOST", "EMAIL_MCP_USERNAME", "EMAIL_MCP_PASSWORD"]
|
||||
|
|
|
|||
Loading…
Reference in a new issue