fix(ci): fetch GeoLite2 mmdb before agent build

Agent embeds GeoLite2-Country.mmdb but the file is not checked into the
repository. Download it in CI, Docker, and Makefile build paths via
scripts/fetch-agent-geoip-mmdb.sh, and correct the gitignore exception
path for the geoipdata package.
This commit is contained in:
ryan
2026-06-20 14:03:43 +08:00
parent 6975a6c290
commit 3a368119e5
6 changed files with 27 additions and 1 deletions
+3
View File
@@ -298,6 +298,9 @@ jobs:
with:
go-version-file: go.mod
- name: Fetch embedded GeoIP database
run: bash scripts/fetch-agent-geoip-mmdb.sh
- name: Build Agent
env:
CGO_ENABLED: 0
+1 -1
View File
@@ -77,4 +77,4 @@ profile.cov
.grok
/.gomodcache/
*.mmdb
!openflare_agent/internal/geoipdata/GeoLite2-Country.mmdb
!internal/apps/agent/geoipdata/GeoLite2-Country.mmdb
+1
View File
@@ -40,6 +40,7 @@ build-backend:
build-agent:
@echo "==> Building agent version=$(VERSION)..."
bash scripts/fetch-agent-geoip-mmdb.sh
go build \
-ldflags "-s -w -X '$(MODULE)/internal/apps/agent/config.Version=$(VERSION)'" \
-o bin/openflare-agent \
+3
View File
@@ -17,6 +17,9 @@ RUN --mount=type=cache,target=/go/pkg/mod \
go mod download
COPY . .
RUN apk add --no-cache curl \
&& curl -fsSL -o internal/apps/agent/geoipdata/GeoLite2-Country.mmdb \
https://raw.githubusercontent.com/Loyalsoldier/geoip/release/GeoLite2-Country.mmdb
RUN --mount=type=cache,target=/go/pkg/mod \
--mount=type=cache,target=/root/.cache/go-build \
go build -trimpath -ldflags "-s -w -X 'github.com/Rain-kl/Wavelet/internal/apps/agent/config.Version=$VERSION'" -o /build/bin/openflare-agent ./cmd/agent/main.go
+3
View File
@@ -16,6 +16,9 @@ sidebar: false
## [Unreleased]
### 修复
- 修复 Agent CI/Docker 构建:`go:embed` 所需的 `GeoLite2-Country.mmdb` 在构建前通过 `scripts/fetch-agent-geoip-mmdb.sh` 自动拉取。
## [v2.3.4] - 2026-06-17
+16
View File
@@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
TARGET="${ROOT}/internal/apps/agent/geoipdata/GeoLite2-Country.mmdb"
URL="${GEOIP_MMDB_URL:-https://raw.githubusercontent.com/Loyalsoldier/geoip/release/GeoLite2-Country.mmdb}"
mkdir -p "$(dirname "$TARGET")"
curl -fsSL -o "$TARGET" "$URL"
if [ ! -s "$TARGET" ]; then
echo "downloaded GeoIP database is empty: $TARGET" >&2
exit 1
fi
echo "GeoIP database ready: $TARGET"