小编Pat*_* B.的帖子

如何获取分配了标签的所有Jenkins节点的列表,包括主节点?

我正在创建一个Jenkins管道作业,我需要在标有某个标签的所有节点上运行作业.

因此,我正在尝试获取分配了特定标签的节点名称列表.(使用节点我可以获得标签getAssignedLabels())

该nodes-list中jenkins.model.Jenkins.instance.nodes似乎不包含主节点,我需要在我的搜索中包含.

我目前的解决方案是迭代jenkins.model.Jenkins.instance.computers并使用getNode()-method来获取节点.这是有效的,但在詹金斯的javadoc我正在阅读这个列表可能不是最新的.

从长远来看,我将添加(动态)云节点,我担心我将无法使用computers.

什么是正确获取所有当前节点的列表?

这就是我现在正在做的事情:

@NonCPS
def nodeNames(label) {
    def nodes = []
    jenkins.model.Jenkins.instance.computers.each { c ->
        if (c.node.labelString.contains(label)) {
            nodes.add(c.node.selfLabel.name)
        }
    }   
    return nodes
}
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-groovy jenkins-pipeline

11
推荐指数
4
解决办法
9503
查看次数

为什么编译器选项会影响模板实现的选择?

根据我是使用-O3进行编译还是未经优化,编译器不会选择相同的function-template-instanciation。使用gcc(Debian 8.3.0-6)8.3.0。

由于疏忽,我在函数模板声明中有一个默认实现:

#pragma once

#include <iostream>

template <int>
void func() { std::cerr << "default impl\n"; } // normally no impl here
Run Code Online (Sandbox Code Playgroud)

及其专业:

#include "func.h"

template <>
void func<1>()
{
    std::cerr << "special 1\n";
}

template <>
void func<2>()
{
    std::cerr << "special 2\n";
}
Run Code Online (Sandbox Code Playgroud)

和主要功能。

#include "func.h"

int main(void)
{
    func<1>();
    func<2>();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译并运行可以g++ -Wall func.cpp main.cpp -o main && ./main得到:

special 1
special 2
Run Code Online (Sandbox Code Playgroud)

使用优化可以g++ -O3 -Wall func.cpp main.cpp -o main && ./main …

c++ templates g++

10
推荐指数
1
解决办法
121
查看次数

以下划线(_)为前缀的类成员

在我们的项目中,我们决定使用下划线为成员变量和一些私有/受保护方法添加前缀(因此使用" _").

在讨论期间,有人声称这是不鼓励的,因为某些平台上的某些编译器/链接器存在某些不兼容性.因为我们希望尽可能便携,所以我想确定.

我还认为在C中用下划线加上前缀全局变量可能是个问题.

这同样适用于C++ - 链接,如果适用,在哪些情况下(平台/编译器/链接器)?

c++ linker naming-conventions

9
推荐指数
2
解决办法
6298
查看次数

C++ init-list:使用非初始化成员初始化其他成员不会发出警告

既没有g ++(4.4和4.6)也没有clang ++(3.2),也没有覆盖,-Wall和-Wextra(+其他一些)或-Weverything分别给出了以下代码片段的警告:

class B {
    char *t2;
    char *t;

public:
    B() : t2(t), t(new char[100]) {}
};
Run Code Online (Sandbox Code Playgroud)

我至少会期待一个关于未初始化(成员)变量使用的小警告.

有什么我想念的吗?这是一个想要的"无警告" - 场景.我(现在已经)我的软件中至少有一个很难找到的错误.

编辑:从这个新问题可以看出,我意识到在某些情况下,封面警告这个问题.

c++ gcc clang member-variables coverity

9
推荐指数
2
解决办法
304
查看次数

宏在linux内核中有一个不寻常的行?

我正在阅读这篇文章http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/,第一段代码就是这个,显然是从linux内核中获取的:

#define min(x, y) ({                \
    typeof(x) _min1 = (x);          \
    typeof(y) _min2 = (y);          \
    (void) (&_min1 == &_min2);      \
    _min1 < _min2 ? _min1 : _min2; })
Run Code Online (Sandbox Code Playgroud)

现在为什么他们需要这(void) (&_min1 == &_min2);条线?

c macros

9
推荐指数
0
解决办法
400
查看次数

如何在sphinx项目中正确包含其他ReST文件?

我的手写文档/用户指南(用sphinx用ReStructuredText编写)变得非常大,所以我开始在子目录中组织我的.rst文件.

在index.rst我包括subindex.rst每个子目录的一个子目录,其本身包括其他.rst子目录的其他子目录.

index.rst:

.. include:: subdir1/subindex.rst
.. include:: subdir2/subindex.rst
Run Code Online (Sandbox Code Playgroud)

subdir1/subindex.rst:

.. include:: file1.rst
.. include:: file2.rst
Run Code Online (Sandbox Code Playgroud)

原则上这很有效,除了sphinx以递归方式查找.rst它试图解析的-files.不改变当前工作的目录.因此,当看到include:: file1.rst内部时它失败了subdir1.

我正在解决这个问题,设置exclude_pattern忽略我的子目录.这似乎不对.

包含子.rst文件的-file 的正确方法是什么?

restructuredtext python-sphinx

9
推荐指数
1
解决办法
8078
查看次数

C:使用opendir和open打开的文件过多

我在循环中使用以下代码将大约6000个文本文件读入内存:

void readDocs(const char *dir, char **array){
DIR *dp = opendir(dir);;
struct dirent *ep;
struct stat st;
static uint count = 0;
if (dp != NULL){
  while (ep = readdir(dp)){    // crawl through directory
    char name[strlen(dir) + strlen(ep->d_name) + 2];
    sprintf(name, "%s/%s", dir, ep->d_name);

    if(ep->d_type == DT_REG){  // regular file
      stat(name, &st);
      array[count] = (char*) malloc(st.st_size);
      int f;
      if((f = open(name, O_RDONLY)) < 0) perror("open:  ");
      read(f, array[count], st.st_size));
      if(close(f) < 0) perror("close: ");
      ++count;
    }    

    else if(ep->d_type == DT_DIR …
Run Code Online (Sandbox Code Playgroud)

c file-io

8
推荐指数
1
解决办法
5047
查看次数

CTest - 使用标签进行不同的测试CTestTestfile.cmake

我找不到如何指定标签.应该是这样的

ADD_TEST( FirstTest RunSomeProgram "withArguments" )
SET_TESTS_PROPERTIES( FirstTest PROPERTIES LABEL "TESTLABEL" )
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何设置其中一个标签,我可以使用

ctest -S someScript -L TESTLABEL
Run Code Online (Sandbox Code Playgroud)

cmake ctest

8
推荐指数
1
解决办法
3636
查看次数

如何在Qt5的OpenGL中启用多重采样(抗锯齿)?

在创建窗口时如何启用多重采样?我应该如何初始化OpenGL以匹配?

opengl multisampling qt5

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

ZeroMQ REQ/REP如何处理多个客户端?

我开始使用ZeroMQ for IPC并制作了一个简单的echo-client/server,我对一件事情感到惊讶.这是C++代码(使用zmq.hpp和zmq_addon.hpp).

服务器:

zmq::context_t context(1);
zmq::socket_t socket(context, ZMQ_REP);
socket.bind("ipc:///tmp/machine-1");
while (1) {
    zmq::multipart_t m;
    m.recv(socket);
    int i = m.poptyp<int>();
    i++;
    m.addtyp<int>(i);
    m.send(socket);
}
Run Code Online (Sandbox Code Playgroud)

客户:

zmq::context_t context(1);
zmq::socket_t socket(context, ZMQ_REQ);

socket.connect("ipc:///tmp/machine-1");

int i = 0;
while (1) {
    int save = i;
    zmq::multipart_t m;
    m.addtyp<int>(i);
    m.send(socket);
    m.recv(socket);

    i = m.poptyp<int>();

    if (i != (save + 1))
        break;

    if ((i % 100000) == 0)
        std::cerr << "i : " << i<< "\n";
}
Run Code Online (Sandbox Code Playgroud)

我按预期工作.客户端发送一个int,服务器加一个并发回.

现在我不明白的魔力:我意识到,我可以并行运行几次客户端,并且它会继续正常工作,为每个客户端正确. …

c++ concurrency zeromq

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