小编Jas*_*ger的帖子

检索Jenkins中下游构建的构建号或工件

我在詹金斯有一份工作(称之为BIGJOB); 几个构建步骤是使用参数化触发器插件触发其他作业的构建(称为SMALLJOB),然后等待它们完成.我需要做的是从SMALLJOB上的触发构建中检索工件.

最初,我以为我可以使用Copy Artifact Plugin从触发的SMALLJOB的"last build"中检索工件.当一次只运行一个SMALLJOB时,这确实可以正常工作.

但是我运行了多个BIGJOB,都触发了多个SMALLJOB,因此使用"last build"是不可靠的,同时两个SMALLJOB完成.

是否有更可靠的方法从特定下游作业中获取工件?如果我可以获得构建号,我可以使用curl来获取构件.

hudson parameterized jenkins

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

是否可以创建一个部署为EXE或Windows服务的独立C#Web服务?

是否可以创建可以处理Web服务请求的C#EXE或Windows服务?显然,某种嵌入式,可能有限的Web服务器必须是EXE /服务的一部分.EXE /服务不必依赖于安装IIS.优选地,嵌入式Web服务可以处理HTTPS/SSL类型连接.

方案是这样的:客户想要在他们的公司机器上安装一个小代理(Windows服务).代理将有两个主要任务:1)随着时间的推移监视系统并收集某些数据,以及2)响应Web服务请求(SOAP -v-REST仍然被讨价还价)以进行数据收集或系统更改.客户喜欢Web服务API的概念,因此可以编写任意数量的客户端(使用任何语言)来访问企业计算机上运行的各种代理.他们希望安装相对轻松(安装.NET,某些程序集,服务,修改Windows防火墙,启动服务),而无需安装和配置IIS.

我知道我可以用Delphi做到这一点.但是如果可能的话,客户更愿意在C#中完成这项工作.

有什么建议?

c# web-services windows-services embeddedwebserver

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

在Jenkins工作的构建中,是否可以在中途更改构建参数?

我们使用Jenkins自动化我们的几个构建和测试过程.对于我们的一些流程,启动构建的工程师需要指定一个参数.但是该参数的可能和最佳值的范围在一天中变化.

我想要做的是让工程师指定一个值 - 如果他们知道最佳值 - 或者将其留空并通过早期构建步骤计算值.如果计算了该值,我希望计算构建步骤更新作业的参数值.这样,所有后续构建步骤都不必担心使用参数或计算它,它们只是使用参数.

看起来Groovy Script Plugin可能会这样做,但我看不出如何设置构建参数,只需获取它们.

parameters groovy jenkins

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

重新配置并重新启动Hudson/Jenkins从属服务器作为构建的一部分

我有一个Jenkins(Hudson)服务器设置,可以在各种从机上运行测试.我想要做的是重新配置从属设备(使用远程API),重新启动从属设备以使其更改生效,然后继续测试的其余部分.到目前为止我遇到了两个障碍:

  1. 一旦Jenkins作业开始在从属设备上运行,从属设备就不能断开或断开与服务器的网络连接,否则Jenkins会立即通过测试.通常,我会说这是完全可取的行为.但在这种情况下,我希望Jenkins能够接受中断,直到奴隶重新上线并且Jenkins可以重新连接到它 - 或者奴隶重新连接到Jenkins.
  2. 在已连接到从属服务器的作业中,我需要在Jenkins主服务器上运行一些构建任务 - 而不是在从服务器上运行.

这可能吗?到目前为止,我还没有找到使用Jenkins或其任何插件的方法.

编辑 - 进一步解释 我真的非常喜欢Jenkins奴隶架构.结合已有的插件,它可以很容易地将作业送到从站,运行,并且结果被撤回.并且能够选择任何匹配的从站允许自动作业/测试分发.

在我们的情况下,我们使用虚拟化(VMware)从机.编写一个脚本可以很容易地使Jenkins在需要在从属设备上运行时使用VMware PowerCLI来启动VM,然后将作业发送给它并将结果拉回来.都好.

除了每个测试的部分设置是以某种方式稍微重新配置虚拟机.禁用UAC,以其他用户身份登录,安装不同的驱动程序等 - 每个更改都要求在更改生效之前重新启动测试VM /从服务器.虽然我可以编写从属按需脚本(启动方法=通过在主服务器上执行命令启动从服务器)来处理此重新配置并重新启动,但必须在作业运行之前完成.这就是问题发生的地方 - 我无法提前配置从站,因为配置更改的类型取决于正在运行的作业,这仅在从站启动后发生.

可能的解决方案
1)在单个VM上使用多个从属实例.这不起作用 - 几个配置是互斥的,但Jenkins不知道.因此,它会尝试为一个作业启动一个从站配置,为另一个作业启动另一个从站 - 并且两个从站都将在同一个VM上.锁定作业不会阻止这种情况,因为从属启动不是工作的一部分.

2)(Optimal)一个构建步骤,允许作业知道它的从属连接可能被中断.构建步骤可能必须包含一些选项,以便Jenkins知道如何重新连接从属设备(将自动重新连接,Jenkins是否必须运行脚本,简单的SSH就足够了).构建步骤将处理从站的断开连接,忽略通常作业失败的断开连接,然后执行重新连接.从站恢复运行后,可以进行下一个构建步骤.如果从站在一定时间内无法重新连接,则可能是作业失败的超时.

**当前的解决方案** - 不是最优的
现在,我不能使用Jenkins的从属功能.相反,我使用一系列构建步骤 - 在master上运行 - 使用Windows和PowerShell脚本启动VM,进行配置并重新启动它.VM上运行了SSH服务器,我使用它将测试文件上传到测试VM,然后远程执行它们.然后将结果下载回Jenkins以便按作业处理.这个解决方案是功能性的 - 但比典型的Jenkins从属方法要多得多.此外,脚本针对单个VM; 我不能轻易使用一群奴隶.

hudson reboot slave jenkins

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

使单个WCF服务支持SOAP,REST和WSDL

我正在尝试在.NET 3.5中构建一个支持SOAP的C#服务 - 并显示WSDL和REST.

SOAP服务和WSDL生成很容易使用ServiceHostBasicHttpBinding类.得到了工作,客户很高兴.

由于SOAP调用所有使用的简单参数,因此客户端开发人员为某些命令请求了REST接口.所以我改变了的ServiceHost类的WebServiceHost,根据需要添加WebInvokeWebGet属性,增加了一个WebHttpBinding班,和宾果- REST和SOAP进行了两个工作了一个服务.很酷,改变一个界面,REST和SOAP都得到了新的东西.

但是有一个问题 - 不再生成WSDL.我无法浏览到http:// server/service?wsdl并获取WSDL文件.检查MSDN文档,这似乎是默认行为WebServiceHost.

问题:我可以覆盖此行为以便可以获取WSDL吗?没有与以前相同的URL - 它可以更改 - 但我只需要在服务中使用一些URL来为这些SOAP开发人员获取WSDL.

c# rest wcf soap wsdl

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

如何更改Jenkins中的并发构建路径分隔符

将作业标记为能够在同一节点上并发运行时,Jenkins会将@X(其中X是并发构建的编号)附加到普通工作空间目录,以获取新的唯一工作空间目录.通常,这一切都很好,但是我们遇到了一些工具,即使操作系统可以,也无法处理路径名中的@.

有没有办法将@字符更改为其他内容?说可能是双下划线(__)或其他什么?

jenkins

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

自定义C++ cout类 - 输出到控制台和日志文件

我正在研究一个大量使用"cout << strSomething"的程序.将信息记录到控制台.我需要修改程序,以便所有控制台输出都转到控制台和文件.虽然我可以修改代码中的"cout <<",但是有几个大的第三方库也使用"cout <<"; 这些库由于其许可证而无法修改 - 因此修改对"cout <<"的所有引用都不是解决方案.此外,由于执行命令行的方式,不可能使用"wtee.exe".

我正在使用Visual Studio 2008.我已经在Google网上论坛上发帖了:将cout重定向到文件,这似乎完全符合我的要求.唯一的问题是代码不会编译.我在 - > overflow()和 - > sync()方法调用上得到C2248错误"无法访问受保护的成员".

有谁知道如何编译这段代码?或者同时将cout重定向到控制台和文件的另一种方法?

c++ console cout stdout

8
推荐指数
2
解决办法
9450
查看次数

列出Jenkins中所有永久构建的内容?

Jenkins是否有一种简单的方法可以列出所有标记为永久保留的构建?然后,理想情况下,只需单击一下即可将构建标记为永久保留或立即删除它?

在我们的过程中,如果构建涉及某种特定类型的故障,我们将构建标记为永久保留; 这是为了防止Jenkins随着时间的推移自动删除.我需要一种简单的方法来获取所有那些永久构建的列表,这样它们就不会占用我们所有的磁盘空间.

jenkins jenkins-plugins

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

如何使用Delphi 2007中的非IIS托管,WCF,C#Web服务?

我编写了一个相当简单的小型C#Web服务,通​​过WCF从独立的EXE托管.代码 - 有点简化 - 看起来像这样:

namespace VMProvisionEXE
{
class EXEWrapper
{
    static void Main(string[] args)
    {
        WSHttpBinding myBinding = new WSHttpBinding();
        myBinding.Security.Mode = SecurityMode.None;

        Uri baseAddress = new Uri("http://bernard3:8000/VMWareProvisioning/Service");
        ServiceHost selfHost = new ServiceHost(typeof(VMPService), baseAddress);

        try
        {
            selfHost.AddServiceEndpoint(typeof(IVMProvisionCore), myBinding, "CoreServices");

            ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
            smb.HttpGetEnabled = true;
            smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy12;
            selfHost.Description.Behaviors.Add(smb);

            // Add MEX endpoint
            selfHost.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexHttpBinding(), "mex");

            selfHost.Open();
            Console.WriteLine("The service is ready.");
            Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

其余的C#代码; 上面的类VMPService实现了VMProvisionCore.IVMProvisionCore.

namespace VMProvisionCore
{
[ServiceContract(Namespace = "http://Cisco.VMProvision.Core", ProtectionLevel = System.Net.Security.ProtectionLevel.None)]
public interface IVMProvisionCore
{ …
Run Code Online (Sandbox Code Playgroud)

c# delphi wcf web-services

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

使用Delphi XE Starter Edition进行哪些测试框架/单元测试

我正在考虑从Delphi 2007(由我的雇主购买)转移到Delphi XE Starter Edition(由我购买,因为我的雇主正在远离Delphi)进行一些开源/业余爱好工作.所以,价格肯定是一个问题.

Delphi XE Starter Edition似乎没有集成的DUnit东西.是否有任何测试框架的建议可以与XE Starter一起使用?框架必须是可自动化的; 例如,它必须可以由Hudson或CruiseControl等持续集成系统运行.当然,免费是最好的.直接集成到IDE中也很方便,但不是必需的.

delphi automated-tests unit-testing

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

如何使SCONS更新构建中使用的文件的内容

什么是更新作为构建一部分的文件内容的正确SCONS方法?

我使用SCONS来构建一个相当大的项目.但是为了一个简单的问题,假设它看起来像这样:

env.Program("foo", ["foo.c", "version.c"])
Run Code Online (Sandbox Code Playgroud)

在某些构建条件下,有必要使用新信息更新构建中的一个CPP文件的内容 - 实际上是版本信息.在上面的例子中,我需要修改"version.c"的内容.我想我可以通过以下示例很好地做到这一点:

env.Command(target="version.c", source=[], action=PythonFunctionToUpdateContents)
env.Program("foo", ["foo.c", "version.c"])
Run Code Online (Sandbox Code Playgroud)

PythonFunctionToUpdateContents将使用target [0]作为文件名,打开它,查找某些特定文本,更改它,将更改写回同一文件.不幸的是,上面的示例不起作用.SCONS在构建之前会自动删除目标文件,因此我的"version.c"文件在更新之前就被删除了.

我尝试在env.Command()调用中将目标和源设置为同一个文件,但这只是创建一个依赖循环.

我知道我可以通过让SCONS生成ENTIRE version.c文件来解决这个问题,但这不合适,因为version.c包含许多其他代码,这些代码可以作为正常开发的一部分进行更改.

scons

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