我们的组织对Docker和Jenkins来说相对较新.我们正在开发从(Java)源代码更新到运行应用程序的CI管道.
目前,Jenkins正在使用Cloudbees Docker构建和发布插件在成功构建后更新映像.它只是拉取基础(JBoss)图像并使用刚刚构建的App的WAR文件(通过Maven)更新它.
我们使用"通过SSH发送命令"构建步骤将SSH连接到服务器(当前正在运行)容器,使用指定的映像ID停止容器,然后重新拉动并随后运行容器.
但是,我知道必须有更好,更优雅的方式来做到这一点.令人惊讶的是,我无法找到有关如何操作的文档.任何意见,将不胜感激.请告诉我.
考虑以下(简化的)JSON 树结构:
{
"id": "1",
"metaData": {
"name": "nestedName"
},
"name": "rootName"
}
Run Code Online (Sandbox Code Playgroud)
我将此结构放入 com.fasterxml.jackson.databind.JsonNode 对象中。要获取这些列的字符串值,我只需在 Java 代码中包含以下语句:
String id = jsonNode.findPath("id").textValue();
Run Code Online (Sandbox Code Playgroud)
我喜欢它不仅因为它简单,而且我的代码不必知道它正在解析的 JSON 树结构。我意识到,如果我特别想要 [root][name],我就必须有某种确定逻辑。
我的问题是,为了以某种方式区分/指定要获取的“名称”,我需要的最少逻辑量是多少?我已经研究了 JsonNode.findValues(String fieldName) 以获取值列表,但仍然不确定如何确定哪个值来自哪个“名称”以及如何选择“根”值,或者至少,最接近根的那个。
抱歉,如果这是一个重复的问题,但我找不到完全匹配的问题,所以再次询问。
我有一个时间戳,我通过String
以下格式收到:
2016-10-17T12:42:04.000
我正在通过以下行将LocalDateTime
其转换为a 添加一些天(然后返回到a String
):
String _120daysLater = LocalDateTime.parse("2016-10-17T12:42:04.000",
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS")).minusDays(120).toString());
Run Code Online (Sandbox Code Playgroud)
但是,我注意到它返回的响应会减少.000
毫秒.
我不确定确保保留确切模式的最简洁方法.现在我只是添加一毫秒,并且可能有一种方法可以将旧版本SimpleDateFormat
加入其中,但我希望有一种更好的方法.