小编laf*_*oyb的帖子

gulp:定义了gulp任务回调函数在哪里?

gulp中的任务可以这样定义:

gulp.task('foobar', function(callback) { ... });
Run Code Online (Sandbox Code Playgroud)

我试图了解回调函数是什么.它在哪里定义?我可以在运行时传递一些其他函数作为参数吗?它有什么作用?

这些文档表明回调参数是Orchestrator的提示,该任务应该异步运行,执行回调指示异步任务已完成.

通过一些实验,看起来调用没有参数的回调会返回成功状态,并使用某个字符串调用它会引发错误:

gulp.task('foobar', function(callback) {
    callback();
});

gulp.task('bazkad', function(callback) {
    callback("some string");
});  
Run Code Online (Sandbox Code Playgroud)

(除此之外:如何在StackOverflow markdown中的代码块之间放置一个中断?)

$ gulp foobar
[09:59:54] Using gulpfile ~\repos\gulpproj\gulpfile.js
[09:59:54] Starting 'foobar'...
[09:59:54] Finished 'foobar' after 56 ?s
$ gulp bazkad
[10:05:49] Using gulpfile ~\repos\gulpproj\gulpfile.js
[10:05:49] Starting 'bazkad'...
[10:05:49] 'bazkad' errored after 55 ?s
[10:05:49] Error: some string
    at formatError (~\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:169:10)
    at Gulp.<anonymous> (~\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:195:15)
    at Gulp.emit (events.js:107:17)
    at Gulp.Orchestrator._emitTaskDone (~\repos\gulpproj\node_modules\gulp\node_modules\orchestrator\index.js:264:8)
    at ~\repos\gulpproj\node_modules\gulp\node_modules\orchestrator\index.js:275:23
    at finish (~\repos\gulpproj\node_modules\gulp\node_modules\orchestrator\lib\runTask.js:21:8)
    at cb (~\repos\gulpproj\node_modules\gulp\node_modules\orchestrator\lib\runTask.js:29:3)
    at …
Run Code Online (Sandbox Code Playgroud)

node.js gulp

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

sonarqube typescript插件:"你必须安装一个支持该语言的插件"

我正在尝试使用此插件设置SonarQube来分析我的TypeScript项目:https://github.com/Pablissimo/SonarTsPlugin

但是,我遇到了如下错误:

> C:\sonarqube\sonar-runner-2.4\bin\sonar-runner.bat
...
INFO: 
------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 3.006s
Final Memory: 18M/613M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: You must install a plugin that supports the language 'typescript'
ERROR:
ERROR: To see the full stack trace of the errors, re-run SonarQube Runner with the -e switch.
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.
Run Code Online (Sandbox Code Playgroud)

我的设置: - …

sonar-runner typescript sonarqube

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

在Jenkins中加入时从多个上游作业复制工件

是否可以通过来自多个上游作业的加入插件复制工件触发Jenkins作业?

我正在尝试使用"钻石"作业来设置Jenkins配置:my-trigger运行并生成两个作业,my-fork1和my-fork2,它们可以同时运行并占用不同的时间,然后加入两个叉子完成后,插件会启动作业my-join.

每个my-trigger,my-fork1和my-fork2都会创建和指纹工件(比如文本文件).

我想使用"从另一个项目中复制工件"工具从my-join中的每个上游作业复制工件,并将"Which build"参数设置为"触发此作业的上游构建".但是,我在my-join的控制台中看到这样的输出:

在工作空间/路径/到/ workspace/my-join中的构建机器上远程构建

从"my-trigger"内部编号63复制了1个工件

从"my-fork1"内部编号63复制了1个工件

无法从:my-fork2找到工件副本的构建

而且工作失败了.在这种情况下,my-fork2首先完成,所以my-fork1触发了join步骤.我相信这意味着my-join只记录my-fork1和my-trigger作为上游.如果my-fork1首先完成,那么my-fork2将启动连接,并且在尝试从my-fork1复制时作业失败.

如果我更改配置以从构建"最新成功构建"中复制工件,则构建成功,但是my-trigger可能会连续运行多次,因此无法保证my-join正在加入相关工件.

如何从上游复制多个叉子的连接步骤?

注意:这个问题的第二点似乎是问同样的事情,但唯一的答案是没有解决它,并已被接受.

谢谢tensorproduct

join jenkins

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

groovy 执行间歇性地不返回任何输出或错误

我正在尝试使用 Groovy 脚本(与 jenkins-cli.jar 一起运行)来验证一些 git 信息。

为此,我有以下简单的常规脚本:

def getBranchSha = { branch ->
  def wd = new File('/my/git/repo');
  def sout = new StringBuffer(), serr = new StringBuffer();
  def gitcmd = 'git show-ref ' + branch + ' --hash';
  def proc = gitcmd.execute(null, wd);
  proc.consumeProcessOutput(sout, serr);
  proc.waitFor();

  def sha = sout.toString().trim();
  out.println("exitCode: " + proc.exitValue() + "\terror: " + serr.toString());
  out.println("input: " + branch + "\toutput: \"" + sha + "\"");
  assert sha.equals("10d94325c8fc1050f3e362d2fbb9f9041e6b9360");
}

getBranchSha("origin/master");
Run Code Online (Sandbox Code Playgroud)

我希望这能够构建一个命令行git show-ref origin/master --hash …

groovy jenkins

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

如何在Windows中远程编辑文本

(注意,这个问题也发布在technet上)

如何在Windows中远程编辑文本文件?

我正在运行和管理许多Windows 7工作站和Windows Server 2012计算机.我希望能够在任何这些机器上远程编辑文本文件.我可以通过psexec或powershell远程连接到任何这些机器.我也可以通过rdp连接,但是对于工作站我宁愿不打开用户,除非我绝对不得不这样做.

例如,我们使用Salt管理状态配置.本地配置文件存储在C:\salt\conf.我希望能够动态编辑这些配置文件.

这个问题涉及同一主题,但没有一个答案特别令人满意.

一些可能的解决方案是:

  • 远程桌面:正如我所说,我宁愿不必将用户从他们的工作站上踢掉
  • 通过UNC路径编辑文件:这仅适用于共享上的文件,设置任意共享以进行快速编辑似乎是个坏主意.
  • 在所有目标计算机上安装某种方式的ftp或ssh服务器.这肯定会有效,但是WinRM已经有效了吗?我觉得在我的组织中的所有机器上安装和配置额外的软件是最后的选择.
  • 通过远程PowerShell会话使用命令行编辑器(例如vim,emacs)进行编辑.这不起作用.我不了解技术细节,但是PowerShell远程会话与ssh连接的交互方式不同.
  • 使用powershell的-replace运算符,out-file和add-content cmdlet进行编辑.这有效,但与全功能文本编辑器几乎不同.
  • 从远程检索内容,在本地编辑,然后回发到远程.这是有效的,可以说是我发现的最佳解决方案.来自之前SO问题的代码示例:
PS C:\Users\Meredith> Invoke-Command -Session $ps -ScriptBlock {get-content c:/inetpub/myapp/web.config} > web.config
Run Code Online (Sandbox Code Playgroud)

编辑网络配置:

PS C:\Users\Meredith> get-content web.config | Invoke-Command -Session $ps -ScriptBlock {set-content c:/inetpub/myapp/web.config}
Run Code Online (Sandbox Code Playgroud)

最后两个选项是我现在使用的工作流程.正则表达式替换非常简单的更改,并复制到本地和编辑那里更复杂的.两者都不理想,但它们都有效.它只是感觉难以置信的老式.

我正在考虑将一个插件写入我选择的编辑器(vim)来执行远程提取和保存,以使我的工作流程更加顺畅.在我尝试之前,我只是想知道是否有任何我错过或误解的内容.

windows powershell text psexec winrm

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

jenkins:通过Groovy API设置根URL

我正在尝试通过Groovy API更新Jenkins的根URL,因此我可以编写Jenkins master的部署脚本而无需手动输入(除了:为什么一个工具像build/devops /自动化社区一样受欢迎,因为Jenkins如此抗拒自动化?)

基于此文档,我相信我应该能够使用脚本控制台中的以下脚本更新URL.

import jenkins.model.JenkinsLocationConfiguration
jlc = new jenkins.model.JenkinsLocationConfiguration()
jlc.setUrl("http://jenkins.my-org.com:8080/") 
println(jlc.getUrl())
Run Code Online (Sandbox Code Playgroud)

简而言之,这实例化了一个JenkinsLocationConfiguration对象; setUrl用所需的值调用setter http://jenkins.my-org.com:8080/; 并打印出新的URL以确认它已更改.

println语句打印出我期望的内容,但是在此之后,通过"管理Jenkins" - >"配置系统" - >"Jenkins URL"的Web界面可见的值未按预期更新.

我担心Jenkins没有正确更新该值,这可能会在与外部API通信时导致问题.

这是修复Jenkins根URL的有效方法吗?如果不是,那是什么?否则,为什么更改不会反映在配置页面中?

groovy jenkins

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

在Windows自动/脚本/命令行中将.pem密钥文件转换为.ppk

我正在使用Vagrant在Windows主机上创建VM,我想将其与PuTTY连接.Vagrant以.pem格式创建RSA私钥.PuTTY需要.ppk格式的密钥才能创建连接.

我想在创建vagrant VM时自动将.pem转换为.ppk.

关于如何将.pem转换为.ppk的问题已被多次询问和回答,但在Windows上,所有这些答案都涉及点击puttygen GUI.似乎在Linux上,puttygen可以完全从命令行操作,但在Windows上必须使用GUI.

在创建我想避免的新VM时,必须单击GUI是我工作流程中的一个慢点.

在Windows上是否有任何命令行/脚本/编程方式将.pem文件转换为.ppk格式?

ssh putty pem key-pair private-key

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