mirror of
https://github.com/tiennm99/miti99bot.git
synced 2026-07-31 12:21:04 +00:00
Add the monkeyd module, which crawls a novel and sends the rendered PDF back as a Telegram document. Crawling and rendering come from the monkeyd-crawler submodule, resolved through a go.mod replace directive. The command is admin-only and restricted to monkeydd.com: one run makes hundreds of outbound requests over minutes, and the extractor only understands that site. Exports run one at a time and on a detached goroutine, because handlers are dispatched synchronously and an inline crawl would block every other command. The runtime image gains DejaVuSans; font discovery probes system paths and the distroless base ships none, so PDF rendering would otherwise fail in production. CI checks out submodules and the builder copies the submodule go.mod before go mod download, which needs it to resolve the build list.
71 lines
2.1 KiB
YAML
71 lines
2.1 KiB
YAML
name: ci
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
go:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
go: ['1.26.5']
|
|
steps:
|
|
# The monkeyd module builds against third_party/monkeyd-crawler, which is
|
|
# a submodule wired in through a go.mod replace directive. Without it
|
|
# checked out, every Go step fails to resolve the package.
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: true
|
|
|
|
- uses: actions/setup-go@v6
|
|
with:
|
|
go-version: ${{ matrix.go }}
|
|
cache: true
|
|
|
|
- name: go vet
|
|
run: go vet ./...
|
|
|
|
# Pinning the lint binary to v2.12.x because our .golangci.yml targets
|
|
# Go 1.26 and earlier v2.x releases were built against older Go versions,
|
|
# which the lint config rejects with "Go language version used to build
|
|
# golangci-lint is lower than the targeted Go version".
|
|
# Action v9 is the first Node 24-native release; still accepts any
|
|
# golangci-lint >= v2.1.0.
|
|
- name: golangci-lint
|
|
uses: golangci/golangci-lint-action@v9
|
|
with:
|
|
version: v2.12.2
|
|
|
|
# govulncheck is informational — failures don't block the build because
|
|
# stdlib CVEs surface routinely until the runner image catches up to
|
|
# the latest go-patch release. The signal we care about is dependency
|
|
# vulns, which we react to via go.mod bumps.
|
|
- name: govulncheck
|
|
continue-on-error: true
|
|
run: |
|
|
go install golang.org/x/vuln/cmd/govulncheck@latest
|
|
govulncheck ./...
|
|
|
|
# Testcontainers provisions MongoDB 8 through the runner's Docker daemon;
|
|
# MONGODB_TEST_URL is intentionally unset so CI exercises that path.
|
|
- name: go test
|
|
env:
|
|
# Quiet test logs so real failures stand out.
|
|
LOG_LEVEL: error
|
|
run: go test -race -count=1 -coverprofile=cov.out ./...
|
|
|
|
- name: coverage summary
|
|
run: go tool cover -func=cov.out | tail -1
|
|
|
|
- name: go build
|
|
run: go build ./...
|
|
|
|
- name: docker build
|
|
run: docker build -t miti99bot .
|