小编Jam*_*esE的帖子

使用curl和crumb触发参数化构建

我在SO上看过类似的帖子,但并不完全是我想要做的(或者至少没有完整的命令来运行).

我试图使用curl远程触发Jenkins上的参数化构建.我启用了"防止跨站点请求伪造",因此我还需要传递有效的碎屑.

我的脚本如下:

#!/bin/bash

json="{\"parameter\": [{ \"P1\": \"param1\", \"P2\": \"param2\", \"P3\": \"param3\" }]}"
crumb=`curl "http://SERVER/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb)"`

curl -v -H $crumb -X POST http://SERVER/job/JOB_NAME/buildWithParameters -d token=runme --data-urlencode json="$json"
Run Code Online (Sandbox Code Playgroud)

我也尝试修改我传递给以下任何一个的URL:

USERNAME:APITOKEN@SERVER
Run Code Online (Sandbox Code Playgroud)

USERNAME:PASSWORD@SERVER
Run Code Online (Sandbox Code Playgroud)

卷曲的输出是:

* About to connect() to SERVER port 8080 (#0)
*   Trying SERVER... connected
* Connected to SERVER (SERVER) port 8080 (#0)
* Server auth using Basic with user 'USERNAME'
> POST /job/JOB_NAME/buildWithParameters HTTP/1.1
> Authorization: Basic bjAwNjY5MjI6YWxLaW5kaTg=
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.13.1.0 zlib/1.2.3 libidn/1.18 libssh2/1.2.2
> Host: SERVER:8080 …
Run Code Online (Sandbox Code Playgroud)

curl jenkins

26
推荐指数
3
解决办法
3万
查看次数

PM2(Node.js)没有侦听指定的端口

我正在尝试在PM2上启动并运行Node/Express应用程序.我可以使用此命令启动应用程序:npm start

这启动了端口3000上的应用程序罚款.

如果我尝试启动应用程序,pm2 start app.js我会在日志中获得以下内容:

{ online: true, success: true, pid: 10714, pm2_version: '0.8.15' }
2014-06-12T19:52:06.789Z : [[[[ PM2/God daemon launched ]]]]
2014-06-12T19:52:06.800Z : RPC interface [READY] on 6666:localhost
2014-06-12T19:52:06.801Z : BUS system [READY] on  6667:localhost
2014-06-12T19:52:06.978Z : Entering in node wrap logic (cluster_mode) for script     /home/user/test/app.js
2014-06-12T19:52:07.115Z : /home/user/test/app.js - id0 worker online
Run Code Online (Sandbox Code Playgroud)

在我的bin/www文件中,我有以下指定端口:

app.set('port', process.env.PORT || 3000);
Run Code Online (Sandbox Code Playgroud)

我也试过跑步 export PORT=3000

以及bin/www中的以下内容:

app.set('port', 3000);
Run Code Online (Sandbox Code Playgroud)

如果我跑了,netstat -an | grep 3000我什么也得不回来.

javascript node.js pm2

14
推荐指数
1
解决办法
9369
查看次数

MongoDB聚合$除以计算字段

我试图根据计算字段计算MongoDB查询中的百分比 - 不确定这是否可行.我希望能够做的是计算失败百分比:(failed count / total) * 100

以下是一些示例文档:

    {
            "_id" : ObjectId("52dda5afe4b0a491abb5407f"),
            "type" : "build",
            "time" : ISODate("2014-01-20T22:39:43.880Z"),
            "data" : {
                    "buildNumber" : 30,
                    "buildResult" : "SUCCESS"
            }
    },
    {
            "_id" : ObjectId("52dd9fede4b0a491abb5407a"),
            "type" : "build",
            "time" : ISODate("2014-01-20T22:15:07.901Z"),
            "data" : {
                    "buildNumber" : 4,
                    "buildResult" : "FAILURE"
            }
    },
    {
            "_id" : ObjectId("52dda153e4b0a491abb5407b"),
            "type" : "build",
            "time" : ISODate("2014-01-20T22:21:07.790Z"),
            "data" : {
                    "buildNumber" : 118,
                    "buildResult" : "SUCCESS"
            }
    }
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试使用的查询.问题出在FailPercent/$ divide行:

db.col.aggregate([    
    { $match: { "data.buildResult" …
Run Code Online (Sandbox Code Playgroud)

mongodb

11
推荐指数
1
解决办法
9090
查看次数

Groovy XmlSlurper访问根节点中的属性值

我正在尝试使用Groovy和XmlSlurper完成访问作为根节点一部分的属性.我可以使用嵌套节点轻松完成此操作,但似乎无法访问根节点.

这是XML结构(简化):

<coverage lines-covered="2353" lines-valid="2943">
    <sources />
    <packages />
</coverage>
Run Code Online (Sandbox Code Playgroud)

我希望能够获得行覆盖和行有效的属性值.这是我正在尝试的代码:

def cobertura = new XmlSlurper().parse(xml)
def coverage = cobertura.coverage
def lines = cobertura.find { it.@lines-covered }
println lines
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

def cobertura = new XmlSlurper().parse("cobertura-coverage.xml")
def coverage = cobertura.coverage
println coverage.@lines-covered
Run Code Online (Sandbox Code Playgroud)

和:

def cobertura = new XmlSlurper().parse("cobertura-coverage.xml")
println cobertura.@lines-covered
Run Code Online (Sandbox Code Playgroud)

xml groovy xml-parsing

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

MongoDB聚合排序不起作用

我在将聚类应用于聚合分组时遇到问题.我的原始数据如下所示:

    {
            "_id" : ObjectId("52deab2fe4b0a491abb54108"),
            "type" : "build",
            "time" : ISODate("2014-01-21T17:15:27.471Z"),
            "data" : {
                    "buildNumber" : 43,
                    "buildDuration" : 997308,
                    "buildProjectName" : "TestABC",
                    "buildResult" : "SUCCESS"
            }
    }
Run Code Online (Sandbox Code Playgroud)

我想首先通过buildProjectName对日期进行排序.这是我的查询:

db.builds.aggregate([
    { $group: { 
        _id: { 
            month: { $month: "$time" },
            day: { $dayOfYear: "$time" },
            year: { $year: "$time" }, 
            buildProjectName: "$data.buildProjectName", 
        },
        buildDuration: { $avg: "$data.buildDuration" } 
    } },
    { $sort: {buildProjectName: 1, year: 1, month: 1, day: 1} }
])
Run Code Online (Sandbox Code Playgroud)

我已经尝试切换排序顺序(即:buildProjectName,日,月,年),但我总是得到相同的结果,日期不按顺序:

{
        "result" : [
                {
                        "_id" : …
Run Code Online (Sandbox Code Playgroud)

sorting mongodb

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

使用System groovy脚本从Jenkins工作区读取文件

我有一个非常类似的问题:使用Groovy脚本从Jenkins的Workspace读取文件

但是我需要从System Groovy脚本中读取文件,因此使用Text-finder或Groovy PostBuild插件的解决方案将无法正常工作.

如何从系统groovy脚本获取工作空间路径?我尝试过以下方法:

System.getenv('WORKSPACE')
System.getProperty("WORKSPACE")
build.buildVariableResolver.resolve("WORKSPACE")
Run Code Online (Sandbox Code Playgroud)

谢谢!

groovy jenkins

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

如果没有结果,MongoDB聚合返回计数为0

我有以下MongoDB查询按日期和结果分组并给出计数.我希望查询还为特定日期返回0,如果当天不存在数据,则返回结果.

例如,我有以下结果状态:SUCCESS和FAILED.如果在21日没有FAILED的结果我想要一个返回0的计数:

{
    "_id" : {
            "month" : 1,
            "day" : 21,
            "year" : 2014,
            "buildResult" : "FAILURE"
    },
    "count" : 0
}
Run Code Online (Sandbox Code Playgroud)

我已经使用关系数据库和日历表做了类似的事情,但我不确定如何使用MongoDB来解决这个问题.这是可能的,还是应该在运行查询后以编程方式执行某些操作?

以下是数据库中文档(简化)的示例:

    {
            "_id" : ObjectId("52deab2fe4b0a491abb54108"),
            "type" : "build",
            "time" : ISODate("2014-01-21T17:15:27.471Z"),
            "data" : {
                    "buildNumber" : 43,
                    "buildDuration" : 997308,
                    "buildResult" : "SUCCESS"
            }
    }
Run Code Online (Sandbox Code Playgroud)

这是我目前的查询:

db.builds.aggregate([
    { $match: { "data.buildResult" : { $ne : null} }},
    { $group: { 
        _id: { 
            month: { $month: "$time" },
            day: { $dayOfMonth: "$time" },
            year: { $year: "$time" …
Run Code Online (Sandbox Code Playgroud)

mongodb

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

使用不同的参数多次调用ant目标

在Ant中是否可以使用不同的参数多次调用相同的目标?

我的命令如下所示:

ant unittest -Dproject='proj1' unittest -Dproject='proj2'
Run Code Online (Sandbox Code Playgroud)

问题是unittest运行两次,但仅适用于proj2:

unittest:
    [echo] Executing unit test for project proj2

unittest:
    [echo] Executing unit test for project proj2
Run Code Online (Sandbox Code Playgroud)

我知道我可以运行两个单独的ant命令,但这会导致单元测试报告文件出现其他问题.

ant

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

Jenkins groovy classpath问题 - 无法解析类

我在Jenkins中有一个'Execute Groovy script'构建步骤.此步骤包含两个文件 - 名为createWorkspaces.groovy的客户端文件和名为WorkspaceBean.groovy的Bean文件.两者都位于作业工作区中的相同位置.

以前运行Jenkins 1.554这没有问题,但升级到1.594后,我收到以下错误:

/jenkins/workspace/testjob/scripts/groovy/createWorkspaces.groovy: 75: unable to resolve class WorkspaceBean 
 @ line 75, column 21.
       def workspace = new WorkspaceBean()
                       ^

1 error
Run Code Online (Sandbox Code Playgroud)

我已批准新脚本批准功能中的脚本,并且还将文件的位置添加到作业步骤中的类路径参数以及jenkins-core.jar文件的位置.

有什么想法为什么停止工作?

groovy jenkins

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

prolog中不允许使用Groovy XmlSlurper内容

我试图解析XML文件并遇到此错误:

org.xml.sax.SAXParseException: Content is not allowed in prolog
Run Code Online (Sandbox Code Playgroud)

我在SO上看过其他帖子,但我的XML文档看起来还不错 - 在XML声明之前没有额外的字符或空格.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
<coverage branch-rate="0.24074074074074073" branches-covered="39" branches-valid="162" complexity="0" line-rate="0.3485915492957746" lines-covered="198" lines-valid="568" timestamp="1396622452625" version="0.2.6">
Run Code Online (Sandbox Code Playgroud)

这是脚本的相关部分(Groovy 1.8.9):

def coveragedata = new XmlSlurper(false,false).parseText(coverageFile)
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助.

xml groovy

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

标签 统计

groovy ×4

jenkins ×3

mongodb ×3

xml ×2

ant ×1

curl ×1

javascript ×1

node.js ×1

pm2 ×1

sorting ×1

xml-parsing ×1