Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
177 changes: 177 additions & 0 deletions learn/on-premise/configure/github-app-setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
---
title: "GitHub App Setup for WaveMaker Enterprise (WME)"
id: "github-app-setup"
sidebar_label: "GitHub App Setup"
---
---

**Author: Chakravarthy Batna**

## Why Create a GitHub App?

In WaveMaker Enterprise, users connect to GitHub by creating a **Code Repository** (a VCS account) in the Team Portal. While creating a Code Repository, the user can authenticate with either a **Personal Access Token (PAT)** or a **GitHub App**.

Unlike WaveMaker Online — which comes with a ready-made, WaveMaker-managed GitHub App — WME is a **self-hosted deployment running in the customer's own environment**. There is no central GitHub App that the platform can ship with, because every WME installation runs under a different domain. The GitHub App's OAuth callback and post-installation URLs must point to that specific WME instance, which only the customer knows.

So before users can pick **GitHub App** as the authentication method in the Team Portal, a WME administrator has to do a **one-time setup**:

1. **Create a GitHub App** on [GitHub](https://github.com) under a personal account or organization, configured with the WME instance's callback URLs and the required permissions.
2. **Register that GitHub App in WME LaunchPad** by providing the App ID, Client ID, Client Secret, and Private Key generated on GitHub.

Once both steps are done, the registered GitHub App becomes available to **all existing and newly created teams** in the Team Portal, and any team can use it to create Code Repositories — without ever generating a PAT.

The rest of this document walks through that one-time admin setup, and then how the GitHub App is used by end-users in the Team Portal.

---

## How to Create a GitHub App

Before connecting WME LaunchPad to GitHub, you need to create a GitHub App and collect the following credentials:

| Field | Where to find it |
|-------------------|---------------------------------------------|
| **App ID** | GitHub App settings page (auto-generated) |
| **Client ID** | GitHub App settings page (auto-generated) |
| **Client Secret** | Generated once after app creation |
| **Private Key** | Generated and downloaded after app creation |

### Step 1 — Open the GitHub App Creation Page

A GitHub App can be created either under your **personal user account** or under an **organization account**. Choose
based on who will own and manage the app.

#### Option A — Create under your Personal Account

Use this if you want the app to be owned by your individual GitHub user account.

> **Profile picture → Settings → Developer settings → GitHub Apps → New GitHub App**

#### Option B — Create under an Organization

Use this if you want the app to be owned by a GitHub organization (recommended for teams and production deployments).

> **Profile picture → Your organizations → Select your organization → Settings → Developer Settings → GitHub Apps → New
GitHub App**

### Step 2 — Fill in Basic Information

![Create GitHub App - Basic Info form](/learn/assets/wme-create-github-app-basic-info-form.png)

| Field | Value |
|---------------------|---------------------------------------------------------------------|
| **GitHub App name** | Choose a unique name (e.g., `WaveMaker-Studio-App`) |
| **Description** | *(Optional)* A short description shown to users during installation |
| **Homepage URL** | Your WME Studio base URL (e.g., `https://<your-wme-domain>`) |

### Step 3 — Configure Callback URLs

Callback URLs are where GitHub redirects users after they authorize your app via OAuth. WME requires **two** callback
URLs.

![Callback URL configuration](/learn/assets/wme-callback-urls-.png)

Replace `<your-wme-domain>` with your actual WME Studio domain, then click **Add Callback URL** to add each one:

**Callback URL 1:**

```
https://<your-wme-domain>/edn-services/rest/github-apps/oauth/callback
```

**Callback URL 2:**

```
https://<your-wme-domain>/edn-services/rest/github-apps/oauth/default/callback
```

Make sure **Expire user authorization tokens** is **checked** — this enables refresh tokens for long-lived sessions.

### Step 4 — Configure Post Installation URL

![Post installation Setup URL](/learn/assets/wme-post-installation-url.png)

Under the **Post installation** section, set the **Setup URL** to:

```
https://<your-wme-domain>/edn-services/rest/github-apps/installations/callback
```

### Step 5 — Webhook

![Webhook configuration](/learn/assets/wme-webhooks.png)

**Uncheck the Active checkbox** under the Webhook section — WME does not require GitHub webhooks for the LaunchPad
integration.

### Step 6 — Set Repository Permissions

This is the most important step. Under **Permissions → Repository permissions**, set:

![Repository Permissions](/learn/assets/wme-permissions.png)

| Permission | Access Level | Why it's needed |
|--------------------|--------------------|--------------------------------------------------------------------------------------------|
| **Contents** | **Read and write** | Allows WME to read and write source code, commits, branches, releases, and perform merges |
| **Pull requests** | **Read and write** | Allows WME to create and manage pull requests, comments, labels, and merges |
| **Administration** | **Read and write** | Allows WME to create and manage repositories, configure settings, teams, and collaborators |

> **Metadata** (Read-only) is automatically granted and mandatory for all GitHub Apps.

### Step 7 — Set Installation Scope

![Installation scope](/learn/assets/wme-installation-scope.png)

At the bottom of the page, choose where this app can be installed:

- **Only on this account** — Restricts the app to your personal account or organization only. Suitable for
private/internal use.
- **Any account** — Allows any GitHub user or organization to install this app.

### Step 8 — Create the App

Click the green **Create GitHub App** button. GitHub will redirect you to your new app's settings page. The **App ID**
and **Client ID** are shown at the top — **save these values**.

### Step 9 — Generate a Client Secret

![Generate Client Secret](/learn/assets/wme-client-secret.png)

1. On the app settings page, scroll to the **Client secrets** section.
2. Click **Generate a new client secret**.
3. Copy the secret immediately — **GitHub will only show it once**.
4. Store it securely (password manager or secrets vault).

### Step 10 — Generate a Private Key

![Generate Private Key](/learn/assets/wme-private-keys.png)

1. Scroll down to the **Private keys** section.
2. Click **Generate a private key**.
3. A `.pem` file will be automatically downloaded.
4. Keep this file secure — it cannot be retrieved again from GitHub.

---

## Register Credentials in WME LaunchPad

Once you have all four credentials, navigate to:

> **LaunchPad → Identity Providers → GitHub Apps → Register GitHub App**

In the registration form, enter the four credentials you collected — **App ID**, **Client ID**, **Client Secret**, and **Private Key** — and save.

![Register GitHub App in LaunchPad](/learn/assets/wme-register-github-app-launchpad.png)

After saving, the newly registered GitHub App appears in the **GitHub Apps** list in LaunchPad. From here, it becomes available to all existing teams and newly created teams for Code Repository creation.

![GitHub Apps list in LaunchPad](/learn/assets/wme-list-github-apps-launchpad.png)

---

## Using the GitHub App in the Team Portal

After the GitHub App is registered in LaunchPad, it becomes available to **all teams** in the Team Portal. Any team can now create a Code Repository using **GitHub App** as the authentication method — no further setup is required.

The end-user flow (selecting GitHub App, authorizing, installing, choosing repositories, and updating an installation later) is identical to WaveMaker Online. Refer to:

> **[GitHub App Integration in WaveMaker Platform](../../teams/github-app-integration.md)** — covers what a GitHub App is, how to create a Code Repository using GitHub App, and how to update an existing GitHub App installation from the Team Portal.
113 changes: 113 additions & 0 deletions website/blog/2026-05-28-github-app-integration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---
title: "GitHub App Integration"
author: "Chakravarthy Batna"
---


The WaveMaker Platform supports **GitHub App-based authentication** for connecting your projects to GitHub repositories. This document explains what a GitHub App is, how the integration works in the WaveMaker Platform, and how to use it from the Team Portal.

<!-- truncate -->

## What is a GitHub App?

A **GitHub App** is an application registered on GitHub and installed into a user account or an organization to interact with GitHub repositories on their behalf. It acts as an independent identity on GitHub — separate from any individual user — and is granted scoped permissions on specific repositories chosen at installation time.

GitHub Apps use short-lived installation tokens that are issued and renewed automatically by GitHub. The application that consumes the GitHub App (in this case, the WaveMaker Platform) uses these tokens to perform repository operations such as cloning code, pushing commits, creating branches, and opening pull requests.

### How it fits in the WaveMaker Platform

Earlier, when a user wanted to create or connect a Code Repository in the Team Portal using GitHub, the only available option was a **Personal Access Token (PAT)**. With a PAT, the user had to:

- Generate a long token (`ghp_...`) from GitHub's **Developer Settings**.
- Provide the token along with their GitHub username while creating the Code Repository.
- Regenerate and reconfigure the token periodically when it expired.

The Team Portal now also supports a **GitHub App** as an authentication method while creating a Code Repository, giving users a credential-free alternative to PAT. The WaveMaker Platform ships with a pre-configured, WaveMaker-managed GitHub App, so users only need to install and authorize it against their own GitHub account or organization.

### Key Features of GitHub Apps

- **Short-lived, auto-rotated credentials.** Installation tokens are issued and renewed by GitHub automatically, removing the need to manually generate or refresh access credentials.
- **Fine-grained repository access.** During installation, the owner can grant access to *all repositories* or only a *selected set*, ensuring the integration only sees what it needs.
- **Granular permissions.** Each GitHub App declares the exact set of repository permissions it requires (e.g., Contents, Pull requests, Administration). These are displayed clearly during installation.
- **Independent of any individual user.** A GitHub App is installed on a user or organization account rather than tied to a specific user's credentials, so the integration continues to work even if team members change.
- **Designed for organization-level workflows.** GitHub Apps fit naturally into team and enterprise setups, where multiple repositories and members need to share the same integration.
- **Clear audit trail.** Actions performed via a GitHub App are attributed to the app itself, making it easy to distinguish platform actions from user actions in the repository history.
- **Simplified user experience.** Users connect their repositories through a guided installation flow on GitHub — no tokens to generate, copy, or store.

---

## How to Integrate GitHub App in Team Portal

In the WaveMaker Platform, users connect to GitHub by creating a **Code Repository** (a VCS account) under:

> **Team Portal → Code Repository**

While creating a Code Repository, the user chooses an authentication method — either **Personal Access Token (PAT)** or **GitHub App** — and can mark it as the **default**. From then on, whenever the user creates a repository, pushes, pulls, or performs any other VCS operation, the platform uses this Code Repository to talk to GitHub.

The WaveMaker Platform ships with a **pre-configured, WaveMaker-managed GitHub App**, so users do **not** need to create or register their own GitHub App. When a user wants to connect to GitHub via a GitHub App, they simply select **GitHub App** as the authentication method while creating the Code Repository, authorize the WaveMaker GitHub App, and pick the repositories it can access.

### Step 1 — Choose GitHub as the VCS Provider

Navigate to:

> **Team Portal → Code Repository → Add Code Repository**

In the **Choose Provider** step, select **GitHub** as the VCS provider.

### Step 2 — Configure Authentication

- Select **Authentication Method** as **GitHub App**.
- Choose the required **Authentication Mode**:
- **Team Credentials** — shared authorization used for team-wide repository operations.
- **Developer Credentials** — repository operations are performed using each developer's own GitHub identity.
note :
- select wmo-code-connect github app
- Click **Install GitHub App**.

![Choose authentication method](/learn/assets/wmo-choose-authentication-method.png)

### Step 3 — Authorize the GitHub App

You will be redirected to GitHub's authorization page, which displays the permissions requested by the WaveMaker GitHub App. Click **Authorize** to continue.

![Authorize the GitHub App](/learn/assets/wmo-authorize-github-app.png)

### Step 4 — Install the GitHub App

After authorization, GitHub redirects you to the GitHub App installation page. Here you can:

- Select the personal GitHub account or organization where the app should be installed.
- Choose whether the app should access **All repositories** or **Only selected repositories**.

> **Note:** If you choose **Only selected repositories**, the WaveMaker Platform will be able to access **only those repositories** — it cannot see or operate on any other repository in your account or organization. To grant access to more repositories later, you must update the GitHub App installation settings on GitHub.

Once the installation is complete, the popup closes automatically and you are returned to the platform.

![GitHub App installation page](/learn/assets/wmo-installation-page.png)

![Choosing repositories](/learn/assets/wmo-choosing-repos.png)

### Step 5 — Select Repository Location

The platform automatically fetches available GitHub App installations. Select the GitHub **account** or **organization** that was previously authorized and installed.

![Select organization](/learn/assets/wmo-select-organization.png)

Once the installation (organization or account) is selected, continue with the remaining steps in the **Add Code Repository** wizard and **save** the Code Repository. The selected installation will be used for repository creation and all subsequent VCS operations.

---

## Updating a GitHub App Installation

If you have unintentionally **uninstalled** the WaveMaker GitHub App from the GitHub user or organization account that was configured in a Code Repository (VCS account), the platform will no longer be able to access those repositories. You can re-install the app and update the existing Code Repository without creating a new one.

To update the installation:

1. Navigate to **Team Portal → Code Repository**.
2. Locate the Code Repository whose installation you want to update.
3. Click the **Credentials** button on that Code Repository.
4. Click **Update GitHub App Installation**.
5. You will be redirected to GitHub to re-install the WaveMaker GitHub App. Choose the same account/organization and repositories as before.
6. Once installation is complete, the Code Repository will be reconnected automatically.

![Update GitHub App Installation](/learn/assets/wmo-update-github-app-installation.png)
6 changes: 6 additions & 0 deletions website/sidebars.json
Original file line number Diff line number Diff line change
Expand Up @@ -729,6 +729,7 @@
"on-premise/aws/install/apply-license",
"on-premise/configure/config-users-auth-providers",
"on-premise/configure/config-vcs",
"on-premise/configure/github-app-setup",
"on-premise/configure/add-dev-capacity",
"on-premise/configure/add-apps-capacity",
"on-premise/configure/config-pipeline"
Expand All @@ -750,6 +751,7 @@
"on-premise/azure/install/apply-license",
"on-premise/configure/config-users-auth-providers",
"on-premise/configure/config-vcs",
"on-premise/configure/github-app-setup",
"on-premise/configure/add-dev-capacity",
"on-premise/configure/add-apps-capacity",
"on-premise/configure/config-pipeline"
Expand All @@ -770,6 +772,7 @@
"on-premise/gcp/install/apply-license",
"on-premise/configure/config-users-auth-providers",
"on-premise/configure/config-vcs",
"on-premise/configure/github-app-setup",
"on-premise/configure/add-dev-capacity",
"on-premise/configure/add-apps-capacity",
"on-premise/configure/config-pipeline"
Expand All @@ -791,6 +794,7 @@
"on-premise/vmware-esxi/install/apply-license",
"on-premise/configure/config-users-auth-providers",
"on-premise/configure/config-vcs",
"on-premise/configure/github-app-setup",
"on-premise/configure/add-dev-capacity",
"on-premise/configure/add-apps-capacity",
"on-premise/configure/config-pipeline"
Expand All @@ -811,6 +815,7 @@
"on-premise/hyper-v/install/apply-license",
"on-premise/configure/config-users-auth-providers",
"on-premise/configure/config-vcs",
"on-premise/configure/github-app-setup",
"on-premise/configure/add-dev-capacity",
"on-premise/configure/add-apps-capacity",
"on-premise/configure/config-pipeline"
Expand All @@ -822,6 +827,7 @@
"items": [
"on-premise/configure/config-users-auth-providers",
"on-premise/configure/config-vcs",
"on-premise/configure/github-app-setup",
"on-premise/configure/add-dev-capacity",
"on-premise/configure/add-apps-capacity",
"on-premise/configure/config-pipeline",
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/static/learn/assets/wme-client-secret.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/static/learn/assets/wme-permissions.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/static/learn/assets/wme-private-keys.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/static/learn/assets/wme-webhooks.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.