Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nodejs/github-bot
@nodejs-github-bot's heart and soul
https://github.com/nodejs/github-bot
bot github-bot javascript node nodejs
Last synced: 27 days ago
JSON representation
@nodejs-github-bot's heart and soul
- Host: GitHub
- URL: https://github.com/nodejs/github-bot
- Owner: nodejs
- License: mit
- Created: 2016-04-04T18:34:37.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2024-04-08T05:32:12.000Z (7 months ago)
- Last Synced: 2024-04-13T21:53:07.216Z (7 months ago)
- Topics: bot, github-bot, javascript, node, nodejs
- Language: JavaScript
- Homepage:
- Size: 2.26 MB
- Stars: 259
- Watchers: 23
- Forks: 108
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Codeowners: .github/CODEOWNERS
- Governance: GOVERNANCE.md
Awesome Lists containing this project
README
# Node.js GitHub Bot
The Node.js Foundation members use this bot to help manage [the repositories of the GitHub organization](https://github.com/nodejs).
It executes [scripts](https://github.com/nodejs/github-bot/tree/master/scripts) in response to events that are
pushed to it via GitHub webhooks. All [repositories](https://github.com/nodejs) that use this bot have the same webhook url & secret configured (there is only 1 bot instance). Org-wide webhooks are not allowed.## Contributing
Please do, contributions are more than welcome!
See [CONTRIBUTING.md](CONTRIBUTING.md).### Environment Variables
- **`GITHUB_TOKEN`**
The [GitHub API token](https://github.com/blog/1509-personal-api-tokens) for your account (or bot account) that will be used to make API calls to GitHub. The account must have proper access to perform the actions required by your script.
- **`GITHUB_WEBHOOK_SECRET`**
The webhook secret that GitHub signs the POSTed payloads with. This is created when the webhook is defined. The default is `hush-hush`.
- **`JENKINS_WORKER_IPS`**
List of valid Jenkins worker IPs allowed to push PR status updates, split by comma: `192.168.1.100,192.168.1.101`.
- **`JENKINS_API_CREDENTIALS`** (optional)
For scripts that communicate with Jenkins on http://ci.nodejs.org. The Jenkins API token is visible on
your own profile page `https://ci.nodejs.org/user//configure`, by clicking the
"show API token" button. Also See: https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients
- **`JENKINS_JOB_URL_`** (optional)
Only required for the trigger Jenkins build script, to know which job to trigger a build for when
repository collaborator posts a comment to the bot. E.g. `JENKINS_JOB_URL_NODE=https://ci.nodejs.org/job/node-test-pull-request`
- **`JENKINS_BUILD_TOKEN_`** (optional)
Only required for the trigger Jenkins build script. The authentication token configured for a particular
Jenkins job, for remote scripts to trigger builds remotely. Found on the job configuration page in
`Build Triggers -> Trigger builds remotely (e.g., from scripts)`.
- **`LOGIN_CREDENTIALS`**
Username and password used to protected the log files exposed in /logs. Expected format: `username:password`.
- **`KEEP_LOGS`**
Number of days to keep rotated log files, defaults to `10` if not set.
- **`LOGS_DIR`**
Directory where logs should be written and exposed by the `/logs` endpoint.### Developing Locally
The bot will try to load a `.env` file at the root of the project if it exists to set environment varaibles. You will need to create one similar to this:
```
GITHUB_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SSE_RELAY=https://hook-relay.example.com
```**Note the additional `SSE_RELAY` variable:**
When developing locally, it is difficult to setup a GitHub webhook
pointing to the computer you are developing on. An easy workaround is to set the `SSE_RELAY` to the url of
[a SSE relay server](https://github.com/williamkapke/hook-relay) that will send the GitHub events via
[Server Sent Events](http://www.html5rocks.com/en/tutorials/eventsource/basics/) instead. Another option
is to use [ngrok](https://ngrok.com/).You can use the [TestOrgPleaseIgnore](https://github.com/TestOrgPleaseIgnore) GitHub Organization, to test
your changes. Actions performed on the repos there will be sent to
[the SSE Relay](https://github.com/williamkapke/hook-relay). If you use your own Organization/Repository,
remember to set the webhook Secret to the same value as `GITHUB_WEBHOOK_SECRET` (default `hush-hush`), and
to change the content type to `application/json` (default on the GitHub interface is
`application/x-www-form-urlencoded`, which will not work with the bot).The `GITHUB_WEBHOOK_SECRET` environment variable is not required when using the relay.
**Run the bot:**
```bash
$ npm start
```When developing a script, it is likely that you will only want to run the script(s) that you are working on. You may
pass an additional [glob](https://www.npmjs.com/package/glob) argument to specify which scripts to run.```bash
$ SCRIPTS=./scripts/my-new-event-handler.js npm start
```## License
[MIT](LICENSE.md)