Agent Skills
› lncrawl/lightnovel-crawler
› releasing
releasing
GitHub描述 lightnovel-crawler 项目的发布流程,包括本地版本升级、Git 标签触发 CI/CD 流水线、多平台构建及 PyPI/Docker 发布。适用于执行发布操作或调试 CI 工作流。
Trigger Scenarios
执行项目版本发布
编辑或调试 GitHub Actions 工作流
排查 CI/CD 流水线失败问题
Install
npx skills add lncrawl/lightnovel-crawler --skill releasing -g -y
SKILL.md
Frontmatter
{
"name": "releasing",
"description": "How lncrawl (lightnovel-crawler) releases work — version bump, tag-triggered release pipeline, changelog, per-OS builds, PyPI, Docker, web sync. Use when cutting a release, editing workflows, or debugging CI."
}
Releasing lightnovel-crawler
There is no version-bump GitHub workflow — bumping is local and the release is triggered
by pushing a v* tag.
The chain
make major|minor|patch # scripts/bump.py edits lncrawl/VERSION only
<fill in CHANGELOG.md> # add a "## [x.y.z]" section matching lncrawl/VERSION
make push-tag # tags v$(VERSION) and pushes → fires release.yml
release.yml (on tag v*) then runs, in dependency order:
- validate — reuses
lint.ymlwith the live crawl test enabled. - sync-web — reuses
web.ymlto pull the latest web build. - build-docker — reuses
build-docker.yml(multi-arch → ghcr.io, taggedlatest, the SHA, and the VERSION). - create-release — slices the matching version section out of
CHANGELOG.mdand creates a draft GitHub release. - build-windows / build-mac / build-linux — wheel + PyInstaller exe per OS (Windows also runs Inno Setup for the installer; Linux also uploads the wheel); artifacts attach to the draft release.
- publish-package — publishes the wheel to PyPI, updates short links, and flips the release from draft to published.
Supporting workflows
lint.yml— CI on push/PR touchinglncrawl/**,sources/**, or dependency files: lint (pyright + ruff), wheel build + install smoke test,sources list, anddev migrate verify(schema-drift gate). A live crawl test is opt-in via input/dispatch.web.yml("Sync Web") — onrepository_dispatch: web-build-updatedfrom the lncrawl-web repo (or manual/workflow_call): checks out lncrawl-web'sartifactsbranch intolncrawl/server/web/and auto-commits todev. That directory is committed build output — never hand-edit it.index-gen.yml— ondevpushes touchingsources/**or the index scripts: runsscripts/index_gen.pyand auto-commits the regeneratedsources/_index.json/.zipand README source tables.
Changelog & README
CHANGELOG.mdsections are curated by hand; the release step extracts the section whose heading matcheslncrawl/VERSIONfor the release notes.scripts/changelog_gen.pyis a manual maintainer tool that back-fills missing sections from GitHub Releases.README.mdregions between<!-- auto generated ... -->markers (source tables, CLI help) are rewritten byscripts/index_gen.py— never hand-edit them.
Packaging notes
- PyInstaller via
setup_pyi.py:--onediron Windows,--onefileelsewhere. It bundles the wholesources/tree as data and force-imports every source module so dynamically loaded crawlers survive freezing — a new top-level data dependency may need adding there. - Inno Setup (
installer/installer.iss): the AppId GUID must never change — it identifies the app for upgrades/uninstalls. Install is per-user (PrivilegesRequired=lowest). The doubled{{in the AppId is Inno's escape for a literal brace — don't "fix" it.
Version History
- b76d44a Current 2026-07-25 09:00


