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

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

文章版本: Enterprise Server 2.18

创建预接收挂钩环境

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

本文内容

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. 在任何页面的右上角,单击
    用于访问站点管理员设置的火箭图标
  2. 在左侧边栏中,单击 Enterprise(企业)
    站点管理设置中的 Enterprise(企业)选项卡
  3. 在企业帐户侧边栏中,单击 Settings(设置)
    企业帐户侧边栏中的“设置”选项卡
  4. 在“ Settings(设置)”下,单击 Hooks(挂钩)
    企业帐户设置侧边栏中的 Hooks(挂钩)选项卡
  5. 单击 Manage environments
    管理环境
  6. 单击 Add environment
    添加环境
  7. Environment name 字段中输入所需的名称。
    环境名称
  8. 输入包含您的环境的 * .tar.gz 文件的 URL。
    从 URL 上传环境
  9. 单击 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.

问问别人

找不到要找的内容?

联系我们