小编mal*_*cot的帖子

如何配置Jenkins以从Mercurial中的不同分支构建项目

我有一个Jenkins构建作业,在默认分支上有一个Mercurial触发器,适用于构建"候选版本".然后,这项工作开始烟雾测试工作.

我们使用按功能分支的分支方案,因此在任何给定时间Mercurial中可能有多达12个不同的活动分支(但活动分支会定期更改).

我希望通过更改任何分支触发Jenkins作业,然后为所有需要更新的分支构建和运行冒烟测试.每次我们进行构建时,我们都应该创建与分支匹配的工件.

我在另一个回答中看到了一个建议:在Mercurial触发器中使用"tip"而不是分支名称 - 这是一种可能性,但我认为它将属于"大多数工作"类别.触发器是轮询,因此如果在轮询间隔内发生多个分支的更改,则可能会错过分支更新.

每次创建分支时我都可以创建一个新工作,但由于我们的分支机构的动态特性,这将是许多正在进行的工作.

mercurial hudson hudson-api jenkins

12
推荐指数
2
解决办法
4128
查看次数

安装时可以将用户定义的参数传递给RPM吗?

安装时可以将用户定义的参数传递给RPM.

例如:

~>rpm -i sample.rpm -license_path=/path/
Run Code Online (Sandbox Code Playgroud)

要么

~>rpm -i -license_path=/path/ sample.rpm
Run Code Online (Sandbox Code Playgroud)

要么

~>rpm -i -somearg sample.rpm
Run Code Online (Sandbox Code Playgroud)

-Sakthi

linux rpm rpmbuild

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

访问为Jenkins Groovy插件脚本指定的变量

在编写由Jenkins Groovy Plugin作为构建步骤(Execute System Groovy Script)运行的脚本时,可以指定"变量绑定".帮助热线说:定义varibale bingsings(以属性文件格式).可以从脚本中处理明确的变量.[原文如此]如何从脚本中访问这些变量?它们未设置为构建的环境变量,它们也不存在于系统属性中.

groovy jenkins jenkins-plugins

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

删除Python包安装程序中的旧egg-info文件

我有非常基本的Python设置脚本,只需distutils.core.setup()使用相关参数调用.这些软件包仅供内部使用,因此我目前不需要太多.

让我感到困惑的是,当安装新版本的软件包时,旧egg-info文件不会自动删除 - 尽管软件包目录会被新版本覆盖.

(1)默认情况下是否有理由不删除旧文件?

(2)是否有推荐的方法egg-info在新版本设置中删除旧文件,以便以后在设置过程变得更复杂时不会让我感到悲伤?

先感谢您.

python distutils egg setup.py python-2.7

6
推荐指数
1
解决办法
1295
查看次数

在PyCharm中运行Python包单元测试

我刚刚"移植"了一个我正在写给PyCharm的Python包,并且在从IDE运行整个包的单元测试时遇到了一些麻烦.

__init__.py包中,我的load_tests功能遍及包中的所有模块并加载相关的测试.它运行得非常出色:

$python -m unittest my_package
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从PyCharm运行它时(通过选择Projects窗口中的顶级目录并按Ctrl + Shift + F10),我进入No tests were foundRun窗口,

...\python.exe ...\pycharm\utrunner.py .../my_package/ true
Testing started at ...
Process finished with exit code 0
Empty test suite.
Run Code Online (Sandbox Code Playgroud)

在控制台窗口中.

我快速浏览了PyCharm utrunner.py,它似乎正在寻找具有某种模式的模块(从测试开始).我想保留目前的香草方法.如何配置PyCharm使用load_tests__init__.py在修改尽可能少的代码?

顺便说一句,各个模块的测试套件从PyCharm运行得很好.

使用PyCharm 3.1 Community Edition,Python 2.7.

先感谢您.

pycharm python-unittest

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

如何在 jenkins 中获取工作的相应构建工件?

我使用hudson.cli.CLI jar创建 Jenkins 工作。我在“构建后步骤”部分选择了“归档工件”选项。它在每次成功构建时存档工件。我正在使用jenkins 远程访问 api来获取有关工作的详细信息。并获取有关构建的详细信息。 http://localhost:8080/job/job_name/api/jsonhttp://localhost:8080/job/job_name/job_number/api/json

当我删除构建时,不会删除相应的存档工件。我想确保它们被删除。

当我使用 jenkins 远程访问 apihttp://localhost:8080/job/[job_name]/[job_number]/api/json进行构建时,它返回 json 数据,其中包含所有先前存档的工件(其他成功的构建工件)以及此(运行构建)构建工件。我如何获得构建的相关工件(成功的构建应该返回其工件,而不是所有以前成功的工件)。任何建议或想法?

jobs hudson build command-line-interface jenkins

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

Python argparse:复杂参数解析场景

我想实现以下命令行参数解析场景:

我有4个参数:-g-wid-w1,和-w2

-w1并且-w2总是一起出现

-wid(-w1 -w2)是互斥的,但需要一个或另一个

-g是可选的;如果它没有被指定(-w1 -w2)出现,但不能出现-wid

有没有一种优雅的方法来使用 argparse 实现这一点,但没有子命令(我已经在子命令中了)?

我正在考虑自定义操作,但是在操作的主体中,我需要知道最后一次调用它的时间(即解析最后一个参数的时间),自从参数的数量和顺序可能会有所不同。

一些更多的解释以防万一:我正在编写的工具使用小部件和小工具参数创建小工具-g。小部件要么是现有的小部件,然后通过其 id 引用-wid,要么是使用参数-w1和创建的新小部件-w2。如果-g未指定,则该工具将仅使用(-w1 -w2)而不创建小工具来创建和存储新的小部件。

先感谢您。

python argparse

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

从属参数化作业

我想创建一个工作来对Jenkins奴隶做一些内务管理,并在需要时手动触发它.我想为这个作业提供一个参数来告诉它要运行哪个从站.最好的方法是什么?

hudson jenkins

4
推荐指数
1
解决办法
1056
查看次数

在linux中改变jenkins的工作空间

我已经在Linux上安装了Jenkins,而且我对两者都很陌生.我使用自定义工作区/ root/xxxx配置了一个作业(目录结构已经到位).它给了我以下错误:

Building in workspace /root/bhanu
java.io.IOException: Failed to mkdirs: /root/bhanu
at hudson.FilePath.mkdirs(FilePath.java:847)
Run Code Online (Sandbox Code Playgroud)

另一个问题:在Execute Shell构建步骤中执行复制命令时,它会给出"权限被拒绝"错误.从控制台输出复制命令工作正常.这是错误:

+ cp /home/user1/victor.war /root/apache-tomcat-6.0.29/webapps/
cp: accessing '/root/apache-tomcat-6.0.29/webapps/': Permission denied
Run Code Online (Sandbox Code Playgroud)

当我尝试在Jenkins的shell脚本中设置权限时,它会给我"权限被拒绝"错误:

+ chmod a+rwx /root/apache-tomcat-6.0.29/webapps/
chmod: cannot access '/root/apache-tomcat-6.0.29/webapps/': Permission denied
Run Code Online (Sandbox Code Playgroud)

linux workspace jenkins

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

构建失败时,Jenkins会保存工件

我想存档我的程序的工件,但是当构建失败时,他不会保存工件.为什么是这样?

因为我只想在作业失败时读取工件!

感谢您的答复!

-

总是当工作失败时,我没有得到工件.我在非常小的工作中测试它:

空批处理文件+工件文件,结果:Job Succesfull,Artifact:succesfull

在批处理文件中退出1 +工件文件,结果:作业失败,工件:没有做任何事情

该作业的config.xml文件:

<?xml version='1.0' encoding='UTF-8'?>
<project>
  <actions/>
  <description></description>
  <keepDependencies>false</keepDependencies>
  <properties/>
  <scm class="hudson.scm.NullSCM"/>
  <canRoam>true</canRoam>
  <disabled>false</disabled>
  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
  <triggers class="vector"/>
  <concurrentBuild>false</concurrentBuild>
  <customWorkspace>C:\test\</customWorkspace>
  <builders>
    <hudson.tasks.BatchFile>
      <command>exit 1</command>
    </hudson.tasks.BatchFile>
  </builders>
  <publishers>
    <hudson.tasks.ArtifactArchiver>
      <artifacts>tomcat\logs\tomcat.log</artifacts>
      <latestOnly>false</latestOnly>
    </hudson.tasks.ArtifactArchiver>
  </publishers>
  <buildWrappers/>
</project> 
Run Code Online (Sandbox Code Playgroud)

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

当我在Jenkins中使用ant sshexec运行脚本时,如何更改工作目录?

我有一个ant目标,我成功使用sshexec-task在OpenSuse 11上使用tomcat安装服务器.

当我尝试运行启动新安装的服务器的脚本时出现问题.我需要以root身份执行此操作,因此我使用以下任务:

<sshexec host="${tss.hostname}"
    username="${username}"
    password="${password}"
    trust="true"
    Command="/usr/local/bin/foo/bar/tomcat/bin/startup.sh"
    failonerror="false"/>
Run Code Online (Sandbox Code Playgroud)

这个问题是我需要从它所在的文件夹运行脚本,因为它从该位置找到CATALINA_HOME和JAVA_HOME.路径"foo/bar"会随着时间的推移而改变,所以我不想永久地设置它.我只想将我的跑步路径改为正确的路径.

由于我未能像这样启动服务器,我想调查一下并更改脚本,因此我使用"CommandResource ="cmd.txt"而不是直接命令.我想我可以在开始之前使用它来设置CATALINA_HOME服务器并绕过问题的方式.

这是使用cmd.txt时的结果:

  [sshexec] Connecting to foo-bar:22
  [sshexec] cmd : 
  [sshexec] cmd : cd /usr/local/bin/foo/bar/tomcat/bin
  [sshexec] cmd : pwd
  [sshexec] /root
  [sshexec] cmd : echo $PATH
  [sshexec] /usr/java/jdk1.6.0_27/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin
  [sshexec] cmd : export CATALINA_HOME=$PATH:/usr/local/bin/tibco/tss/4.5.0/tomcat
  [sshexec] cmd : echo $PATH
  [sshexec] /usr/java/jdk1.6.0_27/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin
Run Code Online (Sandbox Code Playgroud)

这表明cd和export命令都没有任何效果.

我怀疑我需要更改ssh的权限.我已经读过,我可能需要更改.ssh/config.但我不知道怎么样或在哪里......

所以,总结这个长问题:

如果能够使用在Jenkins中运行的ant脚本从正确的tomcat/bin文件夹中以root身份运行我的startup.sh,我需要做什么?

linux ant ssh jenkins

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

同时声明和定义C++数组

我正在尝试同时定义和声明一些全局C++常量:

constants.h中:

#ifdef DEFINE_CONSTANTS
#define DECLARE_CONSTANT(DECL_, VAL_) extern DECL_ = VAL_
#else
#define DECLARE_CONSTANT(DECL_, VAL_) extern DECL_
#endif

namespace Constants {
    DECLARE_CONSTANT(const char LABEL[], "SomeText");
    DECLARE_CONSTANT(const int REQUEST_TIMEOUT_MS, 5000);
};
Run Code Online (Sandbox Code Playgroud)

constants.cpp中:

#define DEFINE_CONSTANTS
#include "constants.h"
#undef DEFINE_CONSTANTS
Run Code Online (Sandbox Code Playgroud)

在使用常量的所有其他文件中,我只包含constants.h

现在,如果我不使用数组初始化器,上面的工作就可以了.但是,当我尝试做类似的事情时:

DECLARE_CONSTANT(const int ARRAY[], {0,1,2});
Run Code Online (Sandbox Code Playgroud)

编译constants.cpp时我得到一个错误,因为初始化程序中的逗号"混淆"预处理器,认为DECLARE_CONSTANT的参数太多(确切的错误取决于编译器).

有没有办法解决这个问题?其他解决方案也欢迎.

c++ c-preprocessor

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