【问题标题】:Can a Linux Jenkins stop / start an IIS website during pipeline build?Linux Jenkins 可以在管道构建期间停止/启动 IIS 网站吗?
【发布时间】:2018-06-05 14:09:40
【问题描述】:

我目前正在尝试在 Linux Jenkins 服务器中构建一个 php 应用程序,然后使用 IIS 通过 Publish Over CIFS 插件将构建工件发布到远程 Windows 服务器。

但是,如果应用程序正在使用中,插件 Publish Over CIFS 将不允许我写入 Windows 共享,说它正在使用中。这让我相信我需要在发布时以某种方式启动/停止 IIS 网站。

有人有这方面的经验吗?有没有更好的方法将 PHP 工件从 Linux 上的 Jenkins 发布到单独的远程 Windows IIS 服务器?

【问题讨论】:

标签: iis jenkins jenkins-pipeline devops


【解决方案1】:

这是我们最终所做的,但还有一些其他建议值得研究:

  • 在我们推送到的 Windows 服务器上安装了 openssh
  • 使用 jenkins 服务器 (linux) 中的 ssh 在 Windows 上运行 powershell 命令来停止网站
  • 命令是:ssh user@host 'powershell.exe -Command Start-Website name'

【讨论】:

    【解决方案2】:

    如果您可以在 Windows 服务器中设置 Jenkins 代理,那么您可以在 Jenkins 构建步骤中使用 IIS app 命令来启动/停止您的 IIS

    【讨论】:

      【解决方案3】:

      当然可以:) 你必须确保 jenkins 有权启动和停止 IIS 服务器,即 jenkins 必须具有管理员权限

      已编辑

      如何将用户添加到管理员组
      https://www.isunshare.com/windows-server/add-a-user-to-local-administrator-group.html

      之后,您可以在命令行中使用启动和停止命令来启动和停止 IIS 服务器(编写一个 bat 脚本)

      STOP-net stop WAS
      START-net start W3SVC
      

      【讨论】:

      • 我们的 Jenkins 服务器与 IIS 服务器是分开的。我们的 Jenkins 服务器也使用 Linux 运行
      • jenkins 在哪里并不重要,只要 jenkins 可以与已经发生的 windows 通信(您正在传输文件),您需要做的就是以管理员身份授予 jenkins 权限或授予他权限IIS 应用程序组中的权限
      • Linux 机器如何运行批处理脚本?抱歉,我对 devops tbh 不是很熟悉。请参阅我接受的答案以了解我们现在所做的事情。如果您仍然认为批处理脚本更好,请告诉我。此外,我们与 windows iis 服务器通信的唯一方式是通过 publishovercifs 插件来删除文件。
      • 实际上linux并不关心扩展名是什么,如果它找到第一行即#!/bin/bash就会运行它,这样你就可以拥有一个名为“jenkins.iis”的文件会工作 :D ,这就是 linux 的美妙之处...这只是您可以想到的替代解决方案,如果您打算在需要更多控制时进入 jenkins 中的管道功能,这很有用:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多