小编Dav*_*san的帖子

为什么docker(dind)容器中的docker使用主机路径安装卷?

我在 docker 中设置了 docker 并尝试挂载文件夹。

假设我有那些我希望与他的父母共享的文件夹。在主机上,我在 /tmp/dind 中创建了一个名为foo. 主机启动容器1,启动容器2。这就是我想要的结果。

Host      | Container 1 | Container 2

/tmp/dind |  /tmp/dind2 | /tmp/dind3
      <------->     <------->
Run Code Online (Sandbox Code Playgroud)

相反,我得到

Host      | Container 1 | Container 2

/tmp/dind |  /tmp/dind2 | /tmp/dind3
      <------->
      <----------------------->
Run Code Online (Sandbox Code Playgroud)

代码在这里:

docker run --rm -it \
  -v /tmp/dind:/tmp/dind2 \
  -v /var/run/docker.sock:/var/run/docker.sock docker sh -c \
    "docker run --rm -it \
      -v /tmp/dind2:/tmp/dind3 \
      -v /var/run/docker.sock:/var/run/docker.sock \
      docker ls /tmp/dind3"
Run Code Online (Sandbox Code Playgroud)

这不输出任何内容,而下一个命令给出 foo 作为结果。我改变了安装的卷:

docker run --rm -it \
  -v /tmp/dind:/tmp/dind2 \ …
Run Code Online (Sandbox Code Playgroud)

docker dind

7
推荐指数
1
解决办法
5038
查看次数

在 jenkins 的 github pull request 中添加评论

我在 Jenkins 中使用 Git 拉取请求构建器插件将拉取请求链接到 Jenkins。作业由钩子触发,一切运行顺利。

尽管如此,在构建结束时,我想在出现失败/成功或错误时添加评论。

我尝试使用管道并使用

pullRequest.comment('This is a comment sent from the Pipeline')
Run Code Online (Sandbox Code Playgroud)

但它无法识别(我为 github 安装了管道):

groovy.lang.MissingPropertyException: No such property: pullRequest for class: groovy.lang.Binding
  at groovy.lang.Binding.getVariable(Binding.java:63)
  at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:242)
  at org.kohsuke.groovy.sandbox.impl.Checker$6.call(Checker.java:288)
  at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:292)
  at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:268)
  at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:268)
  at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
  at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
  at WorkflowScript.run(WorkflowScript:5)
  at ___cps.transform___(Native Method)
  at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:74)
  at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
  at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:66)
  at sun.reflect.GeneratedMethodAccessor446.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
  at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
  at com.cloudbees.groovy.cps.Next.step(Next.java:83)
  at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174)
  at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163)
  at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122)
  at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)
  at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163)
  at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$101(SandboxContinuable.java:34)
  at …
Run Code Online (Sandbox Code Playgroud)

github jenkins

5
推荐指数
1
解决办法
3380
查看次数

如何使用注释重新触发 Jenkins 多分支管道中的 GitHub PR 构建?

我正在评估多分支管道。我使用 jenkinsfile 创建了一个存储库。检测到分支,并在 PR 上触发构建。

现在我想通过 GitHub PR 上的评论按命令重建,我安装了多分支扫描 Webhook 触发器插件,现在将正则表达式设置为.*.

评论时,在詹金斯日志中,我得到两行:

2019-11-25 16:30:37.128+0000 [id=1503]  INFO    c.i.j.p.m.ComputedFolderWebHookRequestReceiver#doInvoke: Triggering FMS
2019-11-25 16:30:39.712+0000 [id=1587]  INFO    j.b.MultiBranchProject$BranchIndexing#run: FMS #20191125.163037 branch indexing action completed: SUCCESS in 2.5 sec
Run Code Online (Sandbox Code Playgroud)

太好了,似乎存储库已被扫描,但它没有启动新的构建,我猜是因为它没有检测到修改。

知道该怎么做或者是否真的可能?

jenkins multibranch-pipeline

5
推荐指数
1
解决办法
3502
查看次数

为什么 traefik acme 生成的证书被标记为“不安全”?

我正在尝试使用 traefik 启动应用程序。我用 swarm 设置了多个容器。我可以在浏览器中访问它们,但网站被标记为不安全。我尝试删除 acme.json 并重新生成 ssl 证书,但它没有改变任何内容。

据我了解,使用 ACME,证书是在启动时生成的。但现在,它的行为就像是一个自签名证书,因为我看到“Fake LE Intermediate X1”

这是我的配置:

logLevel="DEBUG"
debug=true
defaultEntryPoints = ["https","http"]

[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]

[retry]

[api]
address=":8080"

[docker]
endpoint="unix://var/run/docker.sock"
domain = "4yourfinance.com"
watch=true
swarmMode=true
exposedByDefault = false

[acme]
email = "serviceplatform@myfeelix.de"
storage = "/etc/traefik/acme/acme.json"
caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"
onHostRule = true
entryPoint = "https"
  [acme.httpChallenge]
  entryPoint = "http"

  [[acme.domains]]
    main = "4yourfinance.com"
    sans = ["nginx.4yourfinance.com", "api-wl.4yourfinance.com"]
Run Code Online (Sandbox Code Playgroud)

我的码头工人组成

version: "3.3"

services:
  traefik: …
Run Code Online (Sandbox Code Playgroud)

docker-swarm traefik

4
推荐指数
1
解决办法
2124
查看次数

从Jenkinsfile中的函数调用阶段

我的Jenkinsfile中有:

def foo = ["1", "2", "3"]

def parallelStagesFromMap = foo.collectEntries {
    ["Build ${it}" : generateStage(it)]
}

def generateStage(bar) {
    return {
        stage("Build ${bar}") {
            echo "Building for ${bar}"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,我可以并行使用它们,parallel parallelStagesFromMap但是现在我要特别调用一个,例如:

generateStage("a") 只是被跳过了...我错过了什么吗?

groovy jenkins-pipeline

4
推荐指数
1
解决办法
855
查看次数

Yocto上的包组和图像的许可证

我正在创建一个包含标准食谱和我自己的图像.我想列出我在所有包含的软件包中使用的许可证,然后检查我是否可以将它们用于商业应用程序.

我有惊喜包装组已经有一个LICENSE标志.我注意到它:

bitbake -e -n -v core-image-minimal | grep "LICENSE"
Run Code Online (Sandbox Code Playgroud)

它返回LICENSE = MIT,因为它是在bb文件中定义的.

但我没有关于所有包含的信息.这个MIT已经手动放在core-image-minimal.bb中,但我对所有依赖项感兴趣.我的.bb文件有同样的问题.

方法1

解决方案是将每个许可证都设置为INCOMPATIBLE_LICENSE然后

bitbake -k -n -e -v <recipe> | grep "incompatible with license"
Run Code Online (Sandbox Code Playgroud)

然后检查哪一个弹出,将它们添加到LICENSE_FLAGS_WHITELIST中并从INCOMPATIBLE_LICENSE中删除它们并迭代.问题是,每次完成时,它再次解析整个工作区,并且需要很长时间.

是否有一个脚本可以轻松检查?像Yocto这样的蟒蛇总是如此.

方法2 我编辑了meta/classes/license.bbclass并添加了

bb.warn('%s license is %s' %(pn, licenses))
Run Code Online (Sandbox Code Playgroud)

在check_license_format函数的for循环中.现在它打印每个包的许可证,但我想总结一下

这样做的好方法

因此,我无法编译我的整个配方,因为"包管理"功能目前不适用于deb包(在此处阅读).请调整你的图像配方并使用@Roman Khimov的方法.这是干净的方式.

licensing yocto

3
推荐指数
1
解决办法
3802
查看次数

在CMake中为每个目标设置CXX_INCLUDE_WHAT_YOU_USE属性

我的项目中有多个CmakeLists.txt,我想启用iwyu

新增中

set_property(
  TARGETS MY-TARGET
  PROPERTY CXX_INCLUDE_WHAT_YOU_USE ${iwyu_path}
)
Run Code Online (Sandbox Code Playgroud)

将使它成为一个目标。我想为每个目标启用它,以避免在另一个文件中产生冗余。我在已经存在的CMakeLists.txt中添加了该文件。

cmake

3
推荐指数
1
解决办法
983
查看次数

如何强制在Yocto上重新编译软件包

TL; DR:是否有一种方法可以在每次生成映像时强制重新编译程序包?

我有一个bbappend,do_deploy_append后面附加了一个文件,如果我修改此步骤,则在使用它生成图像时不会重新编译该配方。这可能会导致很难找到错误。Bitbake假定它没有改变。我只有2个这样的软件包,非常小。

是否有一个参数可以强制不手动进行清理和重新编译那些软件包?

我正在使用Yocto morty

bitbake yocto

3
推荐指数
1
解决办法
2908
查看次数

如何在AWS Timestream中使用时间戳

我有一个带有时间字段的表,我试图在 2 个时间戳之间进行选择,格式如下:

“2020-10-10 09:00:00.000000000”

我尝试过这里列出的一些功能,但没有成功。

编辑:数据就在那里,如图所示。但该示例显示使用 7 天前而不是传递时间戳。

在此输入图像描述

amazon-timestream

3
推荐指数
1
解决办法
5090
查看次数