Articles of 持续集成

如何持续构build版本化的Docker镜像

我有一个GitHub上的PHP项目,我想build立版本化的Docker镜像。 有点像CoreOS容器Linux与他们的阿尔法,testing版和稳定版本通道。 对于开发,我遵循Git Flow原则,并使用function – >开发 – >主分支。 我已经连接Travis进行自动PHPUnittesting,并且今天添加了CircleCI,因为我发现了可以自动生成版本的Rakefile。 它被用作标签。 我目前的.travis.yml: — services: – docker sudo: required env: global: – … addons: jwt: secure: … cache: directories: – /home/travis/docker/ before_install: – "docker –version" – 'if [[ ${TRAVIS_BRANCH} == "master" ]] && [[ ${TRAVIS_PULL_REQUEST} == "false" ]]; then echo "ENV GIT_SHA ${TRAVIS_COMMIT::8}" >> Dockerfile; fi' – […]

在Nagios服务检查上设置临时check_interval

有谁知道Nagios是否可以select在服务检查上设置一个临时check_interval设置,并在X分钟后恢复? 我的服务检查定义如下所示: define service { host_name prodhost use http service_description www.example.com:8080 check_command check_http!8080!example.com:8080!/!5.000!10.00 servicegroups http-check check_interval .5 retry_interval .25 max_check_attempts 3 } 问题是,每次更改到我的Web应用程序(通过configuration项),它也必须重新启动应用程序作为部署过程的一部分。 这会触发我的5秒钟和10秒钟的一些警告和严重警报。 我希望能够保持当前的check_interval , retry_interval和max_check_attempts阈值,但能够在部署完成后暂时更改它们,并在3分钟后恢复到原始状态。

我可以通过SSH向Artifactory或Nexus存储库进行身份validation吗?

我们正在寻找一个更好的浏览器界面的maven repo,并且在使用Artifactory或Nexus时,是否可以用.m2 / settings.xml中的纯文本密码replace为SSH密钥。 可能吗?

升级PHP并以非交互模式安装库

问题 我试图安装php 5.5和php5-memcached我的机器已经预装了php 5.3。 此外,我不能更改默认configuration,因为它是为CI提供的登台框。因此,让我们假设PHP 5.3是预安装的, 不能更改。 所以,首先我要尝试安装php,然后php-memcached: sudo apt-get update sudo apt-get -o Dpkg::Options::="–force-confnew" -o Dpkg::Options::="–force-overwrite" install -y php5 sudo apt-get -o Dpkg::Options::="–force-confnew" -o Dpkg::Options::="–force-overwrite" install -y php5-memcached 重要的是上面的命令是由build runner调用的,因此,它不是“交互”模式,因为没有“用户”正在关心安装。 问题是,因为现有的PHP 5.3我得到: (B)0包assembly置┌────────────────────────┤修改后的configuration文件├───────────────── ─────┐│configuration文件/etc/php5/cli/php.ini的新版本可以使用,││但是当前安装的版本已经在本地修改。││││你想做些什么修改configuration文件php.ini?││││安装包维护者的版本││保留当前安装的本地版本││显示版本之间的差异││显示版本之间的并行差异││启动一个新的shell审查情况│││││││││└└─────────────────────────────────── ───────────────────────────────────────┘ 那是因为它find了一些修改过的configuration文件。 问题是 – 我可以强迫它被覆盖吗? 正如你所看到的,我已经尝试了-o Dpkg::Options::="–force-confnew" -o Dpkg::Options::="–force-overwrite"没有任何成功(我想这是因为这个“对话框“与dpkg无关)。 显然,这个“对话框”的问题在于,所有的设置命令都是从CI容器内部调用的,并且没有可以执行任何“动作”的“用户” – 它应该是完全自动执行的。 再次, 问题 :如何在这种情况下强制覆盖任何configuration? 否则,我怎样才能达到最初的目标,并从5.3升级到5.5,然后安装php5-memcached?

在Windows XP上安装Cruise Control

我们在我们的专用networking中的各种Linux机器上安装了CruiseControl ,它们用于执行各种持续集成任务 – 构build,自动化testing… 现在我需要在Windows XP上设置CruiseControl。 我知道这样做有几个相比,在Linux做这个。 有没有详细说明安装过程的指导手册? 作者的网站似乎很less安装说明 。 请注意,我需要安装CruiseControl ,而不是CruiseControl .NET。

在jenkins中执行RSYNC命令

大家好,所以我想部署我的代码到远程服务器..到目前为止我已经尝试过 通过SSH插件发布:但问题是,我无法保持文件的权限 Rsync命令女巫我认为是更好的文件权限的原因,唯一的问题是,我不知道如何设置它的密码自动工作 这是我得到的 [JenkinsBuild] $ /bin/sh -xe /var/lib/jenkins/tmp/hudson4646064064846581974.sh + rsync -PSauve ssh –exclude=JenkinsBuild app bower.json config gruntfile.js karma.conf.js LICENSE.md Makefile node_modules package.json Procfile protractor.conf.js public README README.md server.js [email protected]:/srv/dp/prod Host key verification failed. rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6] 任何想法我在这里做错了吗?

分裂build立跨networking?

是否有一个已知的解决scheme来跨越networking机器拆分构build过程? 用例: 我们是一家普通的软件开发公司。 我们拥有大约50个开发工作站(四核2.66Ghz,4GB RAM,200GB RAID)。 没有必要告诉,在任何时候,并不是每台机器都被加载到最大。 有5到15个项目同时运行。 显然,他们都在服务器上不断构build,而不是部署到适当的环境。 单个项目构build需要3到15分钟。 问题是 :当我们连续build立5个项目时,最后一个项目将在大约25-50分钟后准备就绪。 并行构build并不能解决问题(构build只是游戏的一部分,比你需要部署,运行testing等) 是的,正确的解决scheme是添加另一个构build服务器,但“这涉及到购买新的昂贵的硬件,我们已经花了很多!” 对,对(该死的)! 无论如何。 在开发人员工作站之间进行拆分呢? 让我们说,每当我们需要build立项目“A”时,我们检查5个工作站,并开始build立在所有不超载。 只要至less有一台机器还在build造中,如果开发商确实需要机器的所有function,则构build可以被开发人员取消。 构build完成后,部署可以执行到适当的环境(托pipe在某个服务器上,而不是在工作站上:))。 公司越大,这对我来说就越有意义。 任何人都试过这样的事情? 有什么好的做法吗? 任何有用的软件? (90%的项目是.net C# ,platform – Windows )

TeamCity:'git fetch'命令失败。 stderr:套接字closures

我们一直在TeamCity工作多年,并用git作为版本控制系统。 我已经与TeamCitybuild立了整合,​​并且一直工作正常。 我们有四个使用git的不同项目 最近有些项目间歇性地停止了工作。 生成无法启动。 这样的消息显示为红色。 (与不同的代理): 无法在Teamcityagent8_Continuous5(和另外1个)上开始构build#1094 构build日志说很less: [16:12:46]Checking for changes [16:12:49]Failed to start build [16:12:49]Failed to collect changes, error: Error collecting changes for VCS repository 'http://foo-app-sprint:7990/scm/BAR/qux.git#master' 'git fetch' command failed. stderr: Socket Closed [16:12:49]Cannot calculate build metric 'percent of class coverage' – no value 奇怪的是,有其他项目有非常相似的configuration,工作得很好。 他们使用相同的构build代理。 我们使用Atlassian Stash作为Git服务器。 我已经看了那里的所有日志,当我在团队城市里跑步的时候什么都没有发生。 所以,TeamCity似乎甚至没有到达Git服务器。 如果我在TeamCity中testingVCS连接,它将起作用。 我已经testing重新启动藏匿。 它没有帮助。 […]

jenkinsbuild立新的分支手表,并build立命名分支

我想configuration一个单一的Jenkins构build(“工作”),这将同时: 注意新的分支,并在出现时build立它们 根据请求构build命名分支或提交 我可以实现(1)将“分支build立”设置为“**” 我可以实现(2)通过使参数化构build和设置“分支构build”到“$分支”(如本教程 ) 有什么办法可以同时做两个? 动机 我对(1)的用例是我想在合并到master之前testing“function分支”,所以我们可以在代码审查/请求时间看到更改是否通过了所有的testing。 我对(2)的用例是,有时候一个构build因虚假的原因而失败(如片状testing),我想重新运行它,或者一个老的分支已经从历史的底部掉下来了,我想重新 – 运行testing。

试图设置phpUnderControl但丢失phpcb

我试图在Ubuntu 10.04上设置phpUnderControl,这个教程是http://techportal.ibuildings.com/2009/03/03/getting-started-with-phpundercontrol/ 。 我得到它所说的键入sudo phpuc example /opt/cruisecontrol但接收到以下错误:缺lesscli工具'phpcb',检查PATHvariables。 我做了一点Googlesearch,但似乎无法find任何地方的phpcb的参考。 有谁知道这是什么,我可能得到它? 谢谢。