|
| 1 | +--- |
| 2 | +title: Automations in your enterprise |
| 3 | +shortTitle: Automations |
| 4 | +intro: 'Learn how {% data variables.product.prodname_github_apps %}, external services, and {% data variables.product.prodname_actions %} work together to automate processes in your enterprise.' |
| 5 | +versions: |
| 6 | + feature: enterprise-apps-public-beta |
| 7 | +type: overview |
| 8 | +topics: |
| 9 | + - Enterprise |
| 10 | + - Fundamentals |
| 11 | +--- |
| 12 | + |
| 13 | +Automation on {% data variables.product.github %} typically involves multiple components working together. The most important {% data variables.product.github %} native components are: |
| 14 | + |
| 15 | +* **{% data variables.product.prodname_actions %} workflows**, which provide a runtime for executing automation logic. Out of the box, they work within a single repository, but they can be extended to automate across or even outside of repositories. |
| 16 | +* **{% data variables.product.prodname_github_apps %}**, which do not have a runtime. Instead, they provide identity, permissions, and event delivery so your automations, whether external services or workflows, can authenticate and act securely. |
| 17 | + |
| 18 | +Most enterprise automation use {% data variables.product.prodname_github_apps %} and {% data variables.product.prodname_actions %} together. For example, a workflow running in {% data variables.product.prodname_actions %} may use a {% data variables.product.prodname_github_app %} to obtain a short-lived token that allows it to perform tasks across repositories or organizations. |
| 19 | + |
| 20 | +This guide explains how {% data variables.product.prodname_github_apps %}, external automations, and {% data variables.product.prodname_actions %} complement each other, and when to use each in your enterprise. |
| 21 | + |
| 22 | +## {% data variables.product.prodname_github_apps %} |
| 23 | + |
| 24 | +A {% data variables.product.prodname_github_app %} provides the **identity, permissions, and webhook events** required for automation on or across repositories, organizations, or your enterprise. {% data variables.product.prodname_github_apps %} themselves do **not** execute logic, they enable other systems to do so. |
| 25 | + |
| 26 | +{% data variables.product.prodname_github_apps %} support enterprise automation by offering: |
| 27 | + |
| 28 | +* **Granular permissions** to follow least-privilege principles |
| 29 | +* **Scoped installations** at the enterprise, organization, or repository level |
| 30 | +* **Short-lived tokens** for secure access |
| 31 | +* **Distinct identities** with full auditability |
| 32 | +* **Delegated administration** through the {% data variables.product.prodname_github_app %} manager role |
| 33 | +* **Consistency at scale** when owned by the enterprise account |
| 34 | + |
| 35 | +### What do {% data variables.product.prodname_github_apps %} enable? |
| 36 | + |
| 37 | +{% data variables.product.prodname_github_apps %} allow **automations you write elsewhere**—such as external services or workflow steps—to act on {% data variables.product.github %} APIs within the permissions you grant. For example: |
| 38 | + |
| 39 | +* Receiving webhook events and triggering external services |
| 40 | +* Enabling a workflow to act outside its default repository scope |
| 41 | +* Integrating {% data variables.product.github %} with third-party systems |
| 42 | +* Coordinating changes across many repositories |
| 43 | +* Running long-lived bots or services that monitor enterprise-level activity |
| 44 | + |
| 45 | +{% ifversion enterprise-installed-apps %} |
| 46 | + |
| 47 | +> [!NOTE] |
| 48 | +> Enterprise-installed {% data variables.product.prodname_github_apps %} cannot call every API endpoint. See [AUTOTITLE](/apps/using-github-apps/installing-a-github-app-on-your-enterprise#what-enterprise-installed-apps-can-do). |
| 49 | +
|
| 50 | +{% endif %} |
| 51 | + |
| 52 | +## {% data variables.product.prodname_actions %} |
| 53 | + |
| 54 | +{% data variables.product.prodname_actions %} provide {% data variables.product.github %}’s built-in **runtime** for executing automation logic inside repositories. Workflows run on hosted or self-hosted runners and are ideal for tasks tied to code changes or repository events. |
| 55 | + |
| 56 | +Use {% data variables.product.prodname_actions %} for: |
| 57 | + |
| 58 | +* CI/CD (build, test, deploy) |
| 59 | +* Pull request checks and validations |
| 60 | +* Repository-level maintenance tasks |
| 61 | +* Event-driven workflows responding to pushes, tags, or issue updates |
| 62 | +* Scheduled jobs with cron |
| 63 | + |
| 64 | +### How {% data variables.product.prodname_actions %} uses {% data variables.product.prodname_github_apps %} |
| 65 | + |
| 66 | +{% data variables.product.prodname_actions %} and {% data variables.product.prodname_github_apps %} are deeply connected: |
| 67 | + |
| 68 | +* Workflow permissions map directly to {% data variables.product.prodname_github_app %} permissions. |
| 69 | +* Workflows can authenticate as a specific {% data variables.product.prodname_github_app %} using `actions/create-github-app-token`. |
| 70 | +* {% data variables.product.prodname_github_apps %} can trigger workflows through events such as `repository_dispatch`. |
| 71 | + |
| 72 | +## External automations and services |
| 73 | + |
| 74 | +External automations run outside {% data variables.product.github %} on your own infrastructure. These services typically: |
| 75 | + |
| 76 | +* Receive webhook events from a {% data variables.product.prodname_github_app %} |
| 77 | +* Use the {% data variables.product.prodname_github_app %} to request short-lived installation tokens |
| 78 | +* Execute long-running or cross-enterprise logic |
| 79 | +* Integrate with external business systems |
| 80 | + |
| 81 | +Examples include: |
| 82 | + |
| 83 | +* Organization-wide configuration management |
| 84 | +* Policy enforcement services |
| 85 | +* Multi-repository code or metadata synchronization |
| 86 | +* Compliance report generation |
| 87 | +* Cross-organization issue or pull request management |
| 88 | + |
| 89 | +All of these rely on {% data variables.product.prodname_github_apps %} for authentication, identity, and events—**not** for execution. |
| 90 | + |
| 91 | +## How these components work together |
| 92 | + |
| 93 | +Most enterprise automation uses a combination of {% data variables.product.prodname_github_apps %}, external services, and {% data variables.product.prodname_actions %} to achieve robust, scalable workflows. |
| 94 | + |
| 95 | +For example: |
| 96 | + |
| 97 | +1. An enterprise {% data variables.product.prodname_github_app %} receives a webhook when a new repository is created, and sends the webhook payload to a server where an external service is running. |
| 98 | +1. The external service standardizes required settings and provisions resources. |
| 99 | +1. The service triggers a {% data variables.product.prodname_actions %} workflow in the repository. |
| 100 | +1. The workflow performs CI, deploys templates, or configures scanning. |
| 101 | + |
| 102 | +Each component handles a different layer of automation. |
| 103 | + |
| 104 | +## When to use each type of automation |
| 105 | + |
| 106 | +Use **a {% data variables.product.prodname_github_app %}** when you need: |
| 107 | + |
| 108 | +* Authentication or permission to act across many repositories |
| 109 | +* Integration with external systems |
| 110 | +* Webhook-driven automations |
| 111 | +* Long-lived or enterprise-wide workflows |
| 112 | +* Auditability and identity separation |
| 113 | + |
| 114 | +Use **external automations** when you need: |
| 115 | + |
| 116 | +* Logic that runs continuously or outside {% data variables.product.github %} |
| 117 | +* Integration with internal systems |
| 118 | + |
| 119 | +Use **{% data variables.product.prodname_actions %}** when you need: |
| 120 | + |
| 121 | +* CI/CD pipelines |
| 122 | +* Repository-scoped automation |
| 123 | +* Automated checks tied to repository events |
| 124 | +* Execution of logic using {% data variables.product.github %}’s runner infrastructure |
| 125 | + |
| 126 | +Use **{% data variables.product.prodname_github_apps %} and {% data variables.product.prodname_actions %} together** when: |
| 127 | + |
| 128 | +* A workflow must act beyond the repository’s default permissions |
| 129 | +* A {% data variables.product.prodname_github_app %} needs to trigger a workflow |
| 130 | +* External logic orchestrates in-repo execution |
| 131 | +* Enterprise-wide policies or workflows require both identity and runtime |
| 132 | + |
| 133 | +## Next steps |
| 134 | + |
| 135 | +Learn how to design and manage {% data variables.product.prodname_github_apps %} at the enterprise level in [AUTOTITLE](/admin/managing-your-enterprise-account/creating-github-apps-for-your-enterprise). |
0 commit comments