最近我读了很多文章,讨论使用"功能切换"或"看门人"的想法,以便在开发完成之前保留用户隐藏的功能.Facebook和Flickr都谈到他们如何使用它来测试一些用户的新功能,然后再将其释放到每个人身上.
一些谷歌搜索没有发现任何现有的PHP包/工具可以添加到Web应用程序来处理这类事情.如果我们不需要的话,似乎可以直接推出我们自己但没有理由重新发明那个轮子.有没有现成的PHP工具呢?
用品
澄清:我想看看它是否存在的部分是管理面板,它控制哪些用户可以看到新功能.在Flickr的例子中,他们可以根据主机打开它.在Facebook示例中,他们添加了一些功能,例如将功能限制为5%的用户,仅限TechCrunch用户或仅限东海岸用户.
当你有200个开启的功能,10个尚未完成的功能以及3个你正在为某些用户演示的功能时,管理面板似乎至关重要.
php continuous-integration continuous-deployment featuretoggle
我一直在尝试使用Codeship和Heroku来持续部署我目前正在编写的AngularJS应用程序.该应用程序是使用Yeoman创建的,并使用bower和grunt.最初我认为这似乎是一个非常好的设置,因为Codeship可以免费使用,我很快就可以配置它来构建我的AngularJS项目,并且它提供了在构建之后添加部署步骤的能力.甚至有许多PaaS提供商可供选择(Heroku,S3,Google App Engine等).然而,我似乎已经变得有点卡住让Heroku上的应用程序运行.
问题始于所有文档都建议我/dist从我的路径中删除路径,.gitignore以便将此目录发布到Heroku post build.这主要来自谈论从本地机器发布到Heroku的文档,但我认为这无论如何都是Codeship所做的.我不想这样做,因为我不相信我应该检查构建输出到源代码控制.该/dist文件夹已添加到.gitignore有充分理由.此外,这种方式在某种程度上打败了CI服务器,因为我可能只是从我的机器上推出最新版本.
在进行了一些挖掘之后,我发现我可以在我的packages.json文件中添加一个postinstall步骤,例如bower install && grunt build,它将重新运行Heroku上的构建,从而重新填充所有的bower依赖项(他们希望我签入源代码的其他内容)控制!)和dist目录.
在试一试后,很明显我需要添加bower和grunt作为依赖项packages.json,这意味着移动devDependencies它们应该属于它们的位置!
所以我现在似乎陷入困境.我想要做的就是发布我的构建artefacts(/dist)依赖项(/bower_components)和server.js将运行该站点的文件.有谁知道如何使用Heroku和Codeship实现这一目标?或者,任何人都可以使用不同的工具取得成功.我正在寻找免费的东西,我愿意接受它不会生产稳定(不会扩展到多个服务器等),但现在这很好,因为我想做的就是不断部署应用程序内部测试,并能够与我的团队的非技术成员分享输出,以便我们可以讨论我们要优先考虑的功能等.
任何建议将不胜感激.
谢谢
我们的团队使用Umbraco 7作为我们的CMS.我们有一个简单的MVC网站和两个主要环境; 测试和PROD.每个环境都有自己的Umbraco安装和数据库.
我的任务是设置一个自动部署流程,只需从我们的TEST Umbraco中获取所有内容,媒体和设置,然后将其安装到我们的生产环境中.通过点击Octopos部署中的按钮来触发此过程(这反过来将调用ac#程序,该程序将通过调用必要的Umbraco API和插件来处理实际部署).
作为我的部署工具,我决定使用Courier 2.我正在使用试用版在我在本地设置的两个站点之间进行同步(UmbracoA.local和UmbracoB.local).我设法使用Backoffice中的Courier 2界面,在UmbracoA上创建一个修订版,将其传输到UmbracoB并手动安装.
现在我必须找到一种方法来调用Courier 2 API并自动触发这些步骤.(任何用户都不应该使用Backoffice来完成任何部署过程).
自动化的步骤是:
根据我的理解,Courier 2有一个事件模型,我可以将自己的步骤挂钩,但我只是想触发Courier 2的本地事件,即创建修订并在第二个站点上推送和安装它.当然,这必须是对他们的API的一个相当简单的调用?
你可以想象,我对Umbraco和Courier 2都很新,但基本上我正在寻找的只是一个代码示例,说明如何调用事件来触发这个过程.
在此先感谢,如果我能提供有关我的方案的更多信息,可以帮助我回答我的问题,请告诉我!
额外信息: - Umbraco版本7.5.4 - Courier版本2.52.15
我使用CodePipeline带CodeCommit。按下master分支自动触发构建。在CodePipeline控制台中,可以清楚地看到我正在接收提交ID,但是我需要在构建环境中获取它,以便在构建它时可以将它们作为标签添加到ECS映像中。有没有一种进入构建环境的方法。

continuous-integration amazon-web-services continuous-deployment aws-codepipeline aws-codebuild
我们的应用程序已容器化,并使用docker swarm作为协调器。我想了解我们如何将docker映像从dev,qa,uat推广到生产环境。例如,如果我在dev中创建的映像为test:10(10是jenkins生成的内部版本号)。如何将相同的形象推广到质量保证,生产和生产。我们当前正在使用NEXUS作为docker存储库。我不明白的是,我将如何提取在开发环境中使用过的确切图像。有人能帮忙吗。我长期与逻辑斗争:(
我试图了解将我们的Java项目从Snaphot/Release策略切换到构建促销的所有含义.
一个明显的步骤是每个构建最终会创建一个可能一直到生产环境的工件,因此不再存在快照.但是,我应该如何管理从项目到其他工件的链接,这可能会也可能不会被允许进行生产?
我很难找到关于这个特定主题的有价值的信息.当然,构建促销的内容很多,但是根据迁移到构建促销的依赖管理的可见性较低.
我看到两个选择:
是否有关于此主题的行业标准?还是最佳实践?
非常感谢你的帮助 :)
编辑:我们向Artifactory部署了三种工件:
图书馆
耳朵
EAR内的模块.其中一些是任何想要与当前构建的EAR交互的EAR所需的"公共"层
我们将EAR部署到JEE服务器.我们的库和公共层部署到Artifactory并打包在EAR中,因此它们不直接部署在JEE容器上.
一个项目构建了几个模块,所有内容都包含在EAR中,以及它的依赖项.一个项目可以依赖于另一个项目的模块,这就是它变得复杂的地方......
java continuous-integration artifactory continuous-deployment continuous-delivery
我希望使用AppSync深入研究项目.到目前为止,我已经能够找到大量的文章,并且在线提供了关于点击哪些按钮以便运行示例项目的所有步骤,但是它们似乎都没有涉及如何从本地开发处理它或在CI/CD环境中.它可能是我的"老派"关于dev通常如何工作的想法,但我期待在某种程度上模拟本地环境以进行开发和运行单元测试,但我似乎无法找到任何方法来做到这一点.当我到达UI部分时,我不知道如何让后端的本地开发实例运行.
人们不再以这种方式发展,而是选择站起来"开发堆栈"吗?我只是想确保我不会在将来把自己画成一个角落.
continuous-integration automated-tests unit-testing continuous-deployment aws-appsync
我正在使用VSTS,利用新的静态网站功能将Angular应用程序部署到Blob存储。为此,我正在使用Azure File Copy任务。由于Angular会在每个版本中为不同的包创建新的文件名,所以我不能只覆盖旧文件,因此最终该$web容器中将有很多旧文件和未使用的文件。
不幸的是,我没有找到合适的任务来做到这一点。
在重新部署之前,如何使用发布管道在VSTS中删除或清除此容器?
我正在尝试使用 Fargate 将一组微服务从 Docker Swarm 迁移到 AWS ECS。
我已经创建了一个ECS集群。此外,我还使用 ECR 初始化了存储库,每个存储库都包含一个微服务的映像。
我已经成功地想出了一种创建新图像并将它们推入 ECR 的方法。事实上,随着代码的每次更改,都会构建、标记并推送一个新的 docker 镜像。
此外,我还创建了一个链接到服务的任务定义。该任务定义包含一个容器以及所有必要的信息。此外,其服务定义该任务将在VPC中运行,并链接到负载均衡器,并且具有目标组。我假设每个新部署都使用带有“最新”标签的映像。
到目前为止,根据我的解释,一切都很清楚并且运行良好。
下面是让我困惑的部分。在每次新构建之后,我想更新服务,以便部署具有更新映像的新任务。我使用 cli 通过以下命令来执行此操作:
aws ecs update-service --cluster <cluster-name> --service <service-name>
通常,执行命令后,我会在事件选项卡下监视部署日志,并使用以下命令检查服务的状态:
aws ecs describe-services --cluster <cluster-name> --service <service-name>
最后,我尝试模拟新创建的图像包含错误代码的情况。因此,新任务将无法部署。我所目睹的是 Fargate 将继续尝试(不间断)部署新任务。此外,除了事件日志之外,describe-services除了 Fargate 正在执行的操作(例如,注册/取消注册任务)之外,该命令不包含相关信息。令我惊讶的是,我找不到任何指示 Fargate 或服务停止部署并回滚到现有部署的机制。
我找到这篇文章(https://aws.amazon.com/blogs/compute/automating-rollback-of-failed-amazon-ecs-deployments/),它提供了一个解决方案。然而,这是一个相当复杂的问题,并且假设每个新部署都是由新任务定义触发的,这不是我想要的。
因此,考虑到我上面的描述,我希望你能回答以下问题:
1)使用CLI命令(出于自动化目的)是否有一种方法可以指示Fargate在几次尝试部署新任务失败后自动停止当前部署?
2)使用CLI命令,有没有办法监控部署的当前状态?例如,当对Docker swarm上的服务进行服务更新时,终端会生成更新过程的实时日志
3) 部署失败后,Fargate 是否有办法发出错误代码、标志或消息?
amazon-web-services amazon-ecs continuous-deployment aws-fargate
我试图跳过stage基于常规变量,该变量值将在另一个阶段计算。
在下面的示例中,Validate阶段是基于环境变量有条件地跳过的VALIDATION_REQUIRED,我将在构建/触发作业时传递该环境变量。---这按预期工作。
Build而即使isValidationSuccess变量设置为 ,阶段也始终运行false。我尝试更改when条件表达式,例如{ return "${isValidationSuccess}" == true ; } or{ return "${isValidationSuccess}" == 'true' ; }但没有成功。打印变量时它显示为“false”
def isValidationSuccess = true
pipeline {
agent any
stages(checkout) {
// GIT checkout here
}
stage("Validate") {
when {
environment name: 'VALIDATION_REQUIRED', value: 'true'
}
steps {
if(some_condition){
isValidationSuccess = false;
}
}
}
stage("Build") {
when {
expression { return "${isValidationSuccess}"; }
}
steps { …Run Code Online (Sandbox Code Playgroud) groovy continuous-deployment jenkins jenkins-groovy jenkins-pipeline
amazon-ecs ×1
angularjs ×1
artifactory ×1
aws-appsync ×1
aws-fargate ×1
azure-devops ×1
c# ×1
codeship ×1
docker ×1
docker-image ×1
groovy ×1
heroku ×1
java ×1
jenkins ×1
nexus ×1
node.js ×1
php ×1
swarm ×1
umbraco ×1
umbraco7 ×1
unit-testing ×1