-
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy path.goreleaser.yml
More file actions
377 lines (350 loc) · 15.3 KB
/
Copy path.goreleaser.yml
File metadata and controls
377 lines (350 loc) · 15.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
version: 2
project_name: web-researcher-mcp
before:
hooks:
- go mod tidy
- go mod verify
builds:
- id: web-researcher-mcp
main: ./cmd/web-researcher-mcp
binary: web-researcher-mcp
env:
- CGO_ENABLED=0
goos:
- linux
- darwin
- windows
goarch:
- amd64
- arm64
ignore:
- goos: windows
goarch: arm64
ldflags:
- -s -w
- -X main.version={{.Version}}
- -X main.commit={{.Commit}}
- -X main.date={{.Date}}
mod_timestamp: "{{ .CommitTimestamp }}"
# Authenticode-sign the Windows .exe IN PLACE right after compile, BEFORE the
# archive/checksum/scoop/winget/cask pipes — so every downstream hash derives
# from the SIGNED binary in one run (no post-hoc re-zip + checksum rewrite, no
# Scoop/WinGet hash drift). The wrapper no-ops for non-windows targets and when
# AZURE_SIGNING_ENABLED != true (snapshot/local/no-creds), mirroring the macOS
# notarize self-gate. See scripts/sign-windows.sh + docs/RELEASE_SIGNING.md.
hooks:
post:
- cmd: ./scripts/sign-windows.sh "{{ .Path }}" "{{ .Os }}" "{{ .Arch }}"
output: true
# macOS Developer ID signing + Apple notarization (cross-platform, OSS — runs on
# the Linux release runner via GoReleaser's bundled quill; no macOS runner, no
# Pro license). Clears Gatekeeper's "developer cannot be verified" warning for
# users who download the darwin tarballs via a browser (the quarantine path;
# Homebrew/curl/Docker installs are unaffected either way). Signs the darwin
# binaries BEFORE the archives block tars them. Self-gated on the signing
# secret, so local/snapshot builds and any run without the cert skip cleanly
# (zero regression) — mirrors the AZURE_SIGNING_ENABLED gate for Windows.
# Stapling is intentionally absent: a bare Mach-O can't be stapled, and
# Gatekeeper verifies notarization online on first launch. See docs/RELEASE_SIGNING.md.
notarize:
macos:
- enabled: '{{ isEnvSet "MACOS_SIGN_P12" }}'
ids:
- web-researcher-mcp
sign:
certificate: "{{.Env.MACOS_SIGN_P12}}"
password: "{{.Env.MACOS_SIGN_PASSWORD}}"
notarize:
issuer_id: "{{.Env.MACOS_NOTARY_ISSUER_ID}}"
key_id: "{{.Env.MACOS_NOTARY_KEY_ID}}"
key: "{{.Env.MACOS_NOTARY_KEY}}"
wait: true
timeout: 20m
archives:
- id: default
format: tar.gz
format_overrides:
- goos: windows
format: zip
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
files:
- README.md
- LICENSE*
# lens JSON files live flat in lenses/ (no subdirs), so "lenses/**/*"
# matched nothing and silently excluded them from release archives.
# "lenses/*" captures the flat files; "lenses/**/*" would only match
# nested paths.
- lenses/*
- server.json
- smithery.yaml
checksum:
name_template: "checksums.txt"
algorithm: sha256
sboms:
- artifacts: archive
dockers:
# GHCR images
- image_templates:
- "ghcr.io/zoharbabin/web-researcher-mcp:{{ .Version }}-amd64"
- "ghcr.io/zoharbabin/web-researcher-mcp:latest-amd64"
use: buildx
build_flag_templates:
- "--platform=linux/amd64"
- "--label=org.opencontainers.image.title={{ .ProjectName }}"
- "--label=org.opencontainers.image.description=Your AI research assistant that cites real sources and stays honest"
- "--label=org.opencontainers.image.version={{ .Version }}"
- "--label=org.opencontainers.image.created={{ .Date }}"
- "--label=org.opencontainers.image.revision={{ .FullCommit }}"
- "--label=org.opencontainers.image.source=https://github.com/zoharbabin/web-researcher-mcp"
- "--label=org.opencontainers.image.licenses=MIT"
- "--label=io.modelcontextprotocol.server.name=io.github.zoharbabin/web-researcher-mcp"
dockerfile: Dockerfile.release
extra_files:
- lenses/
goarch: amd64
goos: linux
- image_templates:
- "ghcr.io/zoharbabin/web-researcher-mcp:{{ .Version }}-arm64"
- "ghcr.io/zoharbabin/web-researcher-mcp:latest-arm64"
use: buildx
build_flag_templates:
- "--platform=linux/arm64"
- "--label=org.opencontainers.image.title={{ .ProjectName }}"
- "--label=org.opencontainers.image.description=Your AI research assistant that cites real sources and stays honest"
- "--label=org.opencontainers.image.version={{ .Version }}"
- "--label=org.opencontainers.image.created={{ .Date }}"
- "--label=org.opencontainers.image.revision={{ .FullCommit }}"
- "--label=org.opencontainers.image.source=https://github.com/zoharbabin/web-researcher-mcp"
- "--label=org.opencontainers.image.licenses=MIT"
- "--label=io.modelcontextprotocol.server.name=io.github.zoharbabin/web-researcher-mcp"
dockerfile: Dockerfile.release
extra_files:
- lenses/
goarch: arm64
goos: linux
# Docker Hub images
- image_templates:
- "docker.io/zoharbabin/web-researcher-mcp:{{ .Version }}-amd64"
- "docker.io/zoharbabin/web-researcher-mcp:latest-amd64"
use: buildx
build_flag_templates:
- "--platform=linux/amd64"
- "--label=org.opencontainers.image.title={{ .ProjectName }}"
- "--label=org.opencontainers.image.description=Your AI research assistant that cites real sources and stays honest"
- "--label=org.opencontainers.image.version={{ .Version }}"
- "--label=org.opencontainers.image.created={{ .Date }}"
- "--label=org.opencontainers.image.revision={{ .FullCommit }}"
- "--label=org.opencontainers.image.source=https://github.com/zoharbabin/web-researcher-mcp"
- "--label=org.opencontainers.image.licenses=MIT"
- "--label=io.modelcontextprotocol.server.name=io.github.zoharbabin/web-researcher-mcp"
dockerfile: Dockerfile.release
extra_files:
- lenses/
goarch: amd64
goos: linux
- image_templates:
- "docker.io/zoharbabin/web-researcher-mcp:{{ .Version }}-arm64"
- "docker.io/zoharbabin/web-researcher-mcp:latest-arm64"
use: buildx
build_flag_templates:
- "--platform=linux/arm64"
- "--label=org.opencontainers.image.title={{ .ProjectName }}"
- "--label=org.opencontainers.image.description=Your AI research assistant that cites real sources and stays honest"
- "--label=org.opencontainers.image.version={{ .Version }}"
- "--label=org.opencontainers.image.created={{ .Date }}"
- "--label=org.opencontainers.image.revision={{ .FullCommit }}"
- "--label=org.opencontainers.image.source=https://github.com/zoharbabin/web-researcher-mcp"
- "--label=org.opencontainers.image.licenses=MIT"
- "--label=io.modelcontextprotocol.server.name=io.github.zoharbabin/web-researcher-mcp"
dockerfile: Dockerfile.release
extra_files:
- lenses/
goarch: arm64
goos: linux
docker_manifests:
# GHCR manifests
- name_template: "ghcr.io/zoharbabin/web-researcher-mcp:{{ .Version }}"
image_templates:
- "ghcr.io/zoharbabin/web-researcher-mcp:{{ .Version }}-amd64"
- "ghcr.io/zoharbabin/web-researcher-mcp:{{ .Version }}-arm64"
- name_template: "ghcr.io/zoharbabin/web-researcher-mcp:latest"
image_templates:
- "ghcr.io/zoharbabin/web-researcher-mcp:latest-amd64"
- "ghcr.io/zoharbabin/web-researcher-mcp:latest-arm64"
# Docker Hub manifests
- name_template: "docker.io/zoharbabin/web-researcher-mcp:{{ .Version }}"
image_templates:
- "docker.io/zoharbabin/web-researcher-mcp:{{ .Version }}-amd64"
- "docker.io/zoharbabin/web-researcher-mcp:{{ .Version }}-arm64"
- name_template: "docker.io/zoharbabin/web-researcher-mcp:latest"
image_templates:
- "docker.io/zoharbabin/web-researcher-mcp:latest-amd64"
- "docker.io/zoharbabin/web-researcher-mcp:latest-arm64"
brews:
- name: web-researcher-mcp
repository:
owner: zoharbabin
name: homebrew-tap
token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}"
directory: Formula
homepage: "https://github.com/zoharbabin/web-researcher-mcp"
description: "Your AI research assistant that cites real sources and stays honest"
license: "MIT"
skip_upload: auto
test: |
system "#{bin}/web-researcher-mcp", "--help"
install: |
bin.install "web-researcher-mcp"
(share/"web-researcher-mcp/lenses").install Dir["lenses/*"] if Dir.exist?("lenses")
# ── Homebrew Cask (macOS, notarized binary) ──────────────────────────────────
# Optional, opt-in macOS distribution alongside the formula above. The cask
# ships the DEVELOPER-ID-SIGNED + NOTARIZED darwin binary, so a `brew install
# --cask` user gets a Gatekeeper-clean artifact. It lives in the SAME tap as the
# formula: `brew install zoharbabin/tap/web-researcher-mcp` resolves to the
# formula (precedence); `brew install --cask zoharbabin/tap/web-researcher-mcp`
# gets this cask. Gated via skip_upload so it no-ops until the tap token exists
# (it shares HOMEBREW_TAP_GITHUB_TOKEN, already set — `auto` skips prereleases).
homebrew_casks:
- name: web-researcher-mcp
repository:
owner: zoharbabin
name: homebrew-tap
token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}"
directory: Casks
homepage: "https://github.com/zoharbabin/web-researcher-mcp"
description: "Your AI research assistant that cites real sources and stays honest"
skip_upload: auto
binaries:
- web-researcher-mcp
# The binary is notarized; clear the quarantine xattr on install so Gatekeeper
# doesn't re-prompt for the Homebrew-placed file.
hooks:
post:
install: |
if OS.mac?
system_command "/usr/bin/xattr",
args: ["-dr", "com.apple.quarantine", "#{staged_path}/web-researcher-mcp"],
sudo: false
end
# ── Scoop (Windows) ──────────────────────────────────────────────────────────
# Publishes a manifest to the zoharbabin/scoop-bucket repo. Gated on
# SCOOP_BUCKET_GITHUB_TOKEN via skip_upload: when the token is absent the
# template yields "true" and GoReleaser builds the manifest but skips the push
# (zero regression). Install: `scoop bucket add zoharbabin https://github.com/
# zoharbabin/scoop-bucket; scoop install web-researcher-mcp`.
scoops:
- name: web-researcher-mcp
repository:
owner: zoharbabin
name: scoop-bucket
token: "{{ .Env.SCOOP_BUCKET_GITHUB_TOKEN }}"
branch: main
directory: bucket
homepage: "https://github.com/zoharbabin/web-researcher-mcp"
description: "Your AI research assistant that cites real sources and stays honest"
license: "MIT"
skip_upload: '{{ if isEnvSet "SCOOP_BUCKET_GITHUB_TOKEN" }}auto{{ else }}true{{ end }}'
# ── WinGet (Windows Package Manager) ─────────────────────────────────────────
# Generates the WinGet manifest and commits it to a branch on the
# zoharbabin/winget-pkgs fork. The maintainer then opens the PR to
# microsoft/winget-pkgs manually for Microsoft's review (smooth because our .exe
# is Azure Trusted Signing-signed with a Microsoft-issued cert). Auto-PR is
# intentionally DISABLED: a fine-grained PAT scoped to the fork can push the
# branch but cannot open a PR against microsoft/winget-pkgs (the upstream returns
# "403 Resource not accessible by personal access token"), and Microsoft's first
# submission requires a manual review regardless — so an auto-PR attempt only
# fails the release for a step that must be manual anyway. Gated on
# WINGET_PKGS_GITHUB_TOKEN via skip_upload. Install (once accepted upstream):
# `winget install zoharbabin.web-researcher-mcp`.
winget:
- name: web-researcher-mcp
publisher: zoharbabin
short_description: "Your AI research assistant that cites real sources and stays honest"
license: "MIT"
homepage: "https://github.com/zoharbabin/web-researcher-mcp"
publisher_url: "https://github.com/zoharbabin"
package_identifier: zoharbabin.web-researcher-mcp
repository:
owner: zoharbabin
name: winget-pkgs
branch: "web-researcher-mcp-{{ .Version }}"
token: "{{ .Env.WINGET_PKGS_GITHUB_TOKEN }}"
skip_upload: '{{ if isEnvSet "WINGET_PKGS_GITHUB_TOKEN" }}false{{ else }}true{{ end }}'
# ── Chocolatey (Windows) ─────────────────────────────────────────────────────
# Builds the .nupkg from the windows amd64 archive. Publishing requires the
# `choco` CLI + the API key; GoReleaser shells out to `choco push`. The release
# workflow installs choco (via mono) and exports CHOCOLATEY_API_KEY only when
# the secret is present; skip_publish stays false so a configured run publishes.
# When CHOCOLATEY_API_KEY is unset the workflow skips the choco setup, GoReleaser
# can't find `choco`, so we keep the build resilient by leaving the nupkg as a
# release artifact regardless. Install: `choco install web-researcher-mcp`.
chocolateys:
- name: web-researcher-mcp
title: "Web Researcher MCP"
authors: "Zohar Babin"
project_url: "https://github.com/zoharbabin/web-researcher-mcp"
license_url: "https://github.com/zoharbabin/web-researcher-mcp/blob/main/LICENSE"
project_source_url: "https://github.com/zoharbabin/web-researcher-mcp"
docs_url: "https://github.com/zoharbabin/web-researcher-mcp/blob/main/README.md"
bug_tracker_url: "https://github.com/zoharbabin/web-researcher-mcp/issues"
icon_url: "https://raw.githubusercontent.com/zoharbabin/web-researcher-mcp/main/assets/logo.png"
copyright: "2026 Zohar Babin"
summary: "Your AI research assistant that cites real sources and stays honest"
description: |
Web Researcher MCP is an MCP server that gives AI assistants web search,
content extraction, academic / patent / SEC-filing / case-law / economic
data lookup, and multi-step research — with real, verifiable citations.
tags: "mcp ai research search web-scraping cli"
require_license_acceptance: false
source_repo: "https://push.chocolatey.org/"
api_key: "{{ .Env.CHOCOLATEY_API_KEY }}"
skip_publish: false
changelog:
sort: asc
use: github
groups:
- title: "New Features"
regexp: '^.*?feat(\([[:word:]]+\))??!?:.+$'
order: 0
- title: "Bug Fixes"
regexp: '^.*?fix(\([[:word:]]+\))??!?:.+$'
order: 1
- title: "Performance"
regexp: '^.*?perf(\([[:word:]]+\))??!?:.+$'
order: 2
- title: "Other"
order: 999
filters:
exclude:
- "^docs:"
- "^test:"
- "^ci:"
- "^chore:"
- "^style:"
release:
github:
owner: zoharbabin
name: web-researcher-mcp
draft: false
prerelease: auto
name_template: "{{.ProjectName}} v{{.Version}}"
header: |
## What's Changed
Full changelog: https://github.com/zoharbabin/web-researcher-mcp/compare/{{ .PreviousTag }}...{{ .Tag }}
footer: |
---
### Docker Images
```bash
# GitHub Container Registry
docker pull ghcr.io/zoharbabin/web-researcher-mcp:{{ .Version }}
# Docker Hub
docker pull docker.io/zoharbabin/web-researcher-mcp:{{ .Version }}
```
### Homebrew
```bash
brew install zoharbabin/tap/web-researcher-mcp
```
### Verify Checksums
```bash
sha256sum -c checksums.txt
```