标签: continuous-deployment

使用ASP.NET网站进行持续部署?

我在C#/ ASP.NET中有一个目前正在开发的网站.当我们正在制作时,我希望在一天中经常发布,因为我们修复了错误并添加了功能(例如:http://toni.org/2010/05/19/in-praise-of -continuous-deployment-the-wordpress-com-story /).

如果您上传新版本的网站甚至更改单个文件,它会启动当前登录的用户并使其从任何表单等开始.是否有秘密能够在不干扰.NET站点用户的情况下进行部署?

.net c# asp.net session-state continuous-deployment

14
推荐指数
2
解决办法
1886
查看次数

自动验收测试 - UI或API?

我在过去几天一直在研究自动验收测试,了解BDD&JBehave,FitNesse&Slim,Selenium和WebDriver等.

我刚刚看到这个,他演示了如何使用FitNesse的编写和维护这样的测试视频由罗伯特C.马丁.接近尾声时,有人问这些测试是否会触及用户界面.Martin接着解释说,对UI的耦合验收测试成本很高,因为对UI的更改非常频繁.我还可以猜测,这些测试只能在UI开发之后编写,这将使测试人员按照定义落后于计划.

我不得不问:替代方案是什么?Martin似乎暗示测试应该是一个隐藏的层,它会操纵应用程序的业务层.我的理解是,这需要额外的工作,更不用说它会暴露一个新的API,需要在生产环境中保护一次.

可以通过应用程序服务访问业务层就足够了吗?

你有什么经验吗?

感谢分享!

automated-tests qa continuous-deployment

14
推荐指数
2
解决办法
5364
查看次数

快照和发布存储库的使用方式有何不同?

我知道在开发过程中,构建工件会放在快照存储库中.

当产品需要进行QA测试时,团队是否会从快照存储库中提取?或者他们是否进行完整构建,部署到发布存储库,然后从那里将其提供给QA?

此外,如果我的快照存储库包含每个构建的所有构建工件,那么这通常如何清理?我可以看到从构建服务器保留最后5个构建,但不是每个构建服务器.如果有帮助,我正在使用Artifactory.

continuous-integration ivy artifactory continuous-deployment

14
推荐指数
1
解决办法
7316
查看次数

Amazon Web Service CodeDeploy appspec.yml问题

我有一个Node.js应用程序,它使用CodeDeploy AWS部署系统通过Codeship自动部署到Amazon Web Service.

在部署过程中,我在appspec.yml中设置了要停止的当前运行的Web应用程序.部署完成后,我希望再次启动Web应用程序.

os: linux
files:
  - source: /
    destination: /var/www/app2
hooks:
  AfterInstall:
      - location: bash_scripts/stop_forever.sh
        runas: ec2-user
  ApplicationStart:
      - location: bash_scripts/start_forever.sh
        runas: ec2-user
Run Code Online (Sandbox Code Playgroud)

但是,在部署期间,我还无法从appspec.yml文件中成功调用这些脚本中的任何一个.

我在AWS部署代理日志中看到的当前错误是

Error CodeScriptMissing
Script Name /var/scripts/stop_forever.sh
MessageScript does not exist at specified location: /var/scripts/stop_forever.sh
Log TailLifecycleEvent - ApplicationStop
Run Code Online (Sandbox Code Playgroud)

这似乎是指旧版本的appspec.yml文件,它试图在不同的位置运行这些脚本.即使我已更改已部署包中的appspec.yml文件的内容,此错误消息在每次部署时保持不变.

除了上面列出的appspec.yml文件,我还尝试进行以下更改:

  • 不列出每个钩子的runas参数
  • 引用已部署目录中的脚本
  • 引用已部署目录之外的脚本
  • 版本参数初始设置为0.0

不幸的是,除了AWS文档之外,appspec.yml故障排除方面的在线数量非常少.

我做错了什么非常明显的事情?

continuous-integration yaml continuous-deployment codeship aws-code-deploy

14
推荐指数
2
解决办法
8721
查看次数

詹金斯未能建立下游工作

我正试图从我目前的工作中触发下游工作

pipeline {
  stages {
    stage('foo') {
      steps{
        build job: 'my-job', propagate: true, wait: true
      }
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

目的是等待工作结果,然后根据结果失败或成功.詹金斯总是对这条消息失败Waiting for non-job items is not supported.上面提到的工作没有任何参数,并且使用multibranch管道插件定义为我的其余工作.

我能想到的是,这种类型的jenkins项目不支持作为构建步骤输入,但这似乎违反直觉并且会被证明对我来说是一种阻碍.任何人都可以确认这是否确实如此?

如果是这样,有人可以提出任何变通方法吗?

谢谢

continuous-integration continuous-deployment jenkins

14
推荐指数
1
解决办法
4223
查看次数

持续集成和部署 - Xcode 6.1,OS X Server 4,Testflight,Cocoapods

随着最近发布的Apple软件,我找不到任何使用新的Xcode 6.1,OS X Server 4和TestFlight(Apple的alpha/beta分发平台)进行持续集成和部署的最新解决方案.经过几个小时的挫折,我能够让一切顺利进行.我分享这一点,希望我可以挽救你们中的一些人不必这样做.

这篇文章是Matt Vlasach在这里找到的博客文章的更新版本.

无论如何,这是步骤......

1.创建和分享新计划

  • 在Xcode中打开项目
  • 导航到顶部栏并选择"产品">"方案">"管理方案"
  • 创建新方案,然后单击"共享"复选标记

2.配置Scheme Archive Post-action

  • 导航到顶部栏并选择"产品">"方案">"管理方案"
  • 选择新方案,然后单击"编辑"
  • 展开"存档"下拉列表,然后选择"后期操作"
  • 单击底部的"+"以创建"New Run Shell Script"操作
  • 复制脚本并编辑"<>"标记中包含的5个值以匹配您的环境

3.将分发标识和配置文件安装到OS X Server上

注意:这些步骤应在运行OS X Server的Mac上完成

  • 如果您没有安装有效的分发证书,请为您的钥匙串创建(或导出)分发证书
  • 证书将默认为钥匙串中的"登录"类别,只需将证书拖到"系统"类别(位于钥匙串访问应用程序的侧栏)
  • 将所需的配置文件复制到/ Library/Developer/XcodeServer/ProvisioningProfiles /
    • 注意:您需要更改文件夹权限才能访问它
    • 提醒:确保已使用计算机上安装的分发证书对提供配置文件进行了签名

4.更改代码签名资源规则路径

注意:此步骤是Xcode问题的解决方法,似乎已在Xcode 6.1中重新引入

  • 在Xcode中打开项目
  • 导航到"构建设置"
  • 在"代码签名"部分中,添加$(SDKROOT)/ResourceRules.plist"代码签名资源规则路径"

5.提交对远程存储库的更改

  • 提交并推送对远程存储库的更改

6.创建和配置Xcode Bot

注意:这些步骤应在运行OS X Server的Mac上完成.此外,如果您使用SSH访问项目的git存储库,则有大量资源可指导您完成其他步骤,以便允许您的Xcode机器人访问您的存储库.

  • 从远程存储库克隆项目(如果需要)并在Xcode中打开
  • 导航到顶部栏并选择"产品">"创建机器人..."
  • 选择您创建的方案
  • 输入用于访问项目存储库的凭据(如果需要)
  • 选择所需的计划频率,操作等,并创建机器人

完成这些步骤后,您应该看到bot运行集成,它应该从远程存储库克隆您的项目,构建它,并将其上传到TestFlight!

注意:如果您正在使用CocoaPods,则在创建新方案时,请确保将目标设置为工作区.此外,由于Xcode机器人和CocoaPods仍然无法很好地协同工作,因此您的.gitignore中没有与CocoaPods相关的任何文件.有解决方案可以防止必须跟踪存储库中的所有这些文件,但我还没有找到可靠的解决方案.

continuous-integration continuous-deployment osx-server testflight xcode6

13
推荐指数
0
解决办法
2949
查看次数

使用GitLab持续部署NodeJS

我有一个在NodeJS中开发的API,并通过.gitlab-ci.yml文件成功建立了持续集成.如果所有测试都在主分支上传递,则下一步是设置到Heroku的连续部署.

有很多关于Ruby和Python应用程序部署的教程,但NodeJS上没有任何内容.目前我的.gitlab-ci.yml文件看起来像这样:

image: node:latest

job1:
  script: "ls -l"

test:
  script: "npm install;npm test"

production:
  type: deploy
  script:
  - npm install
  - npm start
  - gem install dpl
  - dpl --provider=heroku --app=my-first-nodejs --api-key=XXXXXXXXXX
  only:
  - master
Run Code Online (Sandbox Code Playgroud)

Ruby和Python教程使用该dpl工具进行部署,但是如何在部署后在服务器上启动NodeJS脚本?

添加生产部分并推送它之后,测试运行并通过,但部署阶段卡在挂起状态.控制台是空白的.有没有人为NodeJS设置成功的CD脚本?

javascript heroku node.js continuous-deployment gitlab

13
推荐指数
2
解决办法
1万
查看次数

Kubernetes Deployments的最佳CD策略

我们当前的CI部署阶段的工作方式如下:

  1. 构建容器.
  2. 将图像标记为"latest"< commit hash >.
  3. 将图像推送到存储库.
  4. 在适当的RC上调用滚动更新.

这对于基于RC的部署非常有用,但是现在Deployment对象变得更加稳定并且是一个底层功能,我们希望利用这种抽象优于当前的部署方案和开发阶段.

我遇到的问题是找到一种理智的方法来自动更新DeploymentCI工作流程.我一直在尝试的是拆分git repo并执行以下操作:

  1. [App Build]构建容器.
  2. [App Build]将图像标记为"latest"< commit hash >.
  3. [App Build]将图像推送到存储库.
  4. [App Build]调用app的Deploymentrepo的构建,传递当前的提交哈希.
  5. [部署构建]插入清单文件令牌(当前只是传递的提交哈希例如image: app-%%COMMIT_HASH%%)
  6. [部署构建]将更新的清单应用于适当的Deployment资源.

当然,虽然有更好的方法来处理这个问题.如果Deployment监控图像的"最新"标签的哈希变化,那将会很棒......也许它已经存在了?我没有成功.如何更好地处理部署的任何想法或见解Deployment将不胜感激:)

continuous-deployment gitlab-ci kubernetes

13
推荐指数
1
解决办法
1807
查看次数

在推送到Git master分支时自动更新数百个Windows部署

我正在尝试使用Git来管理许多Windows服务器上安装的产品.这是当前状态:

  • 每个客户都拉了存储库并且在master分支机构上,
  • 服务器始终打开并连接到Internet,
  • 我有完全访问权限(管理员)到服务器,但其他一些人(我公司外)也可以访问,所以我应该小心使用SSH密钥等凭据,
  • 产品源代码很小(不超过5MB).

当我(作为开发人员)推送提交到masterGit服务器上的分支时,以下是我想要实现的:

  • 所有Windows服务器都会自动提取新提交并将其副本更新到最新版本,
  • 执行一些脚本(重启某些服务,运行测试等),
  • 记录整个更新过程,
  • 服务器将其当前状态(Git提交,标记和分支)报告给远程服务器,以便每次推送后检查所有服务器的状态.

我有什么选择?有没有软件或我必须建立自己的软件?我检查了Git钩子,但是在我手动拉动每个服务器上的代码之后它们似乎触发了.

git deployment continuous-integration github continuous-deployment

13
推荐指数
1
解决办法
161
查看次数

使用Git和Heroku进行适当的持续集成和持续部署

我正在使用heroku和git在rails网站上开发ruby.

我应该使用哪些工具和功能来设置以下简单的开发过程?

代码>登记>自动测试>自动部署

  • 我将我的代码检入我的存储库(首选选项,托管git,如github)
  • 测试自动运行并在我的staging heroku应用程序中部署网站
  • 如果测试通过,网站将自动部署在我的生产heroku应用程序上
  • 如果测试失败,我想以某种方式得到通知.

你会怎么做?

git continuous-integration ruby-on-rails heroku continuous-deployment

12
推荐指数
2
解决办法
3494
查看次数