2014年8月28日星期四

将 Windows Azure 存储用于 Jenkins 持续集成解决方案

下列信息演示如何使用 Windows Azure Blob 服务作为 Jenkins 持续集成 (CI) 解决方案创建的生成项目的存储库。在以下情况中您将会发现这一做法很有用:您在敏捷开发环境进行编码(使用 Java 或其他语言),生成是基于持续集成运行的并且您需要一个适用于生成项目的存储库,以便(举例来说)您能与其他组织成员、您的客户共享生成项目或维护存档。
在本教程中,您将使用 Microsoft Open Technologies, Inc. 提供的适用于 Jenkins CI 的 Windows Azure 存储插件。

目录

使用 Blob 服务的好处

使用 Blob 服务承载敏捷开发生成项目的好处包括:
  • 生成项目的高可用性。
  • Jenkins CI 解决方案上载生成项目时的性能。
  • 客户和合作伙伴下载生成项目时的性能。
  • 通过选择匿名访问、基于过期的共享访问、签名访问、专用访问等来控制用户访问策略。

先决条件

您将需要下列项才能将 Blob 服务用于 Jenkins CI 解决方案:
  • 一个 Jenkins 持续集成解决方案。
    如果您当前没有 Jenkins CI 解决方案,则可使用以下技术运行一个 Jenkins CI 解决方案:
    1. 在已启用 Java 的计算机上,从 http://jenkins-ci.org 下载 jenkins.war。
    2. 在打开到包含 jenkins.war 的文件夹的命令提示符处,运行:
      java –jar jenkins.war
    3. 在浏览器中,打开 http://localhost:8080/。这将打开 Jenkins 仪表板,您可使用该仪表板安装并配置 Windows Azure 存储插件。
      虽然典型 Jenkins CI 解决方案将设置为作为一个服务运行,但在本教程中,通过命令行运行 Jenkins war 就足够了。
  • 一个 Windows Azure 帐户。您可在 http://www.windowsazure.cn 中注册 Windows Azure 帐户。
  • 一个 Windows Azure 存储帐户。如果您还没有存储帐户,则可使用如何创建存储帐户中的步骤创建一个。
  • 建议熟悉 Jenkins CI 解决方案(但不是必需的),因为以下内容将使用一个基本示例向您演示使用 Blob 服务作为 Jenkins CI 生成项目的存储库时所需的步骤。

如何将 Blob 服务用于 Jenkins CI

若要将 Blob 服务用于 Jenkins,您将需要安装 Windows Azure 存储插件,并将该插件配置为使用存储帐户,然后创建一个将生成项目上载到存储帐户的后期生成操作。将在下面各节中介绍这些步骤。

如何安装 Windows Azure 存储插件

  1. 在 Jenkins 仪表板中,单击“管理 Jenkins”。
  2. 在“管理 Jenkins”页中,单击“管理插件”。
  3. 单击“可用”选项卡。
  4. 在“项目上载程序”部分,选中“Windows Azure 存储插件”。
  5. 单击“安装而不重新启动”或“立即下载并在重新启动后安装”。
  6. 重新启动 Jenkins。

如何将 Windows Azure 存储插件配置为使用存储帐户

  1. 在 Jenkins 仪表板中,单击“管理 Jenkins”。
  2. 在“管理 Jenkins”页中,单击“配置系统”。
  3. 在“Windows Azure 存储帐户配置”部分:
    1. 输入存储帐户名称,您可从 Windows Azure 门户 https://manage.windowsazure.cn 获取该名称。
    2. 输入存储帐户密钥,该密钥也可从 Windows Azure 门户获得。
    3. 如果要使用公共 Windows Azure 云,则使用“Blob 服务终结点 URL”的默认值。如果要使用其他 Windows Azure 云,则使用在 Windows Azure 管理门户中为您的存储帐户指定的终结点。
    4. 单击“验证存储凭据”以验证存储帐户。
    5. [可选] 如果您具有要使其可用于 Jenkins CI 的其他存储帐户,请单击“添加更多存储帐户”。
    6. 单击“保存”以保存设置。

如何创建将您的生成项目上载到存储帐户的后期生成操作

为了进行说明,首先我们将需要创建一个将创建若干文件的作业,然后添加后期生成操作以将文件上载到存储帐户。
  1. 在 Jenkins 仪表板中,单击“新建作业”。
  2. 将此作业命名为“MyJob”,单击“生成自由格式的软件项目”,然后单击“确定”。
  3. 在作业配置的“生成”部分,单击“添加生成步骤”并选择“执行 Windows 批处理命令”。
  4. 在“命令”中,使用下列命令:
    md text
    cd text
    echo Hello Windows Azure Storage from Jenkins > hello.txt
    date /t > date.txt
    time /t >> date.txt
  5. 在作业配置的“后期生成操作”部分,单击“添加后期生成操作”并选择“将项目上载到 Windows Azure Blob 存储”。
  6. 对于“存储帐户名称”,请选择要使用的存储帐户。
  7. 对于“容器名称”,请指定容器名称。(如果上载生成项目时不存在该容器,则将创建该容器。)您可使用环境变量,因此在此示例中,请输入 ${JOB_NAME} 作为容器名称。
    提示
    在您为“执行 Windows 批处理命令”输入脚本的“命令”部分的下面,有一个指向 Jenkins 识别的环境变量的链接。单击此链接可了解环境变量名称和说明。请注意,包含特殊字符的环境变量(如 BUILD_URL 环境变量)不允许作为容器名称或通用虚拟路径。
  8. 在此示例中单击“将容器设为公开的”。(如果要使用私有容器,您将需要创建共享访问签名以允许访问。这超出了本主题的范围。您可在创建共享访问签名中了解有关共享访问签名的详细信息。)
  9. 对于“要上载的项目列表”,请输入 text/*.txt
  10. 对于“已上载项目的通用虚拟路径”,请输入 ${BUILD_ID}/${BUILD_NUMBER}
  11. 单击“保存”以保存设置。
  12. 在 Jenkins 仪表板中,单击“立即生成”以运行 MyJob。检查控制台输出中的状态。当后期生成操作开始上载生成项目时,Windows Azure 存储的状态消息将包括在控制台输出中。
  13. 成功完成此作业后,您可通过打开公共 Blob 检查生成项目。
    1. 登录 Windows Azure 管理门户 https://manage.windowsazure.cn
    2. 单击“存储”。
    3. 单击用于 Jenkins 的存储帐户名称。
    4. 单击“容器”。
    5. 单击名为 myjob 的容器,该名称是您创建 Jenkins 作业时分配的作业名称的小写形式。Windows Azure 存储中的容器名称和 Blob 名称均是小写的(并且是区分大小写的)。在名为 myjob 的容器的 Blob 列表中,您应该能看到 hello.txt 和 date.txt。复制这两项中任一项的 URL 并在浏览器中打开。您将看到作为生成项目上载的文本文件。

Blob 服务使用的组件

以下信息概述了 Blob 服务组件。
  • 存储帐户: 对 Windows Azure 存储服务进行的所有访问都要通过存储帐户完成。存储帐户是访问 blob 的最高级别的命名空间。一个帐户可以包含无数个容器,只要这些容器的总大小不超过 100TB 即可。
  • 容器: 一个容器包含一组 Blob 集。所有 blob 必须位于相应的容器中。一个帐户可以包含无限个容器。一个容器可以存储无限个 Blob。
  • Blob: 任何类型和大小的文件。Windows Azure 存储可存储两种类型的 Blob:块 Blob 和页 Blob。大部分文件都是块 blob。一个块 Blob 的大小可以达到 200 GB。本教程使用的是块 Blob。另一种 blob 类型为页 blob,其大小可以达 1 TB,在对文件中的一系列字节进行频繁修改时,这种 blob 类型更加高效。有关 Blob 的详细信息,请参阅了解块 Blob 和页 Blob
  • URL 格式:使用以下 URL 格式可访问 Blob:
    http://storageaccount.blob.core.chinacloudapi.cn/container_name/blob_name
    (以上格式适用于公共 Windows Azure 云。如果要使用其他 Windows Azure 云,则使用 Windows Azure 管理门户中的终结点以确定您的 URL 终结点。)
    在以上格式中,storageaccount 表示存储帐户的名称,container_name 表示容器的名称,而 blob_name 表示 Blob 的名称。在容器名称中,您可具有多个由正斜杠 / 分隔的路径。本教程中的示例容器名称为MyJob${BUILD_ID/${BUILD_NUMBER} 用于通用虚拟路径,从而导致 Blob 具有以下格式的 URL:
    http://example.blob.core.chinacloudapi.cn/myjob/2013-01-28_15-00-35/2/hello.txt

没有评论:

发表评论