Files
miti99bot/.github/workflows/ci.yml
T
tiennm99 37edb0f108 feat(monkeyd): export monkeydd.com novels as PDF via /monkeyd_crawl
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.
2026-07-29 23:07:23 +07:00

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 .