我在Azure网站上运行了一个.net 4.5网站.我已经设置了暂存部署.我对这两个站点进行了预热,然后运行交换过程(来自azure portal和Azure powershell).无论我尝试什么交换过程重新启动我的网站(两者),他们需要大约3分钟启动.
我的印象是,部署交换应该让网站"保持温暖",没有停机时间?我的网站大约3分钟不可用!
据我所知,生产和临时插槽具有相同的应用程序设置等.
任何建议或指示将不胜感激.
continuous-integration azure continuous-deployment azure-web-sites
我是配置管理和部署工具的新手.我必须为我曾经掌握过的最有趣的项目之一实施持续交付/持续部署工具.
首先,单独地,我很自在AWS,我知道它是什么Ansible,它背后的逻辑和目的.我没有相同程度的理解,Docker但我明白了.我经历了很多互联网资源,但我无法了解全局.
我一直在努力的是他们如何融合在一起.使用Ansible,我可以管理我的基础设施作为代码; 构建EC2实例,安装包......我甚至可以通过拉动代码,修改配置文件和启动Web服务器来部署完整的应用程序.Docker它本身就是一个打包应用程序的工具,并确保它可以在任何部署它的地方运行.
我的问题是:
Docker(或Ansible和Docker)如何扩展持续集成流程!?
假设我们有一个源代码存储库,团队成员完成了一项功能,他们推动了他们的工作.Jenkins检测到这一点,运行所有接受/单元/集成测试套件,如果它们全部通过,则将其声明为稳定版本.Docker如何适合这里?我的意思是当团队推动他们的工作时,Jenkins是否必须在应用程序中提取编码的Docker文件源,构建应用程序的映像,启动容器并针对它运行所有测试,或者以经典方式运行测试,如果一切都很好然后它从Docker文件构建Docker镜像并将其保存在私人场所?Jenkins应该使用xyz标记最终图像吗?
Docker容器配置:
假设我们有一个Jenkins存储在某处的图像,如何处理将相同的图像部署到不同的环境,甚至是不同的配置参数(Vhosts配置,数据库主机,队列URL,S3端点等......)最灵活的是什么如何在不破坏Docker原则的情况下处理这个问题?这些配置是在构建时还是基于它的容器启动时支持在映像中,如果是这样,它们是如何注入的?
Ansible和Docker:
Ansible提供了一个Docker管理Docker容器的模块.假设我解决了上面提到的问题,当我想部署我的应用程序的新版本xtz时,我告诉Ansible从存储它的位置拉出该图像,启动应用程序容器,以便如何注入配置设置!?Ansible是否必须在运行之前登录Docker镜像(这对我来说听起来很疯狂)并且使用其Jinja2模板与经典主机相同!?如果没有,这是如何处理的?!
对不起,如果这是一个很长的问题,或者我拼错了什么,但这是我大声思考的问题.过去两周我被封锁了,我无法弄清楚正确的工作流程.我希望这能成为未来读者的参考.
请阅读您的经验和解决方案非常有用,因为这看起来像是一个常见的工作流程.先感谢您.任何帮助深表感谢.
amazon-web-services continuous-deployment continuous-delivery ansible docker
我最近在TeamCity中设置了CI服务器,现在想要将其用于下一步,即持续部署.基本上,我们为每个客户提供一套宁静的服务和大约3个Web应用程序.所有客户都获得3种环境QA,UAT和Prod.我们希望能够在测试通过后自动部署我们的构建.我不是在寻找自定义脚本选项来做到这一点.我见过很多SO.我们正在寻找的是像UDeploy这样的解决方案,但价格较低.有人知道UDeploy的替代品吗?或者与TeamCity一起使用的其他持续部署插件?
谢谢,
我有一个用Clojure编写的Web服务,该服务不断交付.为了使我们的自动部署工具能够知道已部署了哪个版本的代码库,Web服务应该提供一种方法来查询它是哪个版本.该版本被声明为Leiningen构建工具中项目设置的一部分,如下所示:
(defproject my-web-service "1.2-SNAPSHOT"
; ... rest of project.clj
)
Run Code Online (Sandbox Code Playgroud)
代码库打包为JAR文件.
我们的开发人员不希望在每次提交时增加版本号.相反,我们希望只要在我们的持续集成服务器(在本例中为Jenkins)上触发新构建,它就会自动递增.例如,当版本控制签入提示此代码库的第四十二个版本时,版本是1.2.42.
对于任何已构建和部署的特定JAR,我希望允许以某种方式查询版本号(例如,使用HTTP请求,但这是一个实现细节).响应应包括字符串1.2.42.
如何使正在运行的应用程序可以使用该版本号?
(可能重复,但不包括Jenkins方面:在应用程序中嵌入来自leiningen项目的版本字符串)
continuous-integration clojure leiningen continuous-deployment jenkins
我试图让travis-ci运行一个自定义部署脚本,用于awscli将部署推送到我的登台服务器.
在我的.travis.yml文件中,我有这个:
before_deploy:
- 'curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"'
- 'unzip awscli-bundle.zip'
- './awscli-bundle/install -b ~/bin/aws'
- 'export PATH=~/bin:$PATH'
- 'aws configure'
Run Code Online (Sandbox Code Playgroud)
我已经设置了以下环境变量:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION
Run Code Online (Sandbox Code Playgroud)
在travis-ciWeb界面中使用正确的值.
但是当aws configure运行时,它会停止并等待用户输入.如何告诉它使用我定义的环境变量?
configuration amazon-web-services continuous-deployment travis-ci aws-cli
是否可以将gitlab ci作业标记为手动启动?
我需要它来部署应用程序,但我想决定它是否将被部署
continuous-deployment continuous-delivery gitlab gitlab-ci gitlab-ci-runner
我正在使用 GitHub Actions 部署到 Azure。在这个项目中,我使用我们自己的私有存储库,该存储库托管在 GitHub 上。这些存储库将在构建期间安装,它们的链接存储在 中requirements.txt,例如:
git+ssh://git@github.com/org-name/package-name.git
Run Code Online (Sandbox Code Playgroud)
在本地,安装需求没有问题,因为我可以通过 SSH 访问这些私有存储库。但是我如何在 GitHub 操作中构建期间访问这些内容。
我收到错误:
Collecting git+ssh://****@github.com/org-name/package-name.git (from -r requirements.txt (line 1))
Cloning ssh://****@github.com/org-nam/package-name.git to /tmp/pip-req-build-9nud9608
ERROR: Command errored out with exit status 128: git clone -q 'ssh://****@github.com/org-name/package-name.git' /tmp/pip-req-build-9nud9608 Check the logs for full command output.
Error: Process completed with exit code 1.
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为它是一个私人存储库。
在 GitHub文档中,它指出机密的优先级从低到高 ( Environment> Repository> Organization),它还指出Organization机密可用于组织中的所有存储库。但它没有说明任何关于Environment和Repository秘密的东西。
我的问题是:
Environment和Repositorysecret和有什么不一样?Environment什么时候应该使用秘密?Repository什么时候应该使用秘密?continuous-integration github environment-variables continuous-deployment github-actions
我在过去几天一直在研究自动验收测试,了解BDD&JBehave,FitNesse&Slim,Selenium和WebDriver等.
我刚刚看到这个,他演示了如何使用FitNesse的编写和维护这样的测试视频由罗伯特C.马丁.接近尾声时,有人问这些测试是否会触及用户界面.Martin接着解释说,对UI的耦合验收测试成本很高,因为对UI的更改非常频繁.我还可以猜测,这些测试只能在UI开发之后编写,这将使测试人员按照定义落后于计划.
我不得不问:替代方案是什么?Martin似乎暗示测试应该是一个隐藏的层,它会操纵应用程序的业务层.我的理解是,这需要额外的工作,更不用说它会暴露一个新的API,需要在生产环境中保护一次.
可以通过应用程序服务访问业务层就足够了吗?
你有什么经验吗?
感谢分享!
我正试图从我目前的工作中触发下游工作
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项目不支持作为构建步骤输入,但这似乎违反直觉并且会被证明对我来说是一种阻碍.任何人都可以确认这是否确实如此?
如果是这样,有人可以提出任何变通方法吗?
谢谢