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

创建预接收挂钩环境

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

本文内容

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. 在 GitHub Enterprise Server 的右上角,单击您的个人资料照片,然后单击 Enterprise settings(Enterprise 设置)

    GitHub Enterprise Server 上个人资料照片下拉菜单中的"Enterprise settings(企业设置)"

  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.

此文档对您有帮助吗?

Privacy policy

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。