使用 Jenkins 部署 Marathon 应用程序

教程 - 使用 Jenkins for DC/OS 在 Marathon 上部署应用程序

本教程介绍如何使用 Jenkins for DC/OS 在 Marathon 上部署应用程序。本教程将指导您创建新的 Jenkins 作业,在源代码更改时发布 Docker 容器,并根据项目的 文件中包含的 将这些更改部署到 Marathon。

前提条件: 本教程假设您拥有有效的 Jenkins 安装和许可,可以在 Marathon 上启动应用程序。Jenkins for DC/OS 必须按照 Jenkins 快速入门页面上的说明进行安装。

示例项目

本教程使用的项目取自 存储库,并在 Docker 容器内运行 Jekyll 网站。本教程所需的文件是 Dockerfileconf/cd-demo-appn.jsonsite 目录。将这些项目复制到新项目,然后推送到您选择的主机上的新 Git 存储库。本教程使用 Docker Hub 存储创建的镜像,并需要帐户信息来执行此任务。

可通过 [DC/OS Web 界面]中的仪表盘或服务导航菜单访问 Jenkins for DC/OS。(/mesosphere/dcos/cn/2.1/gui/).

单击“Jenkins”服务,然后单击“Open Service”访问 Jenkins Web 界面。

图 1. Jenkins Web 界面

添加 Docker Hub 凭据

Jenkins 在其凭据库内存储帐户凭据,这允许作业以安全方式使用凭据。在 Jenkins 主页面种,从左侧菜单中单击 Credentials。从那里选择 System(也可从左侧菜单中选择),最后选择主查看区域中显示的全局凭据(不受限制)链接。左侧菜单现在应具有 Add Credentials 选项。

单击 Add Credentials,为 Docker Hub 创建新凭据。Kind 下拉菜单中应选择“Username with password”选项。填写其余信息以匹配您的 Docker Hub 帐户。

dcos-velocity-jenkins-creds-new.png

图 2. 添加 Jenkins 凭据

作业

我们将创建一个新的 Jenkins 作业,其与 Docker Hub 一起执行多项操作,然后更新或创建 Marathon 应用程序。

创建一个新的 Freestyle 作业,其名称仅包含小写字母和连字符。此名称将稍后在 Docker 镜像名称中使用,并可能作为 Marathon 应用程序 ID 使用。

图 3. Freestyle 项目

dcos-jenkins-repourl.png

图 4. 源代码管理凭据

构建触发器

选择 Poll SCM 构建触发器,其时间表为:*/5 * * * *。这会每五分钟检查一次 Git 资源库是否有更改。

构建步骤

Jenkins 作业执行以下操作:

  1. 将新镜像推至 Docker Hub。

这些步骤可以使用 Docker Build and Publish 插件通过单个构建步骤执行,这已经包含并可供使用。在 Add build step 下拉列表中选择 Docker Build and Publish 选项。

图 5. Docker “Add build step” 选项

填写以下字段:

  • 存储库名称,带有您的 Docker Hub 用户名和 作为后缀 (“myusername/${JOB_NAME}”)
  • 标签,具有 $
  • 注册表凭据,以上创建的 Docker Hub 的凭据

dcos-velocity-jenkins-build-docker-config.png

图 6. Docker 构建和发布屏幕

Marathon 部署

通过从 Add post-build action下拉菜单中选择 Marathon Deployment 选项,添加 Marathon 部署构建后操作。

图 6. Marathon 部署菜单

填写以下字段:

  • Marathon URL,可使用 URL 在 DC/OS 内对其进行访问http://leader.mesos/service/marathon
  • 应用定义,具有与 marathon 应用程序文件 () 相对的路径conf/cd-demo-app.json)
  • Docker 镜像,具有以上创建的镜像 (myusername/${JOB_NAME}:${GIT_COMMIT})

dcos-velocity-marathon-config.png

Marathon 部署构建后操作读取应用定义文件,默认情况下为 ,包含在项目的 Git 存储库中。这是 JSON 文件,必须包含有效的 。

构建后操作中的可配置字段将覆盖文件中匹配字段的内容。例如,设置“应用程序 ID”将替换文件中的 id 字段。在以上配置中,“Docker 镜像”已配置,并将覆盖包含在 docker 字段中的 image 字段。

最终的 JSON 有效负载将发送到已配置的 Marathon 实例,并更新或创建应用程序。

保存

保存作业配置。

构建

单击 Build Now,然后构建作业。

图 8. 构建作业

部署

在 Jenkins 中成功运行后,应用程序将开始在 DC/OS 上的部署。您可以访问 DC/OS Web 界面来监控进度。

Status 已更改为 Running时,部署完成,您可访问网站了。

访问您的网站

访问公共 DC/OS 代理节点上的 80 以显示 Jekyll 网站。

dcos-jekyll-site1.png

图 9. Jekyll 演示

_posts 目录中的内容生成 Jekyll 网站。对于此示例项目,该目录为 . 复制现有帖子并创建新帖子,其文件名中具有最新的日期。我添加了一篇名为“一个更新”的帖子。

将新帖子提交给 Git。在新的提交落在主分支上之后不久,Jenkins 将看到更改并重新部署到 Marathon。