我一直在为PHP项目开发一个实现大多数自动化连续部署周期的工作流程.我想对此工作流程中可能的流程或技术瓶颈,改进建议以及如何更好地自动化和增加团队易用性的想法提供一些反馈.
Hudson CI服务器Git 和 GitHubPHPUnit 单元测试Selenium RCSauce OnDemand 用于自动化,跨浏览器,云测试 Selenium RCPuppet 用于自动化测试服务器部署Gerrit 用于Git代码审查Gerrit Trigger 对于 Hudson编辑:我已经改变了工作流程图形采取ircmaxwell的贡献考虑在内:删除PHPUnit的扩展Selenium RC和运行这些测试仅作为QC阶段的一部分; 增加QC阶段; 在代码审查之后但在合并之前移动UI测试; 在QC阶段之后移动合并; 合并后移动部署.
此工作流程图描述了该过程.我的问题/想法/关注如下.

使用该系统的总体困难.
时间参与.
难以招聘Gerrit.
难以招聘Puppet.
我们稍后将在Amazon EC2实例上进行部署.如果我们要了解如何设置Debian与包Puppet和部署到Linode现在片,有没有对工作部署的潜力Linode来打破EC2?我们应该从一开始就进行构建和部署EC2吗?
另一个问题:EC2和Puppet.我们也在考虑使用Scalr作为解决方案.是否有必要避免Puppet单独开销并投资Scalr?我这里有关于成本的次要问题(ha!); 该Selenium试验不应该运行的是往往是EC2建立实例运行24/7,但对于像五分钟的身材,对于一个小时支付 …
我正在评估WF在网络上的业务应用程序中使用,我很想听听最近这个技术的第一手资料.
我最关心的是提高项目的可维护性,并在处理频繁变化的复杂流程时提高开发人员的工作效率.
我真的很喜欢WF的想法,但是它似乎相对不为人知,而且我发现许多较老的评论都提到它一旦进入它就会非常复杂.
如果它被过度设计到一个中小型项目无法使用(或不好的权衡),那就是我需要知道的事情.
当然,它已经从2006年底开始,所以也许它已经成熟了.如果是这样的话,这是另一条非常有用的信息!
提前致谢!
使用Windows Workflow foundation(WF)与滚动自己的工作流框架有什么好处?
据我所知,WF只提供了一个非常简单的运行时引擎,一堆类和一个用于定义工作流的模式(基于XAML).所有困难的东西,如持久性,为运行时提供主机进程,以及实现分布式工作流(跨进程)都由您自己决定.
另外,使用WF还有一个学习曲线...如果我们创建了自己的工作流框架,我们只会利用所有开发人员已有的技能(C#,XML,SQL等).
我从MS传播者那里看到了这个博客,它试图解释为什么我们应该使用WF:
IMO它没有很好地说服,因为它只是说它有助于"开发人员的工作效率",同时承认开发人员可以自己动手.
任何一个聪明的人都可以提出更好的理由吗?
以下答案摘要:
我认为最有说服力的理由是使用标准化的工作流平台(如WF(而不是自己动手))将允许您利用当前和未来的工具,例如MS和第三方提供的可视化设计器.
另外,因为它是基于.NET的技术的MS堆栈的一部分,它可能会有更好的集成/迁移路径与未来的MS技术(如Azure).
最后,拥有WF经验的开发人员数量将会增加(因为这将使他们在职业生涯中受益),将其转变为基本的商品技能,如SQL或HTML,这意味着找到可以开始使用它的人变得更容易最小的加速时间.
我正在使用 Ruby on Rails 应用程序尝试 GitHub Actions for CI。
我的设置是使用 VM,而不是在容器中运行 Ruby 构建。
这是我的工作流程 yml。它一直运行而没有错误,直到步骤“设置数据库”。
name: Rails CI
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:10.10
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: db_test
ports:
- 5432/tcp
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:latest
ports:
- 6379/tcp
steps:
- uses: actions/checkout@v1
- name: Set up ruby 2.5
uses: actions/setup-ruby@v1
with:
ruby-version: 2.5.5
- name: Set up node …Run Code Online (Sandbox Code Playgroud) 这是一个多部分问题:
首先,您对Workflow的个人看法是什么?
其次,有没有其他好的基于.NET的工作流引擎?有关我用法的一些信息:
我不关心工作流是在DB,XML还是Code中定义的,因为我们决定定义它,如果它不受支持,我们可以编写一个适配器.专有(免费或费用)很好,但首选开源.
我经常使用ipdb,只是跳转到一段孤立的代码,即很难编写一个使用它的真实脚本.相反,我用模拟编写了一个最小的测试用例并跳转到它.
工作流程的示例:
def func():
...
import ipdb
ipdb.set_trace()
...
def test_case():
...
func()
...
Run Code Online (Sandbox Code Playgroud)
然后,调用
py.test test_file.py -s -k test_case
Run Code Online (Sandbox Code Playgroud)
现在,通常我只检查一个或两个变量,然后想要退出.更改代码并重新执行.
我该如何戒烟?手册说q退出调试器.它(真的)没有.在调试器实际终止之前,您必须退出几次.Ctrl-C和Ctrl-D的相同行为(多次击中Ctrl-D的挫折最终也会退出终端).
是否有一种强制退出的聪明方法?这个工作流程是否合理?这样做的标准方法是什么?
有没有人知道Javascript的工作流引擎(如Spring WebFlow)?我们有一个自制的框架,允许我们使用JSON引导网站导航,但它的质量远远不够好.
根据给定的答案进行编辑:引擎必须在浏览器上运行,并将对服务器的请求数减少到最少.
编写新的工作流引擎或使用现有的BPM引擎更好:jBPM 5,Activiti 5?
我的应用程序是基于Web的应用程序,性能很重要.我怀疑的是,与编写简单的工作流引擎相比,使用jBPM/Activiti是否会带来性能开销.
如果我采用自我实现,我将错过工作流的可视化.为了表现,它可以交易.
我创建了工作流程Test,但没有Run workflow手动运行它的按钮。
这是我的test.yml文件。有什么遗漏吗?
name: Test
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run a one-line script
run: echo Hello, world!
Run Code Online (Sandbox Code Playgroud) 想知道是否可以拥有MySQL数据库的版本控制.
我意识到这个问题之前已经被问过,但最新的差不多是一年前的事情,而且事情发生了变化......
问题是,每个开发人员都在他们自己的计算机上有apache/MySQL/PHP,他们有时会编辑数据库.如果他们必须向所有其他开发人员发送电子邮件然后手动编辑测试服务器数据库,则相当不方便.
你是如何处理这个问题的?
谢谢