Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
7a465eb
💚 Specify node version (#460)
wei Jul 25, 2022
395cf17
💚 Specify node version
wei Jul 25, 2022
6e24cee
:arrow_up: Bump moment from 2.29.2 to 2.29.4 (#461)
dependabot[bot] Jul 25, 2022
1ce0edd
:arrow_up: Bump eventsource from 1.0.7 to 1.1.1 (#450)
dependabot[bot] Jul 25, 2022
10f17ea
:arrow_up: Bump ansi-regex from 4.1.0 to 4.1.1 (#442)
dependabot[bot] Jul 25, 2022
d36caf2
Bump smee-client from 1.2.2 to 1.2.3 (#463)
dependabot[bot] Jul 25, 2022
6d0f601
Bump nodemon from 2.0.15 to 2.0.19 (#462)
dependabot[bot] Jul 26, 2022
5a22027
:arrow_up: Bump jest from 27.4.7 to 28.1.3 (#459)
dependabot[bot] Jul 27, 2022
6f902eb
Bump nodemon from 2.0.19 to 2.0.20 (#475)
dependabot[bot] Sep 16, 2022
dfc2eb4
Bump handlebars from 4.7.6 to 4.7.7 (#477)
dependabot[bot] Sep 30, 2022
eb7d6b8
Bump joi from 17.6.0 to 17.6.2 (#482)
dependabot[bot] Sep 30, 2022
541f8aa
Bump json-schema from 0.2.3 to 0.4.0 (#476)
dependabot[bot] Oct 11, 2022
98273e5
Bump joi from 17.6.2 to 17.6.3 (#486)
dependabot[bot] Oct 11, 2022
c4cb5ed
Bump joi from 17.6.3 to 17.7.0 (#495)
dependabot[bot] Nov 2, 2022
992fe0b
Bump qs from 6.5.2 to 6.5.3 (#503)
dependabot[bot] Dec 17, 2022
15a821a
Bump express from 4.17.1 to 4.18.2 (#504)
dependabot[bot] Dec 17, 2022
cc6c2b2
Bump minimatch from 3.0.4 to 3.1.2 (#505)
dependabot[bot] Jun 21, 2023
43e6ebe
Bump word-wrap from 1.2.3 to 1.2.4 (#546)
dependabot[bot] Jul 19, 2023
e24c63b
Bump semver from 5.7.1 to 5.7.2 (#545)
dependabot[bot] Jul 19, 2023
2ce229e
Bump cookiejar from 2.1.3 to 2.1.4 (#511)
dependabot[bot] Jul 19, 2023
ddbed98
Update GitHub actions (#554)
kurtmckee Oct 23, 2023
95302f3
Update publish.yml
wei Oct 23, 2023
c7209a1
chore: update triggered badge
wei Mar 30, 2024
ac1e363
chore: update README badges
wei Apr 4, 2024
c0c27e4
chore(devcontainer): add dev container support
wei Apr 4, 2024
fd8f7ae
chore: remove pull 1.0
wei Apr 4, 2024
abb345c
chore(devcontainer): add activemq artemis
wei Apr 4, 2024
b56f274
chore: remove publish.yml
wei Sep 24, 2024
c59a172
chore(devcontainer): update mongo, add mongo-express
wei Sep 24, 2024
c6de8de
chore(devcontainer): switch to activemq classic
wei Sep 24, 2024
c28635d
chore(devcontainer): update devcontainer configuration
wei Sep 26, 2024
5f6d6be
chore(devcontainer): update devcontainer
wei Nov 16, 2024
0149da5
feat: set up @wei/probot-scheduler
wei Nov 16, 2024
df32610
style: fix formatting
wei Nov 16, 2024
4002944
fix: issue with redis connection
wei Nov 16, 2024
0382847
feat(schema): add zod schema validation
wei Nov 16, 2024
d007468
feat: add pull routine check processing logic
wei Nov 16, 2024
ad156e1
feat: connect processor with pull
wei Nov 16, 2024
8705223
feat: add full-sync and manual-process
wei Nov 16, 2024
3990f7d
feat: add routes
wei Nov 16, 2024
bd83861
feat(docker): add Dockerfile and docker compose
wei Nov 17, 2024
5c59eeb
docs: update README and CONTRIBUTING
wei Nov 17, 2024
f5a0b39
refactor: move stats routes
wei Nov 17, 2024
42465b2
docs(README): update badges
wei Nov 17, 2024
c4c541e
feat: add app slug and publish workflow
wei Nov 17, 2024
0209269
feat: add process route
wei Nov 17, 2024
e6c4761
feat: improve Dockerfile performance
wei Nov 17, 2024
bdd6d4a
feat: add version to PR body
wei Nov 17, 2024
4a986a7
fix: environment variable issues
wei Nov 17, 2024
244075e
feat: reduce cron to once a day
wei Nov 18, 2024
1119d1a
chore: upgrade dependencies
wei Nov 18, 2024
bb8044a
refactor: save repo api request
wei Nov 18, 2024
55083f4
chore: upgrade @wei/probot-scheduler
wei Nov 18, 2024
7155cd8
chore: upgrade @wei/probot-scheduler
wei Nov 18, 2024
6697108
fix: full-sync not scheduling jobs
wei Nov 18, 2024
4ce1e77
docs: update badges
wei Nov 18, 2024
5b9817f
docs: update badges
wei Nov 18, 2024
2eaca01
feat(github-actions): add auto tag workflow
wei Nov 18, 2024
c1ea9dd
fix(github-actions): publish workflow permissions
wei Nov 18, 2024
8ecf9f6
chore(github-actions): add workflow dispatch
wei Nov 18, 2024
833da07
docs(README): update badges
wei Nov 18, 2024
f4c16e2
fix: redis max number of clients reached
wei Nov 19, 2024
acd5c60
chore: add @wei/pluralize for logging
wei Nov 19, 2024
a6aa069
feat: increase cron schedule to every 8 hours
wei Nov 19, 2024
b81fea0
chore(deps): bump docker/build-push-action from 5 to 6 (#604)
dependabot[bot] Nov 19, 2024
f5ecb77
docs(README): update badges for github pages
wei Nov 20, 2024
511832e
chore: upgrade @wei/probot-scheduler
wei Nov 19, 2024
9b6357e
feat: add worker timeout
wei Nov 21, 2024
1c12d9b
chore: increase job frequency to every 6 hours
wei Nov 21, 2024
d989511
chore(deps): upgrade deno 2.1.1
wei Nov 21, 2024
6d442f9
chore(deps): upgrade @wei/probot-scheduler
wei Nov 21, 2024
cd2025f
chore(deps): bump actions/attest-build-provenance from 1 to 2 (#605)
dependabot[bot] Dec 10, 2024
a5b810c
feat: lock pull requests after creation
wei Jun 26, 2025
26c0dff
chore: upgrade deno dependencies
wei Jun 26, 2025
aa74e45
ci: enhance Docker workflow to handle pull requests
wei Jun 26, 2025
62d4792
release: v2.0.0-alpha.2
wei Jun 26, 2025
bd4bd5c
chore: add debug logging for open PR checks in getOpenPR method
wei Jul 14, 2025
84d7bd2
feat: add mergeUnstable option to default pull configuration
wei Jul 14, 2025
227fc55
chore(deps): bump actions/checkout from 4 to 5 (#634)
dependabot[bot] Aug 31, 2025
38ac68c
fix: redis graceful exit and job cleanup (#636)
wei Sep 13, 2025
197574c
chore(deps): bump actions/checkout from 5 to 6 (#643)
dependabot[bot] Nov 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ARG VARIANT=ubuntu
ARG DENO_VERSION=2.3.7

FROM denoland/deno:bin-${DENO_VERSION} AS deno
FROM mcr.microsoft.com/vscode/devcontainers/base:${VARIANT}

COPY --from=deno /deno /usr/local/bin/deno
39 changes: 39 additions & 0 deletions .devcontainer/pull-base/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"name": "[Pull App] Base Dev Environment",
"dockerComposeFile": [
"docker-compose.yml"
],
"service": "dev",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",

"customizations": {
"vscode": {
"extensions": [
"github.copilot",
"denoland.vscode-deno",
"mongodb.mongodb-vscode"
]
}
},

"features": {
"ghcr.io/devcontainers/features/github-cli:1": {
"installDirectlyFromGitHubRelease": true,
"version": "latest"
},
"ghcr.io/jckimble/devcontainer-features/ngrok:3": {
"version": "stable"
}
},

"forwardPorts": [
"app:3000",
"mongodb:27017",
"redis:6379"
],

"postStartCommand": {
"git-config": "git config --global --add safe.directory /workspaces/${localWorkspaceFolderBasename}; git config --global core.autocrlf true; git config --global core.editor nano",
"deno-hooks": "deno task install-hooks"
}
}
49 changes: 49 additions & 0 deletions .devcontainer/pull-base/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
version: "3.8"

services:
dev:
build:
context: ..
dockerfile: Dockerfile
volumes:
- ../../..:/workspaces:cached

# Overrides default command so things don't shut down after the process ends.
command: sleep infinity

# Create a network and connect the app container to it
networks:
- devcontainer-network

mongodb:
image: mongo:8
restart: unless-stopped
volumes:
- mongodb-data:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: mongodb_password
# Connect using mongodb://root:mongodb_password@mongodb:27017/

# Add "forwardPorts": ["mongodb:27017"] to **devcontainer.json** to forward MongoDB locally.
# (Adding the "ports" property to this file will not forward from a Codespace.)
networks:
- devcontainer-network

redis:
image: redis:7.4
restart: unless-stopped
volumes:
- redis-data:/data

# Add "forwardPorts": ["redis:6379"] to **devcontainer.json** to forward Redis locally.
# (Adding the "ports" property to this file will not forward from a Codespace.)
networks:
- devcontainer-network

networks:
devcontainer-network:

volumes:
mongodb-data:
redis-data:
43 changes: 43 additions & 0 deletions .devcontainer/pull-full/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"name": "[Pull App] Full Dev Environment (amd64)",
"dockerComposeFile": [
"../pull-base/docker-compose.yml",
"docker-compose.yml"
],
"service": "dev",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",

"customizations": {
"vscode": {
"extensions": [
"github.copilot",
"denoland.vscode-deno",
"mongodb.mongodb-vscode"
]
}
},

"features": {
"ghcr.io/devcontainers/features/github-cli:1": {
"installDirectlyFromGitHubRelease": true,
"version": "latest"
},
"ghcr.io/jckimble/devcontainer-features/ngrok:3": {
"version": "stable"
}
},

"forwardPorts": [
"app:3000",
"mongodb:27017",
"redis:6379",
"mongo-express:8081",
"redis-commander:8081",
"bullboard:8083"
],

"postStartCommand": {
"git-config": "git config --global --add safe.directory /workspaces/${localWorkspaceFolderBasename}; git config --global core.autocrlf true; git config --global core.editor nano",
"deno-hooks": "deno task install-hooks"
}
}
37 changes: 37 additions & 0 deletions .devcontainer/pull-full/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
version: "3.8"

services:
mongo-express:
image: mongo-express
restart: unless-stopped
environment:
ME_CONFIG_MONGODB_URL: mongodb://root:mongodb_password@mongodb:27017/
ME_CONFIG_BASICAUTH: false

# Add "forwardPorts": ["mongo-express:8081"] to **devcontainer.json** to forward Mongo-express locally.
# (Adding the "ports" property to this file will not forward from a Codespace.)
networks:
- devcontainer-network

redis-commander:
image: rediscommander/redis-commander:latest
restart: unless-stopped
environment:
REDIS_HOSTS: redis

# Add "forwardPorts": ["redis-commander:8081"] to **devcontainer.json** to forward Redis-commander locally.
# (Adding the "ports" property to this file will not forward from a Codespace.)
networks:
- devcontainer-network

bullboard:
image: addono/bull-board:latest
restart: unless-stopped
environment:
REDIS_HOST: redis
PORT: 8083

# Add "forwardPorts": ["redis-commander:8081"] to **devcontainer.json** to forward Redis-commander locally.
# (Adding the "ports" property to this file will not forward from a Codespace.)
networks:
- devcontainer-network
14 changes: 10 additions & 4 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
*
node_modules
coverage
npm-debug.log
*.pem
.env
.*
!index.js
!lib/*.js
!package*.json
docker-compose.yml
Dockerfile
*.md
.gitignore
.dockerignore
41 changes: 20 additions & 21 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,32 +1,31 @@
# The ID of your GitHub App
# Required #

# The App ID assigned to your GitHub App.
APP_ID=
WEBHOOK_SECRET=development
# The App name registered to your GitHub App.
APP_NAME=Pull
APP_SLUG=pull
# The contents of the private key for your GitHub App. If you're unable to use multiline environment variables, use base64 encoding to convert the key to a single line string.
PRIVATE_KEY=
PULL_INTERVAL=3600
JOB_TIMEOUT=60
MAX_CONCURRENT=10
MAX_IN_QUEUE=1000
# The webhook secret used when creating a GitHub App. 'development' is used as a default, but the value in .env needs to match the value configured in your App settings on GitHub.
WEBHOOK_SECRET=development
# The URL path which will receive webhooks. Default: /api/github/webhooks
WEBHOOK_PATH=/api/github/webhooks
# Pull configurations
CONFIG_FILENAME=pull.yml
DEFAULT_MERGE_METHOD=hardreset
DISABLE_DELAY=
DISABLE_STATS=
# MongoDB
MONGODB_URL=mongodb://root:mongodb_password@mongodb:27017
# Redis
REDIS_URL=redis://redis:6379

# The ID of an OAuth App for making unauthenticated calls (Workaround)
CLIENT_ID=
CLIENT_SECRET=
# Optional #

# Use `trace` to get verbose logging or `info` to show less
# The verbosity of logs to show when running your app, which can be fatal, error, warn, info, debug, trace or silent.
LOG_LEVEL=debug

# Go to https://smee.io/new set this to the URL that you are redirected to.
# Allows your local development environment to receive GitHub webhook events. Go to https://smee.io/new to get started. (Example: https://smee.io/your-custom-url)
WEBHOOK_PROXY_URL=

# Relative path of the webhook
WEBHOOK_PATH=/webhook

# Log to remote syslog server
SYSLOG_UDP_HOST=
SYSLOG_UDP_HOST=

# Log errors to Sentry
# Set to a Sentry DSN to report all errors thrown by your app.
SENTRY_DSN=
64 changes: 46 additions & 18 deletions .github/CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,45 +2,73 @@

## Our Pledge

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of
experience, nationality, personal appearance, race, religion, or sexual identity
and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment include:
Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
- The use of sexualized language or imagery and unwelcome sexual attention or
advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic
address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
Project maintainers have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, or to ban temporarily or permanently any
contributor for other behaviors that they deem inappropriate, threatening,
offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at github@weispot.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at github@weispot.com. The project team
will review and investigate all complaints, and will respond in a way that it
deems appropriate to the circumstances. The project team is obligated to
maintain confidentiality with regard to the reporter of an incident. Further
details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 1.4, available at [http://contributor-covenant.org/version/1/4][version]

[homepage]: https://www.contributor-covenant.org
[version]: https://www.contributor-covenant.org/version/1/4/
Loading