我在 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) 我在 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) 我正在评估多分支管道。我使用 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)
太好了,似乎存储库已被扫描,但它没有启动新的构建,我猜是因为它没有检测到修改。
知道该怎么做或者是否真的可能?
我正在尝试使用 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) 我的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") 只是被跳过了...我错过了什么吗?
我正在创建一个包含标准食谱和我自己的图像.我想列出我在所有包含的软件包中使用的许可证,然后检查我是否可以将它们用于商业应用程序.
我有惊喜包装组已经有一个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的方法.这是干净的方式.
我的项目中有多个CmakeLists.txt,我想启用iwyu。
新增中
set_property(
TARGETS MY-TARGET
PROPERTY CXX_INCLUDE_WHAT_YOU_USE ${iwyu_path}
)
Run Code Online (Sandbox Code Playgroud)
将使它成为一个目标。我想为每个目标启用它,以避免在另一个文件中产生冗余。我在已经存在的CMakeLists.txt中添加了该文件。
TL; DR:是否有一种方法可以在每次生成映像时强制重新编译程序包?
我有一个bbappend,do_deploy_append后面附加了一个文件,如果我修改此步骤,则在使用它生成图像时不会重新编译该配方。这可能会导致很难找到错误。Bitbake假定它没有改变。我只有2个这样的软件包,非常小。
是否有一个参数可以强制不手动进行清理和重新编译那些软件包?
我正在使用Yocto morty
我有一个带有时间字段的表,我试图在 2 个时间戳之间进行选择,格式如下:
“2020-10-10 09:00:00.000000000”
我尝试过这里列出的一些功能,但没有成功。
编辑:数据就在那里,如图所示。但该示例显示使用 7 天前而不是传递时间戳。