Intro

I now know about actions but these aren’t the same as GitHub bots, so what’s up?
Are GitHub bots just automated programs that use GitHub Actions?

Clarification

No, they’re not. bots are standalone services/apps (programs) that are built to respond to events triggered by GitHub Webhooks, residing on their own servers. // defined by you the programmer.

They have their own identity (a GitHub App or user account) and can interact with repos autonomously; commenting, labeling, merging, etc.

Sometimes, these bots interact with the GitHub Actions.

Structure and Implementation

These bots are built using tools like Probot or GitHub’s REST/GraphQL APIs.
Ultimately the final implementation depends on their purpose and how the programmer’s built them.

Comparison

FeatureGitHub BotsGitHub Actions
Where it runsExternal server (yours or a service)GitHub’s cloud runners
Defined byCode + webhook config.github/workflows/*.yml
IdentityHas its own GitHub account/AppRuns as github-actions[bot]
Trigger methodWebhook events pushed to your serverEvents declared in workflow YAML
ComplexityHigher : needs hosting & auth setupLower : built into the repo
FlexibilityVery high : full custom logicHigh within workflow steps
Best forPersistent, stateful, cross-repo logicPer-repo CI/CD & automation

Examples

GitHub Bots

  1. Dependabot : A bot (now GitHub-native) that monitors your dependencies and automatically opens PRs when updates are available. It runs on GitHub’s infrastructure and has its own bot identity.
  2. Stale bot : Watches for issues/PRs that haven’t had activity in a while and automatically labels or closes them. Runs as a GitHub App on an external server.

GitHub Actions

  1. CI pipeline : A workflow that runs your test suite on every pull request, posting a pass/fail status check before merging is allowed.
  2. Auto-release : A workflow triggered when you push a v* tag that builds your app, creates a GitHub Release, and uploads build artifacts automatically.

References