问题标签 [continuous-deployment]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jenkins - Jenkins 远程部署
我们正在尝试设置 Jenkins,但我们遇到了几个问题。
我们有一个“Jenkins 服务器”(主服务器)并将其连接到 Fisheye。Jenkins 能够获取 Git 存储库并运行测试。
Jenkins 是否有某种内置流程可以使其能够通过 SSH 连接到服务器并运行诸如“git pull origin master”之类的命令?
sql - 是否从源代码控制数据库驱动应用程序所需的转储开始?
与完全基于脚本或数据库增量工具相比,使用转储文件作为数据和模式迁移的基础有哪些优缺点?
上下文是应用程序处于生产状态,并且只有一个生产数据库。应用程序和数据库模式正在积极开发中。关键用户数据存在于生产数据库中,并且必须随着新版本或修复的部署而前滚。
正在讨论的解决方案是:
转储文件基础 -
- 从参考点转储文件开始。
- 数据库更改脚本被检入源代码控制。
- 部署需要加载转储文件,然后运行更改脚本
架构 + 迁移
- 整个模式和某些非用户配置数据在 SCM 中存储为 DDL 和 DML。
- 针对最新版本架构的迁移脚本存储在 SCM 中。
- 部署需要加载模式然后迁移数据。3.
我的直觉是使用二进制格式作为基础是不好的,但我需要能够说服其他人(如果确实如此),他们认为这是必要的。
我重新制定了这个问题,以便更容易回答。
以下是原始问题:
我正在与一个团队合作开发数据库驱动的企业应用程序,并希望改进我们的流程。目前,围绕更新所有层的数据库有很多手动过程。目标是拥有以自动化方式一致地更新数据库的自动化流程(符合原子提交的理念,更接近于持续交付),这将带来许多优势。
我认为模式(以及应用程序配置所需的某些数据)应该在源代码控制中表示,此外,从当前生产数据库转换和加载用户数据所需的任何脚本。我已经读过,不建议在源代码管理中使用转储文件 (.dmp),直观地说,我非常同意。但是,我不同意该项目的每个人。相反的论点是,实际上不可能,或者至少太难,不从转储文件开始。我遇到了数据库知识的极限,无法真正进行有意义的辩论……我更多的是开发人员,而不是数据库专家。建议的替代方法是保留将转储更改为最新模式的更改脚本。
有人可以帮助我更好地了解每种方法的优缺点吗?基于转储的方法是必要的、好主意还是不是好主意,为什么?
可能相关的一些背景知识:应用程序正在生产中,因此每个新版本都必须在部署过程中导入数据,并且由于集成和 UAT 层的明显原因,这应该是真实数据。但是,此应用程序不是由客户“交付”和安装的,在给定时间只有一个生产实例,由内部维护。我意识到会有特定于我的项目的细节,所以答案必须针对一般情况。
testing - 持续集成和部署的最佳实践
持续集成的概念刚刚融入我的团队。
假设我们有一个名为Dev的集成分支。
从中派生出 3 个分支,每个特定当前项目一个分支:
- 项目A
- 项目B
- 项目C
首先,Teamcity 配置在专用服务器上,其目标是:
从每个分支(包括 Dev)的版本化源中编译和启动单元和集成测试
然后,当然,每个项目分支(A、B 和 C)都必须在克隆的生产环境中进行测试,以便执行 UAT。
但我想知道我们应该部署在什么频率上?每次源代码更改?
我们应该在将每个项目合并到它之后(对应于下一个生产版本中的实际情况)只部署包含 3 个项目的混合的 Dev,还是独立部署 3 个项目?
如果部署了 Dev,则不得考虑 Dev 未来可能发生的变化。实际上,可能会有一个名为Project D的新项目开始,它不能成为下一个版本的一部分。所以采用 Dev for integration (UAT) 是有风险的,因为部署者可能会非自愿地集成 Project D 的内容,因此环境不会揭示下一个版本的现实。
其他解决方案:我们不是拿 Dev 而是独立的 3 个项目,所以必须有 3 个并行的克隆生产环境吗?
如果是,则 UAT 不可靠,因为集成环境的行为可能会经常变化......
UAT 持续部署的概念对我来说并不清楚......
java - 使用依赖服务生成可分发的二进制文件
我有一个 java 项目,其中结果分发需要运行另外两个服务:zookeeper 和项目 voldemort。我希望有一个构建过程,它输出每个项目的正确版本以及已经有效的配置,因此发布新环境将是从构建中获取片段然后在生产服务器上启动的问题。
我对项目使用版本控制系统,但是这两个依赖项有点大。我想保留在内部 ftp 服务器中,然后在构建时下载到 dist 文件夹。
这是一个好习惯吗?有没有人已经做过这样的事情?
c# - 哪些持续集成程序支持 Windows Phone 7 的良好工作流程
我对持续集成如何与 Windows Phone 应用程序一起工作感到有点困惑。有没有办法自动将应用程序上传到市场,还是您仍然需要手动更新?
我需要自己的服务器吗,还是有托管选项?
哪个程序最适合测试、构建和持续集成 Windows Phone 7 应用程序?
编辑:我使用的是 Atlassian Jira,但 Bamboo 似乎只适用于 Web 应用程序,而不是部署在设备上的应用程序。我没有要求,也没有经验,甚至不了解 CI 如何与非基于 Web 的项目一起工作。但是,我确实希望我们的代码在提交给 SVN 之前通过所有测试,如果有一种方法可以自动将最新的稳定版本推送给我们的用户,那将是非常棒的。
iis-7 - 使用 MSDeploy 持续部署 IIS 设置
我们使用 TFS (2008) 练习持续部署,并正在寻找一种处理 IIS 设置更改的好方法。MSDeploy 似乎应该是处理这个问题的方法,但经过大量阅读和搜索,我还没有找到一个好的答案。
在我看来,MSDeploy 的问题在于您需要使用现有的 IIS 网站创建部署包。我希望能够在源代码控制中为网站提供适当的 IIS 配置,并让构建创建包。
我能看到的唯一方法是手工制作archive.xml 文件。我的想法是正确的还是有更好的方法?
deployment - 使用 TeamCity 进行持续部署
我最近在 TeamCity 中设置了一个 CI 服务器,现在想把它带到下一步,持续部署。基本上,我们为每个客户提供一套宁静的服务和大约 3 个 Web 应用程序。所有客户都获得 3 个环境 QA、UAT 和 Prod。一旦我们的测试通过,我们希望能够自动部署我们的构建。我不是在寻找自定义脚本选项来执行此操作。我见过很多这样的。我们正在寻找的是像 UDeploy 这样的解决方案,但价格更低。有人知道 UDeploy 的替代品吗?或者其他与 TeamCity 一起使用的持续部署插件?
谢谢,
tomcat6 - 强制 Tomcat 6 在 Windows 上停止
我们正在使用 tomcat 6 为我们的应用程序提供基于 activeMQ 的 Java 后端。最近,我一直在研究如何为该产品的服务器端组件实施持续部署解决方案。
我想要做的是拥有我们的持续集成服务器:
1. 将 MSI 安装程序扔到虚拟机上
2.停止 Tomcat
3. 运行安装程序
4. 启动 Tomcat
5. 测试服务器是否正在运行
除了关闭 Tomcat 步骤之外,我可以执行所有这些操作。我面临的问题是 Tomcat 在关闭时并不总是很优雅。所以我需要能够强制服务器关闭。我对天气或不将 Tomcat 作为服务运行持开放态度。
有没有人有关于如何在 Windows 上关闭 Tomcat 6 的任何信息?我看过一些关于使用该-force
参数的文档,但这是不完整的并且针对的是 Unix 系统。
您可以提供的任何信息将不胜感激。
编辑:Tomcat 可能不是机器上运行的唯一 Java 进程。
xcode - 尝试在 Jenkins slave 上使用工作区编译 XCode 项目
我有一个 Jenkins slave 构建单个 xcode 项目,工作完美。
但是,我得到了一个带有工作区的项目,其中一些 3rd 方文件在工作区的根目录中设置了一个 gitmodule,然后按照此处所述导入到项目中。
当 Jenkins 编译并到达AppDelegate.h
它时,尝试从库中导入文件时会抛出错误。
我通过指向工作区来编译项目。但是,它现在在到达包装阶段时会失败。我没有看到工作区中创建的构建目录。