我正在尝试创建一个声明性的Jenkins管道脚本,但是遇到了简单变量声明的问题.
这是我的脚本:
pipeline {
agent none
stages {
stage("first") {
def foo = "foo" // fails with "WorkflowScript: 5: Expected a step @ line 5, column 13."
sh "echo ${foo}"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 5: Expected a step @ line 5, column 13.
def foo = "foo"
^
Run Code Online (Sandbox Code Playgroud)
我在Jenkins 2.7.4和Pipeline 2.4上.
我有一个非常简单的D3示例,首先将数据读入关联数组,然后将其显示在条形图中.
我似乎无法使用此方法显示任何内容.相反,我必须在两者之间插入一个任务:将数据读入关联数组,将数据复制到一个简单数组中,然后使用简单数组显示条形图.
chart.selectAll("div")
.data(genreAssociative)
.enter().append("div")
.style("width", function(d) { return d * 10 + "px"; })
.text(function(d) { return d; });
Run Code Online (Sandbox Code Playgroud)
以上不起作用.
genreSimple = [];
for (var genre in genreAssociative) genreSimple.push(genreAssociative[genre]);
chart.selectAll("div")
.data(genreSimple)
.enter().append("div")
.style("width", function(d) { return d * 10 + "px"; })
.text(function(d) { return d; });
Run Code Online (Sandbox Code Playgroud)
以上呢; 使用简单的数组作为中介.是否有一种特殊的方法来迭代关联数组而不是标准数组?
以下代码适用于 Java 11:
new Gson().toJson(new Exception())
Run Code Online (Sandbox Code Playgroud)
在 JDK 17 上,我收到以下错误:
Unable to make field private java.lang.String java.lang.Throwable.detailMessage accessible: module java.base does not "opens java.lang" to unnamed module @147ed70f
Run Code Online (Sandbox Code Playgroud)
通过阅读此页,我认为我可以解决它--add-opens java.base/java.lang=ALL-UNNAMED。然而还有更好的方法吗?也许使用自定义的反/序列化器?
我有一个非常简单的 docker-compose.yml:
version: '2.4'
services:
containername:
image: ${DOCKER_IMAGE}
volumes:
- ./config:/root/config
Run Code Online (Sandbox Code Playgroud)
我正在使用通过 ssh 访问的远程登台服务器:
docker context create staging --docker "host=ssh://ubuntu@staging.example.com"
docker context use staging
Run Code Online (Sandbox Code Playgroud)
但是,在我执行docker-compose up以下操作后,我的音量出现了意外结果:
docker-compose --context staging up -d
docker inspect containername
...
"Mounts": [
{
"Type": "bind",
"Source": "/Users/crummy/code/.../config",
"Destination": "/root/config",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
],
...
Run Code Online (Sandbox Code Playgroud)
似乎扩展./config到完整路径发生在 docker-compose 运行的机器上。不是运行 Docker 的机器。
我可以通过硬编码的整个路径解决这个问题:/home/ubuntu/config:/root/config。但这使我的 docker-compose 文件变得不那么灵活。有没有办法让点扩展发生在远程机器上?
我正在构建一个 Jenkins 作业,它将连续运行我所有的暂存测试,但不是一次全部运行(它们依赖于共享硬件)。因此,我正在创建并行作业,并使用信号量确保一次仅运行有限数量的作业。这是重现该问题的管道的简化版本:
import java.util.concurrent.Semaphore
def run(job) {
return {
this.limiter.acquire();
try {
println "running ${job}"
build job
println "finished ${job}"
} finally {
this.limiter.release();
}
}
}
def getJobs() {
def allJobs = Jenkins.getInstance().getJobNames()
def stagingJobs = []
for(String job : allJobs) {
if (job.startsWith("staging/temp")) {
stagingJobs.add(job)
}
}
println "${stagingJobs.size()} jobs were found."
return stagingJobs
}
this.limiter = new Semaphore(2)
def jobs = [:]
for (job in getJobs()) {
jobs[job] = run(job)
}
parallel jobs
Run Code Online (Sandbox Code Playgroud)
当我在没有信号量的情况下运行时,一切正常。但是使用上面的代码,除了:
[Pipeline] echo …Run Code Online (Sandbox Code Playgroud) 我正在测试一个注入了bean的Micronaut类.在我的测试中,我提供了一个@MockBean类来覆盖它.然而,似乎Micronaut仍然注入了真正的依赖.
@MicronautTest
public class ClassUnderTestTest {
@Inject ClassUnderTest classUnderTest;
@Test
public void test() {
}
@MockBean
Dependency dependency() {
return mock(Dependency.class);
}
}
Run Code Online (Sandbox Code Playgroud)
我上传了一个最小的repro到Github:https://github.com/crummy/micronaut-test-dependencies.真正的依赖项会引发异常,测试也会发生异常.我不会因为我的原因而预料到会发生这种情况@MockBean.
如果我更改注释,@MockBean(Dependency.class)那么我会收到此错误:Message: No bean of type [di.failure.example.Dependency] exists.这似乎让我更加困惑 - 现在它无法解决我的真实或我的模拟依赖?
我正在尝试通过将一些现有的win32 UI代码放入类中来清理它.以前我有一个像这样的AppDlgProc函数:
BOOL CALLBACK AppDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { ... }
Run Code Online (Sandbox Code Playgroud)
我这样使用的是:
DialogBoxParam(hInstance, (LPCTSTR)IDD_SETTINGS, 0, AppDlgProc, 0);
Run Code Online (Sandbox Code Playgroud)
现在我将所有这些放在一个SettingsWindow对象中,然后调用settingsWindow-> show()来启动它:
void SettingsWindow::show(HINSTANCE hInstance) {
DialogBoxParam(hInstance, (LPCTSTR)IDD_SETTINGS, 0, &SettingsWindow::AppDlgProc, 0);
}
Run Code Online (Sandbox Code Playgroud)
我很确定我在这里错误地给出了回调方法.Visual Studio告诉我"Intellisense:类型的参数......与DLGPROC类型的参数不兼容".谷歌搜索似乎告诉我似乎告诉我,我需要另一个论点 - 没有别的办法吗?
作为参考,我的AppDlgProc函数现在看起来像这样:
BOOL CALLBACK SettingsWindow::AppDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { ... }
Run Code Online (Sandbox Code Playgroud) 我有一个程序,每秒拍摄一次屏幕截图并计算屏幕的平均颜色.但是,经过约45分钟的跑步,我的支票
if ((OffscrBmp = CreateCompatibleBitmap(bitmapDC, nScreenWith, nScreenHeight)) == NULL)
开始回来了true.一个GetLastError()回复的电话6,虽然我似乎无法找到任何关于这意味着什么的文件.
为什么数千次调用此函数的工作正常,然后突然每次调用失败?
这是我的整个功能:
COLORREF ScreenColourCapture::getScreenColour() {
// Most of this is adapted from http://www.cplusplus.com/forum/beginner/25138/
LPBITMAPINFO lpbi = NULL;
HBITMAP OffscrBmp = NULL;
HDC OffscrDC = NULL;
int nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
int nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
HDC bitmapDC = CreateCompatibleDC(0);
HBITMAP hBmp = CreateCompatibleBitmap(GetDC(0), nScreenWidth, nScreenHeight);
SelectObject(bitmapDC, hBmp);
BitBlt(bitmapDC, 0, 0, nScreenWidth, nScreenHeight, GetDC(0), 0, 0, SRCCOPY);
if ((OffscrBmp = CreateCompatibleBitmap(bitmapDC, nScreenWidth, nScreenHeight)) == NULL) {
int …Run Code Online (Sandbox Code Playgroud) 我有一个循环运行的Python脚本,定期调整我的照明系统.当我关闭计算机时,我希望我的脚本检测到它,并完全关闭灯.
如何检测我的计算机开始在Python中关闭?
或者,假设Windows向Python发送"关闭时间"的通知,我如何拦截它以杀死我的灯并退出循环?
我有一个简单的tornadoFX程序,该程序会在屏幕上的随机位置生成一些圆圈。但是,没有一个圆圈被绘制。我添加了一些调试代码以在绘制圆时打印一条线,并且只打印一次。
我希望圆圈以100ms的间隔出现,以及当我单击“添加演员”按钮时出现。
private const val WINDOW_HEIGHT = 600
private const val WINDOW_WIDTH = 1024
fun main(args: Array<String>) {
Application.launch(MainApp::class.java, *args)
}
class MainApp : App(WorldView::class, Stylesheet::class)
data class Actor(val x: Double, val y: Double)
class WorldView: View("Actor Simulator") {
override val root = VBox()
private val actors = ArrayList<Actor>(0)
init {
tornadofx.runAsync {
(0..100).forEach {
val x = ThreadLocalRandom.current().nextDouble(0.0, WINDOW_WIDTH.toDouble())
val y = ThreadLocalRandom.current().nextDouble(0.0, WINDOW_HEIGHT.toDouble())
actors.add(Actor(x, y))
Thread.sleep(100)
}
}
}
init {
with(root) {
stackpane {
group {
bindChildren(actors.observable()) …Run Code Online (Sandbox Code Playgroud)