我正在使用Jenkins Multiple SCM插件在我的Jenkins作业中将三个git存储库检入三个子目录.然后,我执行一组命令来构建一组工件,其中包含从所有三个存储库中提取的信息和代码.
现在折旧了多个SCM,文本建议移动到管道.我试过了,但我无法弄清楚如何让它发挥作用.
这是我有兴趣从Jenkins作业目录的顶层看到的目录结构:
$ ls
Combination
CombinationBuilder
CombinationResults
Run Code Online (Sandbox Code Playgroud)
这三个子目录中的每一个都签出了一个git repo.使用多个SCM,我使用git,然后添加"checkout to a subdirectory"行为.这是我尝试使用管道脚本:
node('ATLAS && Linux') {
sh('[ -e CalibrationResults ] || mkdir CalibrationResults')
sh('cd CalibrationResults')
git url: 'https://github.com/AtlasBID/CalibrationResults.git'
sh('cd ..')
sh('[ -e Combination ] || mkdir Combination')
sh('cd Combination')
git url: 'https://github.com/AtlasBID/Combination.git'
sh('cd ..')
sh('[ -e CombinationBuilder ] || mkdir CombinationBuilder')
sh('cd CombinationBuilder')
git url: 'https://github.com/AtlasBID/CombinationBuilder.git'
sh 'cd ..'
sh('ls')
sh('. CombinationBuilder/build.sh')
}
Run Code Online (Sandbox Code Playgroud)
但是,git命令似乎在工作区的顶级目录中执行(这有一定意义),并且根据语法,似乎没有checkout-to-sub-directory行为.
假设我有一个非常简单的类型,我想在OData feed上公开它作为使用.NET C#webapi控制器的集合的一部分:
public class Image
{
/// <summary>
/// Get the name of the image.
/// </summary>
public string Name { get; set; }
public int Id { get; set; }
internal System.IO.Stream GetProperty(string p)
{
throw new System.NotImplementedException();
}
private Dictionary<string, string> propBag = new Dictionary<string, string>();
internal string GetIt(string p)
{
return propBag[p];
}
}
Run Code Online (Sandbox Code Playgroud)
在我的WebApiConfig.cs中,我做标准配置:
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
var imagesES = modelBuilder.EntitySet<Image>("Images");
Run Code Online (Sandbox Code Playgroud)
根据Excel,这是一个很好的饲料.但在我的集合中,propBag包含其他数据的有限列表(例如"a","b"和"c"或类似).我希望它们是我的OData Feed中的额外属性.我的第一个想法是在配置发生时尝试这样的事情:
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
var imagesES = modelBuilder.EntitySet<Image>("Images");
images.EntityType.Property(c …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序是一个带有一堆MEF部件的shell.虽然用户可以在其文件系统中的某些特殊位置添加新的MEF部件,但应用程序本身需要自行部署大约5或6个这些库才能正常工作.我想使用click-once来进行部署.做这个的最好方式是什么?
我能想到的最简单的事情就是在IDE中引用DLL并将它们标记为内容.然后他们将被部署.这意味着硬编码的文件路径(调试/发布等).所以似乎应该有更好的方法.
第二个命令是将刚刚构建的MEF dll版本复制到一个公共目录,并始终引用项目中的那些并将它们标记为"内容".
我已经看到了在另一个问题中创建可再发行组件的参考(部署MEF部件).最终的解决方案看起来很像将所有内容复制到一个目录,压缩它,然后在客户端上解压缩 - 这基本上就像"内容"一样明确引用在我的想法中(我认为).
其他选择?提前谢谢了!
在测试方面,我已经支持它了.我现在是一个巨大的粉丝,经常做像TDD这样的事情.在VS 2010的设计和回归中,我刚刚使用了MSTEST.这很棒 - 我的所有项目都是开源的,无论如何都与我的工作有关(物理研究@大学).然后我进入了Pex,它帮助了很多我找不到的各种边缘情况.总的来说,这是我编码方式的一次革命.这就把我介绍给了Moles.也很酷(但我还在学习).
不幸的是,我只能访问VS的Pro版本(这是我的大学作为站点许可证获得的).结果是Moles不再起作用,而且升级,Fakes也不会.而且我认为Pex的下一个版本将依赖于Fakes,使其成为终极唯一的选择.
所以,我发现自己现在正在寻找具有类似功能的开源工具.是否有某篇文章或资源比较了一些比较成熟的OSS项目?我发现自己有点亏本(即选择太多).虽然我喜欢这种嘲讽能力,但它是一种工具,而不是我想用我的业余时间(这是我的大部分.NET编程发生的地方).
我认为如果不花真钱就不可能取代Pex.
虽然我在这,但似乎我应该看看是否有其他测试框架比MSTEST更好.MSTEST非常好,但开始感觉有点受限(我没有探索VS2012中的任何新功能,如果有的话).
非常感谢你的帮助,提前,真的,通常我会尝试提出一个更具体的问题,但我在这里有点海上.
在我的ViewModel代码中,我经常会有如下代码:
public bool IsDownloading { get { return _isDownloading.Value; } }
private ObservableAsPropertyHelper<bool> _isDownloading;
...
FileDownloader.WhenAny(x => x.IsDownloading, x => x.Value)
.ToProperty(this, x => x.IsDownloading, out _isDownloading, false, RxApp.MainThreadScheduler);
Run Code Online (Sandbox Code Playgroud)
请注意最后一个RxApp.MainThreadScheduler参数 - 确保对IsDownloading属性的所有更新都发生在主 UI 线程上。
原因是因为可能订阅它。例如,在我的 xaml 视图中,我可能有以下代码:
this.OneWayBind(ViewModel, x => x.IsDownloading, y => y.DownloadProgress.IsActive);
Run Code Online (Sandbox Code Playgroud)
在这里您会看到,IsDownloading它将被路由到IsActive控件上的项目 - 因此任何更新都必须在 UI 线程上进行。所以所有这些都有效。
但我不明白为什么这样ReactiveUI设计。更新发生在 UI 线程上似乎对视图而不是 VM 很重要,所以不应该绑定或OneWayBind确保它在正确的线程上?事实上,如果您查看这些例程的 XML 文档,它们会讨论将事物附加到 View 的内容,因此暗示它应该始终在主线程上。
那么:为什么不OneWayBind和 Bind 隐式强制MainThread?我是否错过了ReactiveUI …
我在 Jenkins 中有一个构建,但由于临时原因而失败。我只想重新构建它。在网站上,我只需单击“重建”(来自重建插件),如果它是参数化作业,我会被问到是否要保留参数。重要的是,新作业包含一个返回原始作业的“重建”链接,支持回溯。
如何从 REST API 实现这种“重建”。我有代码可以完成一个完整的工作,提取参数,并用这些相同的参数调用一个新的工作——所以我已经完成了大部分工作。
但我不知道如何建立重建链接,所以我可以追踪什么工作是对其他工作的重建。
我需要在新的浏览器进程中打开一个URL.我需要在浏览器进程退出时收到通知.我目前使用的代码如下:
Process browser = new Process();
browser.EnableRaisingEvents = true;
browser.StartInfo.Arguments = url;
browser.StartInfo.FileName = "iexplore";
browser.Exited += new EventHandler(browser_Exited);
browser.Start();
Run Code Online (Sandbox Code Playgroud)
显然,这不会到期,因为"FileName"固定为iexplore,而不是用户的默认Web浏览器.如何确定用户的默认Web浏览器是什么?
我正在运行Vista->前进.虽然如果可能的话XP会很好.
更多上下文:我创建了一个非常小的独立Web服务器,它可以从本地磁盘上提供一些文件.在启动服务器结束时,我想启动浏览器.用户完成并关闭浏览器后,我想退出Web服务器.除了仅使用IE之外,上面的代码完美地运行.
提前致谢!
我有一个简单的ViewModel:
public class MeetingPageViewModel : ReactiveObject, IRoutableViewModel
{
public MeetingPageViewModel(IScreen hs, IMeetingRef mRef)
{
HostScreen = hs;
_backing = "hi there";
}
public IScreen HostScreen { get; private set; }
public string MeetingTitle
{
get { return _backing; }
set { this.RaiseAndSetIfChanged(ref _backing, value); }
}
string _backing;
public string UrlPathSegment
{
get { return "/meeting"; }
}
}
Run Code Online (Sandbox Code Playgroud)
然后我将一个TextBlock绑定到MeetingTitle:
public sealed partial class MeetingPage : Page, IViewFor<MeetingPageViewModel>
{
public MeetingPage()
{
this.InitializeComponent();
// Bind everything together we need.
this.OneWayBind(ViewModel, …Run Code Online (Sandbox Code Playgroud) 我使用以下命令来运行管道.
.\Find-CalRatioSamples.ps1 data16 `
| ? {-Not (Test-GRIDDataset -JobName DiVertAnalysis -JobVersion 13 -JobSourceDatasetName $_ -Exists -Location UWTeV-linux)}
Run Code Online (Sandbox Code Playgroud)
第一个是我的自定义脚本,运行速度非常快(毫秒).第二个是自定义命令,也是由我编写的(参见https://github.com/LHCAtlas/AtlasSSH/blob/master/PSAtlasDatasetCommands/TestGRIDDataset.cs).这很慢.
实际上,处理每一行输入并不是那么慢.可以处理第一行输入之前的设置非常昂贵.但是,这样做很快.因此,所有昂贵的代码都会执行一次,并且只需要为每个新的管道输入执行相当快的代码.
不幸的是,当我想做的时候?上面的{}构造,似乎PowerShell不像以前那样保留管道.现在它命令我为每行输入命令一个新的时间,导致命令重做每一行的所有设置.
在我如何调用管道线路方面有什么可以改变的吗?或者我如何编写我的cmdlet来防止这种情况发生?或者我被卡住,因为这只是Where-Object的工作方式?
我有一两个MSTest用于检查性能 - 它们需要大约5秒钟才能运行.我最近一直在为我的库添加异步,现在其中一些性能测试非常快(yay!),有些则慢得多(boo).
我在过去的某些应用程序中使用了VS2012中的性能分析器,效果很好(分析 - >启动性能分析).我无法弄清楚是否有一种"好"的方式来运行它的一两个测试(或者,实际上,我的任何测试).这可能吗?
我正在使用VS2012和MSTest,.NET 4.5库.
我正在使用Akavache缓存本地对象。我希望能够删除数据库中的所有内容(就像是第一次运行该程序一样)。我已经看到了Vacuum方法,但是只能删除过期的旧项目。清理所有内容的简便方法是什么?
我在 VSCode 中有一个 python 项目,我正在使用flake8linter 和pyright类型检查器。我希望它能够检查/检查项目中的所有文件,而不仅仅是打开的文件。我该如何配置这个?
因为pyright有一个选项“仅报告当前打开的文件的错误”。我已经取消勾选了。python“Python -> Analysis: Open Files Only”中有一个类似的选项,我已禁用它。
在这两种情况下,我都知道存在错误(我可以打开文件并查看它们),但我在面板中没有看到错误PROBLEMS。
我还有其他方法可以完成这项工作吗?
c# ×4
jenkins ×2
reactiveui ×2
akavache ×1
clickonce ×1
git ×1
idisposable ×1
mef ×1
mocking ×1
moles ×1
odata ×1
performance ×1
pex ×1
powershell ×1
python ×1
shellexecute ×1
system ×1
windows ×1