如果我使用aws-cli(即使用aws s3 cp)将数据上传到S3 ,aws-cli是否会做任何工作来确认S3中的结果文件是否与原始文件匹配,或者我是否需要自己管理?
根据这个答案和putObject()的Java API文档,看起来可以在上传后验证MD5校验和.但是,我无法找到关于aws-cli是否真的这样做的明确答案.
这对我来说很重要,因为我打算从备份过程中上传GPG加密的文件,我想确信存储在S3中的内容实际上与原始文件匹配.
问题陈述
我正在寻找有关设置 SSH 密钥以连接到我们的 Jenkins 主站和从站上的 Git 的正确方法的建议。这里还有其他关于 Git、Jenkins 和 SSH 的类似问题(最接近的是this),但似乎没有人通过有关正确方法的具体建议来回答这个问题。
背景与测试
我正在使用内部部署的 GitLab 研究 Jenkins 的原型实现。我们在 Jenkins 方面有几年的经验,但将它与 Git 集成对我们来说是新的。这也是我们第一次配置任何从节点。在这一点上,我们只是试图让简单的轮询工作,没有花哨的推送通知。
主 Jenkins 实例在 Linux ( Red Hat Linux 6) 上运行。目前有 3 个从属服务器:一台其他 Red Hat Linux 服务器和两台运行 Windows Server 2012 R2 的服务器。Windows 服务器上的 Jenkins slave 作为 Windows 服务运行。主节点和所有从节点都运行最新的 Git v2.10.0(64 位)。
我们打算使用 SSH 访问 GitLab。我创建了一个带有密码的 SSH 密钥,并将其保存在主服务器的磁盘上。然后,我在 GitLab 中将公钥配置为我的测试项目的部署密钥。最后,我在 Jenkins 中添加了一个新凭证。
在 Jenkins 的第一个测试项目中,我配置了 GitLab 存储库 URL 并选择了上面创建的 Jenkins 凭据。然后我在master上构建了这个项目。Jenkins 与 GitLab 建立了 SSH 连接,没有问题并且构建成功。然后我强制构建到 Linux 从设备,结果相同。 …
我正在尝试从JSON输出中解析环境变量docker inspect.令人讨厌的是,这些环境变量不会作为有用的键值对返回.它们只是一个x = y字符串的数组.这是输出的相关片段:
[
{
"Config": {
"Env": [
"JENKINS_HOST=1.2.3.4",
"JENKINS_INSTANCE=tea",
"JENKINS_NAME=Enterprise Architecture Tools",
"JENKINS_VERSION=2.46.2",
"JENKINS_PROTOCOL=http"
]
}
}
]
Run Code Online (Sandbox Code Playgroud)
我想将该数组转换为这样的:
{
"Config": {
"Env": {
"JENKINS_HOST": "1.2.3.4",
"JENKINS_INSTANCE": "tea",
"JENKINS_NAME": "Enterprise Architecture Tools",
"JENKINS_VERSION": "2.46.2",
"JENKINS_PROTOCOL": "http"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样,我可以使用命令jq '.[] | .Config.Env.JENKINS_HOST'来获取我关心的值.我无法弄清楚如何实现这一目标.
选择数据相对容易,甚至将键和值拆分为单独的元素.例如,如果我使用jq '.[] | .Config.Env | .[] | split("=")',我会得到这样的数据:
[
"JENKINS_HOST",
"1.2.3.4"
]
[
"JENKINS_INSTANCE",
"tea"
]
[
"JENKINS_NAME",
"Enterprise Architecture Tools"
]
[
"JENKINS_VERSION",
"2.46.2"
]
[
"JENKINS_PROTOCOL", …Run Code Online (Sandbox Code Playgroud)