我正在考虑使用Docker在持续集成(CI)服务器上构建我的依赖项,这样我就不必在代理本身上安装所有运行时和库.为了实现这一点,我需要将容器内部构建的构建工件复制回主机.
那可能吗?
我注意到docker我需要了解容器内发生的事情或者那里存在的文件.一个例子是从docker索引下载图像 - 你不知道图像包含什么,因此无法启动应用程序.
什么是理想的是能够ssh到他们或等同.有没有一个工具可以做到这一点,或者我认为码头工作者的错误认为我应该能够做到这一点.
如果我有一个案例类的嵌套对象图,类似于下面的示例,并且我想将它们的集合存储在redis列表中,那么我应该看哪些库或工具可以提供最快的整体往返Redis的?
这将包括:
时间反序列化回案例类
case class Person(name: String, age: Int, children: List[Person]) {}
Run Code Online (Sandbox Code Playgroud)我使用所有默认值在VS Express 2013中创建了一个基本的ASP.NET Web Api应用程序.我添加了一个控制器,它就像我想要的那样返回XML.
一旦我安装CORS包:
Install-Package Microsoft.AspNet.WebApi.Cors -Pre
Run Code Online (Sandbox Code Playgroud)
我甚至不能再运行该应用程序了:
An exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll and wasn't handled before a managed/native boundary
Additional information: Could not load file or assembly 'System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Run Code Online (Sandbox Code Playgroud)
我按照本博客文章中的所有说明进行了操作:http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api,其中没有提及此问题.
我尝试使用以下方法更新Web API:
Install-Package Microsoft.AspNet.WebApi -Pre
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这个问题仍然存在
在项目中我使用WebApi.Hal,它依赖于Web.Api 5.0及更高版本.是否有任何重大变化?
绝对最小值重现问题
我正在构建一个应用程序,允许动态添加和删除对kafka主题的订阅.添加主题订阅时,我希望每小时运行一次批处理作业,获取所有新消息并将其推送到另一个数据存储区.
我想要了解的是如何获取主题的当前偏移量.一旦添加订阅,我希望下一个批处理作业从订阅的大致时间开始获取所有消息.
举个例子,假设我有一个名为"TopicA"的主题,它不断收到消息.如果我在下午7点15分添加订阅,当批处理作业在晚上8点运行时,我想要从7.15pm开始批量处理所有消息.我很高兴有时间近似 - 7.10,7.20等5或10分钟任何一方都让我无所顾忌.
所以我的预期解决方案是在添加订阅时获取主题的当前偏移量.我看过这个简单的消费者,但我不想参与这个基本用例的所有集群管理软件方面.
我也看过高级消费者.我可能会这样:
consumer.createMessageStreamsByFilter(new Whitelist(topicName)).head.head.offset
Run Code Online (Sandbox Code Playgroud)
我对这种方法的担忧是对"head"的调用实际上是一个流.所以我相信它会阻止等待下一条消息.阻塞是有问题的,因为它可能导致其他订阅排队,直到下一条消息到达.
我很乐意花一些时间来实现后一种方法,但是如果有一种更简单的方法不需要我编写容易出错的并发代码,那么我宁愿不浪费我的时间.
我还需要一种方法来获取自该偏移量以来的所有日志.
作为CI设置的一部分,第一步是使用SBT创建包/罐dist.以下步骤是使用dist-created jar 运行单元,集成和功能测试.
是否有可能用SBT做到这一点?
通常我会使用sbt testOnly "Unit.*",但这在项目的上下文中有效.我找不到任何文档显示如何在已经有jar的情况下执行此操作.
我正在使用ScalaTest,我知道有一个跑步者,我可以使用http://www.scalatest.org/user_guide/using_the_runner.但是如果可能的话,使用SBT会更简单.
举个例子,我正在寻找这样的东西:
sbt testOnly "Unit.* -jar myjar.jar"
Run Code Online (Sandbox Code Playgroud)
当我使用以下内容时,我的测试是否会包含在jar中:
sbt dist
Run Code Online (Sandbox Code Playgroud)
?
编辑
我添加build.sbt了以下内容:
name := "abc"
version := "1.0-SNAPSHOT"
scalaVersion := "2.10.0"
Run Code Online (Sandbox Code Playgroud)我添加了lib文件夹并将我的测试jar复制到其中
我跑了 sbt testOnly Unit.*
它找不到任何测试
编辑2
我尝试使用以下"正确"的SBT文件:
name := "ihs2tests"
version := "1.0-SNAPSHOT"
scalaVersion := "2.10.0"
unmanagedBase in Test := new java.io.File(".")
Run Code Online (Sandbox Code Playgroud)
并移入test.jar项目的根目录.再次,没有发现任何测试.
我正在使用docker来持续集成Scala项目.在容器内部,我正在构建项目并使用"sbt dist"创建分发.
这需要花费很长时间来拉下所有依赖项,我想使用这里提到的docker数据卷:http://docs.docker.io/en/latest/use/working_with_volumes/
但是,我不明白如何让SBT将jar文件放入卷中,或者SBT如何知道如何从该卷读取它们.
我在SBT中创建了一个任务,它将创建一个格式正确的类路径,但是当我尝试时,我得到一个未定义的设置错误compile.该错误不足以告诉我哪些设置未定义:
[error] Reference to undefined setting:
[error]
[error] *:fullClasspath from *:fcp
[error]
Run Code Online (Sandbox Code Playgroud)
这适用于以下构建配置:
import sbt._
import Keys._
object TestBuild extends Build {
override lazy val settings = super.settings ++ Seq(
name := "blah", scalaVersion := "2.10.2"
)
lazy val fcp = TaskKey[String]("fcp", "create formatted classpath")
lazy val fcpTask = fcp <<= fullClasspath map { tasks =>
val cp = tasks.map(_.data.getName + ":")
s"[Classpath]$cp[/Classpath]"
}
lazy val project = Project(
"project", file("."), settings = settings ++ Seq(fcpTask)
)
}
Run Code Online (Sandbox Code Playgroud) 我有一个logback配置,我有一个记录器,不应该继承已添加到根记录器的syslog appender.我在文档中的任何地方都找不到如何做到这一点.
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
<appender-ref ref="SYSLOG" />
</root>
<logger name="jsonlogger" level="INFO">
<appender-ref ref="SYSLOGJSON" />
</logger>
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我不希望jsonlogger从root继承syslog appender-ref.
我希望能够一次编译我的项目并通过 CI 服务器上的多个构建步骤传递它。但是 SBT 将文件放在如下所示的暂存区中。
/home/vagrant/.sbt/0.13/staging/
Run Code Online (Sandbox Code Playgroud)
这意味着该项目不是独立的,对于每个 CI 步骤,它都会再次编译它。
我如何告诉 SBT 保持简单和独立,并确保它需要的一切都在项目目录中?
我有一个play 2.2应用程序,它在"/ public"文件夹中包含一个名为"books.json"的文件.在我的本地机器上,我可以成功读取此文件.但是,当我部署到Heroku时,我无法读取此文件.我收到以下错误消息:
2013-09-30T08:12:11.027238+00:00 app[web.1]: [error] application -
2013-09-30T08:12:11.027238+00:00 app[web.1]:
2013-09-30T08:12:11.027238+00:00 app[web.1]: ! @6fmoh6ol7 - Internal server error, for (GET) [/bookReviews] ->
2013-09-30T08:12:11.027238+00:00 app[web.1]:
2013-09-30T08:12:11.027238+00:00 app[web.1]: play.api.Application$$anon$1: Execution exception[[NoSuchFileException: /app/target/universal/stage/public/books.json]]
2013-09-30T08:12:11.027238+00:00 app[web.1]: at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$12$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:165) ~[com.typesafe.play.play_2.10-2.2.0.jar:2.2.0]
2013-09-30T08:12:11.027238+00:00 app[web.1]: at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$12$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:162) ~[com.typesafe.play.play_2.10-2.2.0.jar:2.2.0]
2013-09-30T08:12:11.027405+00:00 app[web.1]: at scala.util.Failure$$anonfun$recover$1.apply(Try.scala:185) ~[org.scala-lang.scala-library-2.10.2.jar:na]
2013-09-30T08:12:11.027405+00:00 app[web.1]: at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) ~[org.scala-lang.scala-library-2.10.2.jar:na]
2013-09-30T08:12:11.027405+00:00 app[web.1]: at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) ~[na:1.7.0_25]
2013-09-30T08:12:11.027405+00:00 app[web.1]: at sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55) ~[na:1.7.0_25]
2013-09-30T08:12:11.027405+00:00 app[web.1]: at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) ~[na:1.7.0_25]
2013-09-30T08:12:11.027238+00:00 app[web.1]: at play.api.DefaultApplication.handleError(Application.scala:399) ~[com.typesafe.play.play_2.10-2.2.0.jar:2.2.0]
2013-09-30T08:12:11.027238+00:00 app[web.1]: at play.api.Application$class.handleError(Application.scala:293) ~[com.typesafe.play.play_2.10-2.2.0.jar:2.2.0]
2013-09-30T08:12:11.027405+00:00 app[web.1]: at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86) ~[na:1.7.0_25] …Run Code Online (Sandbox Code Playgroud) 如果我有一个像下面这样的大xml文件.在Java或Scala中解析它的最快方法是什么.流式传输单个元素很重要,但并非绝对必要
我感兴趣的是从每个结果对象获取属性值.
<Response>
<Result att1="1", att2="2", att3="3", att4="4", att5="5"/>
<Result att1="1", att2="2", att3="3", att4="4", att5="5"/>
<Result att1="1", att2="2", att3="3", att4="4", att5="5"/>
<Result att1="1", att2="2", att3="3", att4="4", att5="5"/>
</Response>
Run Code Online (Sandbox Code Playgroud) 我只是试用Thoughtworks,但它不起作用。它无法清理工作目录,也无法说明原因。
Clean working directory is set to true. Unable to clean working directory for agent: /var/lib/go-agent/pipelines
Run Code Online (Sandbox Code Playgroud) scala ×6
sbt ×4
docker ×3
.net ×1
apache-kafka ×1
asp.net ×1
c# ×1
file-copying ×1
filesystems ×1
heroku ×1
java ×1
linux ×1
logback ×1
performance ×1
redis ×1
scalatest ×1
xml-parsing ×1