小编Nit*_*ram的帖子

Jenkins:触发上游变更的多分支管道

我目前正在测试Jenkins 2.0的管道方法,看看它是否适用于我正在使用的构建环境.

首先是关于环境本身.它目前由多个SCM存储库组成.每个存储库包含多个分支,用于开发的不同阶段,每个分支都使用多个配置构建.并非所有配置都适用于每个存储库.

目前,每个存储库/分支都设置为不同配置的Matrix项目.每个项目都将它的构建结果公开为工件,并且这些工件在下游项目中使用.

不同的存储库相互依赖,因此在上游作业上的成功构建会触发一些特定的下游作业.目前一切正常,但设置新分支或调整构建过程所需的工作量很多,因为需要手动更改许多不同的项目.

现在我想尝试新的管道.我的想法是创建多分支管道项目,并Jenkinsfile在包含构建指令的存储库中放置一个.

主要问题是使构建相互触发,因为基本上是特定上游分支的构建需要触发下游分支.上游项目不知道下游分支需要触发的信息.每个下游项目从一些上游分支获取工件,理想的解决方案是,如果作为工件源的上游构建完成它的构建,将触发下游构建.

问题是只有下游项目真正知道他们需要什么工件.在大多数情况下,分支名称不太可能匹配,这使得从上游项目触发构建变得非常困难.

目前这是使用ReverseBuildTrigger.但是,一旦它接近管道,这件事就会停止工作.

我真的不知道如何让这个工作.有没有办法得到类似ReverseBuildTrigger工作内部管道脚本?

如果单个分支上游发生更改,也会触发所有分支的整个下游构建,这不是一个选项.这会产生太多相等的构建.

jenkins jenkins-workflow jenkinsfile jenkins-2

25
推荐指数
2
解决办法
2万
查看次数

使用resourcecount获取属性中的行数

我试图获得一个ANT-Buildscript来计算存储在ANT属性中的行.从示例中我得到了计算文件中行的方法,如下所示:

<resourcecount count="0" when="eq">
    <tokens>
        <concat>
            <filterchain>
                <tokenfilter>
                    <linetokenizer/>
                </tokenfilter>
            </filterchain>
            <fileset file="${file}" />
        </concat>
    </tokens>
</resourcecount>
Run Code Online (Sandbox Code Playgroud)

现在我想引用一个ANT属性而不是文件.有没有办法做到这一点?我知道使用<echo file="${temp.file}">${the.property.with.many.lines}</echo>和使用上面的代码将属性的内容写入文件的解决方案.但我想知道是否有一个没有临时文件的解决方案.

java ant

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

JavaFX从Webstart中的CSS加载图像

我目前在JavaFX中加载CSS和图像时遇到了一个主要问题.

目标是使JavaFX加载CSS文件中定义的图像.我可以在IDE和独立执行中轻松地使用它.但是,一旦我将应用程序作为applet运行并在浏览器上下文中运行,一切都会失败.

CSS文件仍然正确加载,但图像文件仍为空白.遗憾的是,我无法找到一种方法来使JavaFX记录为什么图像加载失败.所有图像都位于CSS文件位置的子目录中,例如:

.button-gray {
    -fx-border-image-source: url("button/buttongray.png");
}
Run Code Online (Sandbox Code Playgroud)

CSS文件与处理加载它的类位于同一个包中,并且加载如下:

final URL css = Util.class.getResource("sheet.css");
if (css != null) {
    parent.getStylesheets().add(css.toExternalForm());
}
Run Code Online (Sandbox Code Playgroud)

我试着已经把资源在根目录下,并加载它Util.class.getClassLoader.getResource(...)Thread.currentThread().getContextClassLoader.getResource(...).如果应用程序独立执行,两者都可以正常工作.如果从webstart applet上下文启动应用程序,则两者都不起作用.

但正如我所说.在所有情况下都没有迹象表明CSS没有加载.样式表中定义的样式将正确应用,但图像除外.

我不知道这是什么原因.我使用shemnon的gradle javafx插件打包并发布应用程序.

建筑环境:

  • Oracle Java 1.7b45 x64
  • Gradle 1.9

任何人都知道如何解决这个问题或知道如何调试它.遗憾的是,JavaFX(甚至是CSS Logger)和applet跟踪控制台的日志记录功能都没有说明问题所在.

新的消息!

JNLP文件位于: JNLP-File

但是,这个文件不是问题.问题似乎是生成二进制css文件,该文件是JavaFX for webstart部署过程的一部分.在这个二进制文件中,由于某些未知原因,通过构建环境引用了CSS文件.这会导致CSS加载程序从我的构建服务器上的位置加载图像文件.在我的本地计算机上无效的东西.另一方面,我在本地计算机上进行的构建工作因为文件仍在其寻找的位置.

所以现在问题似乎仅限于存储完全错误的文件引用的二进制css生成.

css java applet javafx java-web-start

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

作为 powershell 脚本执行任何文件

我遇到了一个挑战,但未能按照我想要的方式解决。

\n\n

我得到一个包含 powershell 脚本的文件,但该文件没有分配给 powershell 的扩展名。问题是:如何在文件扩展名错误(或没有)的脚本文件中执行 powershell?

\n\n

Invoke-Expression似乎不起作用,因为它总是执行分配给文件类型的默认操作。如果我给该 cmdlet 一个*.txt文件,编辑器会弹出打开。

\n\n

我知道我可以通过重命名脚本文件或首先正确命名它来解决这个问题。这就是我最终所做的。

\n\n

我仍然想知道是否可以将文件作为具有错误文件扩展名的脚本执行,而不修改、重命名或复制该文件。如果它不起作用\xe2\x80\xa6 这是为什么?

\n

powershell

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

我有什么选择反对sleep()同步父进程和子进程之间的传输?

我正面临着一个同步问题,我正在尝试解决的问题包括将字符串从父节点发送到子节点,将其反转并将其发送回子节点(使用共享内存).

然而,为了确保孩子在等待父母我使用sleep(3)3秒到父进程进入串,然而这限制我的程序的效率,我不想强迫用户等待3秒.

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <sys/wait.h>  /* Needed for the wait function */
#include <unistd.h>    /* needed for the fork function */
#include <string.h>    /* needed for the strcat function */
#define SHMSIZE 27

int main() {
    int shmid;
    char *shm;

    if(fork() == 0) {
        sleep(3);
        shmid = shmget(29009, SHMSIZE, 0);
        shm = shmat(shmid, 0, 0);
        printf ("Child : Reading %s \n",shm) ;
        int len=strlen(shm);
        char rev[100],temp;

        int i = …
Run Code Online (Sandbox Code Playgroud)

c shared-memory

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