我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

此版本的 GitHub Enterprise 已停止服务 2020-11-12. 即使针对重大安全问题,也不会发布补丁。 要获得更好的性能、改进的安全性和新功能,请升级到 GitHub Enterprise 的最新版本。 如需升级方面的帮助,请联系 GitHub Enterprise 支持

创建预接收挂钩环境

要执行预接收挂钩,请使用默认的预接收环境,或者创建自定义环境。

本文内容

GitHub Enterprise Server 的预接收环境是 Linux chroot 环境。 由于预接收挂钩会在每个推送事件上执行,因此它们应该快速且轻量化。 这类检查需要的环境通常极少。

GitHub Enterprise Server 提供了一个默认环境,其中包括以下包:awkbashcoreutilscurlfindgnupggrepjqsed

如果您具有此环境未满足的特定要求(例如对特定语言的支持),则可以创建并上传您自己的 64 位 Linux chroot 环境。

使用 Docker 创建预接收挂钩环境

您可以使用 Linux 容器管理工具来构建预接收挂钩环境。 此示例使用 Alpine LinuxDocker

  1. 确保 Docker 在本地安装

  2. 创建包含此信息的文件 Dockerfile.alpine-3.3

    FROM gliderlabs/alpine:3.3
    RUN apk add --no-cache git bash
    
  3. 从包含 Dockerfile.dev 的工作目录中,构建一个镜像:

    $ docker build -f Dockerfile.alpine-3.3 -t pre-receive.alpine-3.3 .
    > Sending build context to Docker daemon 12.29 kB
    > Step 1 : FROM gliderlabs/alpine:3.3
    >  ---> 8944964f99f4
    > Step 2 : RUN apk add --no-cache git bash
    >  ---> Using cache
    >  ---> 0250ab3be9c5
    > Successfully built 0250ab3be9c5
  4. 创建一个容器:

    $ docker create --name pre-receive.alpine-3.3 pre-receive.alpine-3.3 /bin/true
  5. 将 Docker 容器导出到 gzip 压缩的 tar 文件:

    $ docker export pre-receive.alpine-3.3 | gzip > alpine-3.3.tar.gz

    此文件 alpine-3.3.tar.gz 已准备好上传到 GitHub Enterprise Server 设备。

使用 chroot 创建预接收挂钩环境

  1. 创建 Linux chroot 环境。

  2. 创建 chroot 目录的 gzip 压缩 tar 文件:

    $ cd /path/to/chroot
    $ tar -czf /path/to/pre-receive-environment.tar.gz .

    注意:

    • 不要在 tar 存档中包含文件的主目录路径,如 /path/to/chroot
    • /bin/sh 必须存在并且可执行,作为 chroot 环境的入口点。
    • 与传统的 chroot 不同,预接收挂钩的 chroot 环境不需要 dev 目录。

关于创建 chroot 环境的更多信息,请参阅 Debian Wiki 中的“Chroot”、Ubuntu 社区帮助 Wiki 中的“BasicChroot”,或者 Alpine Linux Wiki 中的“在 chroot 中安装 Alpine Linux”。

在 GitHub Enterprise Server 上上传预接收挂钩环境

  1. 访问 https://HOSTNAME/enterprises/ENTERPRISE-NAME,将 HOSTNAME 替换为您的实例的主机名,将 ENTERPRISE-NAME 替换为您的企业帐户的名称,找到您的企业帐户。

  2. 在企业帐户侧边栏中,单击 Settings(设置)

    企业帐户侧边栏中的“设置”选项卡

  3. 在“ Settings(设置)”下,单击 Hooks(挂钩)

    企业帐户设置侧边栏中的 Hooks(挂钩)选项卡

  4. 单击 Manage environments

    管理环境

  5. 单击 Add environment

    添加环境

  6. Environment name 字段中输入所需的名称。

    环境名称

  7. 输入包含您的环境的 * .tar.gz 文件的 URL。

    从 URL 上传环境

  8. 单击 Add environment

    Add environment 按钮

通过管理 shell 上传预接收挂钩环境

  1. 将包含您的环境的可读 * .tar.gz 文件上传到 web 主机并复制 URL 或通过 scp 将文件传送到 GitHub Enterprise Server 设备。 使用 scp 时,您可能需要调整 * .tar.gz 文件权限,以使该文件全局可读。

  2. 连接到管理 shell。

  3. 使用 ghe-hook-env-create 命令并输入所需的环境名称作为第一个参数,然后将包含环境的 * .tar.gz 文件的完整本地路径或 URL 作为第二个参数。

    admin@ghe-host:~$ ghe-hook-env-create AlpineTestEnv /home/admin/alpine-3.3.tar.gz
    > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.