Let's grow with Comfy.org! We help Comfy Custom Node authors publish their custom nodes in the Comfy Registry. We regularly clone Comfy Custom Node GitHub repositories, perform automated updates to pyproject.toml
and GitHub Actions initialization, and then create pull requests (PRs) to the original repositories. We continue to provide follow-up PRs to solve authors' problems with custom node uploading and publishing.
The Comfy-PR project aims to support and streamline the process for Custom Node Authors to publish their work in the Comfy Registry. Here's why this initiative is essential:
-
Simplify Node Publishing: Provide tools and assistance to make publishing Custom Nodes straightforward, allowing authors to concentrate on development rather than the complexities of the publishing process.
-
Expand Node Availability: Streamlined publishing will increase the number of Custom Nodes in the Comfy Registry, enriching the ecosystem and offering more options to users.
-
Encourage Collaboration: Scanning GitHub repositories and providing follow-up support fosters collaboration, knowledge-sharing, and a stronger sense of community among Custom Node Authors and users.
-
Ensure Quality and Compliance: Automate checks and provide guidance to maintain high-quality standards and compliance within the Comfy Registry.
-
Resolve Publishing Issues Promptly: Address Custom Node Authors' issues during the publishing process quickly, reducing frustration and improving the overall user experience.
-
Strengthen the Comfy Community: Help solve users' problems with Custom Node uploading and publishing, contributing to a more vibrant, supportive, and engaged community.
-
Promote Innovation: Lower barriers to publishing Custom Nodes to encourage innovation and creativity within the community, leading to the development of novel and exciting nodes.
Through these efforts, Comfy-PR seeks to create an environment where Custom Node Authors can thrive and users can access a diverse and high-quality array of Custom Nodes.
- fork repo
- clone repo locally
- create pyproject branch, run comfy node init . Push branch.
- create publish branch, create in a Github workflow file. Push branch.
- create PR to original repository with template PR description.
- Submit PR
- Clean local debris before clone
- DOING: Export PR status into csv for @robin
- Fetch repos from CM & CR list
- Make diff
- Notify to slack channel
- Fetch repo status (private or archived or ...)
- Fetch pr status (open / merged / closed) + comments
- Fetch pr comments
- Automaticaly find candidates, and do the cli does
- Mention related prs in dashboard #1
- Analyze Totals
- license schema updator
- bypass repo
- Follow-up prs by state
- Issues Comment
- Slack
- Delete the forked repo which is Merged
Dashboard Web Site https://comfy-pr.vercel.app
- A dashboard csv/yaml exporter site for @robin
- pr dashboard
If you wish to change which Github account the Pull Requests come from, then you need to place a Github token into the Actions Secrets
GH_TOKEN_COMFY_PR = ************
bunx comfy-pr [...GITHUB_REPO_URLS]
A demo .env should be sth like:
# your github token
GH_TOKEN=ghp_WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
# the pr source organization/ leave it blank to use yourself's account.
FORK_OWNER="ComfyNodePRs"
# PR prefix
FORK_PREFIX="PR-"
GO https://github.com/settings/tokens?type=beta to get an Github Access key
Check 3 permissions for all of your repositories
- Pull requests Access: Read and write
- Workflows Access: Read and write
- Metadata Access: Read-only
And save your GH_TOKEN into .env file
Must provide to push code automaticaly, btw prob. you've already setup.
Run ssh-keygen
, got id_rsa.pub
, Then add into here https://github.com/settings/keys
Ways to run this script
- Local run
- Docker run (also local)
- Docker run at cloud (TODO)
After configured your .env file, run docker compose build and up.
git clone https://github.com/drip-art/Comfy-Registry-PR
cd Comfy-Registry-PR
docker compose build
docker compose up
docker run --rm -it \
-v $HOME/.ssh:/root/.ssh:ro \
-e GH_TOKEN=ghp_WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW \
-e REPO=https://github.com/snomiao/ComfyNode-Registry-test \
snomiao/comfy-registry-pr
git clone https://github.com/drip-art/Comfy-Registry-PR
# setup comfy-cli environment
cd Comfy-Registry-PR
python3 -m venv .venv
chmod +x ./.venv/bin/*
source ./.venv/bin/activate
pip3 install comfy-cli
# setup bun for js-script
curl -fsSL https://bun.sh/install | bash
bun i
# and
bun src/cli.ts [REPO_PATH_NEED_TO_PR]
# for example
bun src/cli.ts https://github.com/snomiao/ComfyNode-Registry-test
git clone https://github.com/drip-art/Comfy-Registry-PR
@REM setup comfy-cli environment
cd Comfy-Registry-PR
python3 -m venv .venv
.\.venv\Scripts\activate
pip3 install comfy-cli
@REM run with tsx
npx -y cross-env REPO=https://github.com/snomiao/ComfyNode-Registry-test npx -y tsx src/cli.ts
Don't change it unless you know what you are doing.
ENV FORK_OWNER=drip-art
ENV FORK_PREFIX=PR-
# Unset it into current authorized user's name and email (from your github api token).
ENV GIT_USEREMAIL=comfy-ci@drip.art
ENV GIT_USERNAME=comfy-ci
# Create comfy pr dir and go into it
mkdir comfy-pr
cd comfy-pr
# Prepare code and environments
git clone https://github.com/drip-art/Comfy-Registry-PR .
# Prepare bun
# go here - [Installation \| Bun Docs]( https://bun.sh/docs/installation )
# Install project
bun i
# Prepare bun
bun i
-
Setup envs in the usages section above (plz check bun src/cli.ts runnable first)
-
Run mongodb with docker compose
docker compose -f docker-compose.mongodb.yml up
services:
mongdb:
restart: always
image: mongo
ports: ["27017:27017"]
volumes: [./data/mongodb:/data/db]
And fill URI into env
MONGODB_URI=mongodb://localhost:27017
- Play with codes...
# To initialize your database, run:
bun src/index.ts
# To start develop in any of other scripts:
# Feel free to run any scripts in src/, they are safe to re-run and stop in any time.
bun src/THAT_FILE_YOU_WANT_TO_RUN.ts
# To check if you didn't break anything?
bun test --watch
Make .env.development.local as
MONGODB_URI_INSPECT={{production db, readonly-permission uri}}
MONGODB_URI=$MONGODB_URI_INSPECT
And inspect db with script, e.g. src/checkPRsFailures.ts