This version of GitHub Enterprise was discontinued on 2021-03-02. No patch releases will be made, even for critical security issues. For better performance, improved security, and new features, upgrade to the latest version of GitHub Enterprise. For help with the upgrade, contact GitHub Enterprise support.

Managing pre-receive hooks on the GitHub Enterprise Server appliance

Configure how people will use pre-receive hooks within their GitHub Enterprise Server appliance.

In this article

Creating pre-receive hooks

  1. Navigate to your enterprise account by visiting https://HOSTNAME/enterprises/ENTERPRISE-NAME, replacing HOSTNAME with your instance's hostname and ENTERPRISE-NAME with your enterprise account's name.

  2. In the enterprise account sidebar, click Settings.

    Settings tab in the enterprise account sidebar

  3. Under " Settings", click Hooks.

    Hooks tab in the enterprise account settings sidebar

  4. Click Add pre-receive hook.

    Add pre-receive hook

  5. In the Hook name field, enter the name of the hook that you want to create.

    Name pre-receive hook

  6. From the Environment drop-down menu, select the environment on which you want the hook to run.

    Hook environment

  7. Under Script, from the Select hook repository drop-down menu, select the repository that contains your pre-receive hook script. From the Select file drop-down menu, select the filename of the pre-receive hook script.

    Hook script

  8. Select Use the exit-status to accept or reject pushes to enforce your script. Unselecting this option allows you to test the script while the exit-status value is ignored. In this mode, the output of the script will be visible to the user in the command-line but not on the web interface.

    Use exit-status

  9. Select Enable this pre-receive hook on all repositories by default if you want the pre-receive hook to run on all repositories.

    Enable hook all repositories

  10. Select Administrators can enable and disable this hook to allow organization members with admin or owner permissions to select whether they wish to enable or disable this pre-receive hook.

    Admins enable or disable hook

Editing pre-receive hooks

  1. Navigate to your enterprise account by visiting https://HOSTNAME/enterprises/ENTERPRISE-NAME, replacing HOSTNAME with your instance's hostname and ENTERPRISE-NAME with your enterprise account's name.

  2. In the enterprise account sidebar, click Settings.

    Settings tab in the enterprise account sidebar

  3. Under " Settings", click Hooks.

    Hooks tab in the enterprise account settings sidebar

  4. Next to the pre-receive hook that you want to edit, click .

    Edit pre-receive

Deleting pre-receive hooks

  1. Navigate to your enterprise account by visiting https://HOSTNAME/enterprises/ENTERPRISE-NAME, replacing HOSTNAME with your instance's hostname and ENTERPRISE-NAME with your enterprise account's name.

  2. In the enterprise account sidebar, click Settings.

    Settings tab in the enterprise account sidebar

  3. Under " Settings", click Hooks.

    Hooks tab in the enterprise account settings sidebar

  4. Next to the pre-receive hook that you want to delete, click .

    Edit pre-receive

Configure pre-receive hooks for an organization

An organization administrator can only configure hook permissions for an organization if the site administrator selected the Administrators can enable or disable this hook option when they created the pre-receive hook. To configure pre-receive hooks for a repository, you must be an organization administrator or owner.

  1. In the top right corner of GitHub Enterprise Server, click your profile photo, then click Your profile.
    Profile photo
  2. On the left side of your profile page, under "Organizations", click the icon for your organization.
    organization icons
  3. Under your organization name, click Settings.
    Organization settings button
  4. In the left sidebar, click Hooks.
    Hooks sidebar
  5. Next to the pre-receive hook that you want to configure, click the Hook permissions drop-down menu. Select whether to enable or disable the pre-receive hook, or allow it to be configured by the repository administrators.
    Hook permissions

Configure pre-receive hooks for a repository

A repository owner can only configure a hook if the site administrator selected the Administrators can enable or disable this hook option when they created the pre-receive hook. In an organization, the organization owner must also have selected the Configurable hook permission. To configure pre-receive hooks for a repository, you must be a repository owner.

  1. In the top right corner of GitHub Enterprise Server, click your profile photo, then click Your profile.
    Profile photo
  2. Click Repositories and select which repository you want to configure pre-receive hooks for.
    Repositories
  3. Under your repository name, click Settings.
    Repository settings button
  4. In the left sidebar, click Hooks & Services.
    Hooks and services
  5. Next to the pre-receive hook that you want to configure, click the Hook permissions drop-down menu. Select whether to enable or disable the pre-receive hook.
    Repository hook permissions