小编Wil*_*hes的帖子

在Jenkins构建步骤中从groovy脚本访问构建环境变量(Windows)

我正在使用Scriptler插件,所以我可以运行一个groovy脚本作为构建步骤.我的Jenkins奴隶在服务模式下运行在Windows上.使用scriptler,我不需要使用Windows批处理脚本.

但我很难在构建步骤中获取环境变量...这是有效的:

System.getenv("BASE")
Run Code Online (Sandbox Code Playgroud)

哪里BASE是詹金斯启动将env-瓦尔的一部分.但是,我想得到

%JOB_NAME%
Run Code Online (Sandbox Code Playgroud)

如果我正在添加"执行Windows批处理命令"构建步骤:

echo %JOB_NAME%
Run Code Online (Sandbox Code Playgroud)

有用.如果我使用相同的设置添加脚本编写器脚本作为构建步骤:

println "JOB_NAME: " + System.getenv("JOB_NAME")
Run Code Online (Sandbox Code Playgroud)

我越来越:

JOB_NAME: null
Run Code Online (Sandbox Code Playgroud)

那么如何从groovy脚本中获取注入的环境变量作为构建步骤?

windows groovy environment-variables jenkins

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

詹金斯奴隶工作失败"意外终止频道"

我目前在构建中看到一组错误.

如果你放松詹金斯(比如说是箱子崩溃,还是杀人-9),这是预期的行为吗?

或者是否有更糟糕的事情(如糟糕的网络连接)?

堆栈和错误是:

hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:158)
        at $Proxy175.join(Unknown Source)   at
hudson.Launcher$RemoteLauncher$ProcImpl.join(Launcher.java:861)     at
hudson.Launcher$ProcStarter.join(Launcher.java:345)     at
hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:82)
        at
hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:58)
        at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
        at
hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:703)
        at hudson.model.Build$RunnerImpl.build(Build.java:178)  at
hudson.model.Build$RunnerImpl.doRun(Build.java:139)     at
hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:473)
        at hudson.model.Run.run(Run.java:1410)  at
hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)     at
hudson.model.ResourceController.execute(ResourceController.java:88)
        at hudson.model.Executor.run(Executor.java:238) Caused by:
hudson.remoting.RequestAbortedException: java.io.IOException:
Unexpected termination of the channel   at
hudson.remoting.Request.abort(Request.java:273)     at
hudson.remoting.Channel.terminate(Channel.java:732)     at
hudson.remoting.Channel$ReaderThread.run(Channel.java:1157) Caused by:
java.io.IOException: Unexpected termination of the channel  at
hudson.remoting.Channel$ReaderThread.run(Channel.java:1133) Caused by:
java.io.EOFException    at
java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2554)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
        at hudson.remoting.Channel$ReaderThread.run(Channel.java:1127)
Run Code Online (Sandbox Code Playgroud)

jenkins

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

最佳实践:如何在setup.py中列出所需的依赖项?

这就是我目前的做法:

import os
from setuptools import setup, find_packages
here = os.path.abspath(os.path.dirname(__file__))

requires = [
    'pyramid',
    'pyramid_debugtoolbar',
    'waitress',
    'requests',
    'mock',
    'gunicorn',
    'mongoengine',
    ]

setup(name='repoapi',
      version='0.0',
      description='repoapi',
      packages=find_packages(),
      include_package_data=True,
      zip_safe=False,
      install_requires=requires,
      tests_require=requires,
      test_suite="repoapi",
      entry_points="""\
      [paste.app_factory]
      main = repoapi:main
      """,
      )
Run Code Online (Sandbox Code Playgroud)

这是好的方式吗?我有一些麻烦.例如,对于金字塔,我不能使用系统范围的nosetests插件来运行测试.我需要pyramid在全局python site-packages中安装!

但我不希望这样.所以我必须在这个项目的virtualenv中安装鼻子.但我不希望它成为一种依赖.我不觉得它应该属于requires.事实并非如此.然而,我也不想一直手工安装.是的我知道我有很多我不想这样做那......

但你怎么解决这个问题呢?我不想篡改全局python站点包,但我想安装nose作为virtualenv的一部分.

另外,pip安装需求文件.它稍微准确一点,因为我不需要手动指定版本,我不需要害怕手动更新setup.py.刚刚pip freeze > file.txt完成.

但是,pip可以返回垃圾,因为我们将垃圾包扔进了virtualenv.

这么多刀片.什么是最佳做法?你是如何处理这些问题的?

也许我错过了它,但https://github.com/django/django/blob/master/setup.py,Django是怎么做到的?

python

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

Bash整数比较

我想写一个bash脚本,检查是否至少有一个参数,如果有一个参数,如果该参数是0或1.这是脚本:

#/bin/bash
if (("$#" < 1)) && ( (("$0" != 1)) ||  (("$0" -ne 0q)) ) ; then
echo this script requires a 1 or 0 as first parameter.
fi
xinput set-prop 12 "Device Enabled" $0
Run Code Online (Sandbox Code Playgroud)

这会出现以下错误:

./setTouchpadEnabled: line 2: ((: ./setTouchpadEnabled != 1: syntax error: operand expected (error token is "./setTouchpadEnabled != 1")
./setTouchpadEnabled: line 2: ((: ./setTouchpadEnabled -ne 0q: syntax error: operand expected (error token is "./setTouchpadEnabled -ne 0q")
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

bash comparison integer

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

我如何用webpack填充Promise?

我正在使用webpack捆绑我的JavaScript.我依赖于使用任何承诺的冰棒等模块.

这是我的代码:

var popsicle = require('popsicle');
popsicle.get('/').then(function() {
  console.log('loaded URL');
});
Run Code Online (Sandbox Code Playgroud)

这在Promise可用的浏览器中工作正常,但IE 11不提供Promise.所以我想使用es6-promise作为polyfill.

我尝试添加一个明确的ProvidePlugin给我webpack.config.js:

plugins: [
  new webpack.ProvidePlugin({
    'Promise': 'exports?global.Promise!es6-promise'
  })
]
Run Code Online (Sandbox Code Playgroud)

但我仍然在IE 11中得到错误:any-promise browser requires a polyfill or explicit registration e.g: require('any-promise/register/bluebird').

我尝试明确附加全局:

global.Promise = global.Promise || require('es6-promise');
Run Code Online (Sandbox Code Playgroud)

但IE 11给出了一个不同的错误:Object doesn't support this action.

我也尝试过明确注册es6-promise:

require('any-promise/register/es6-promise');
var popsicle = require('popsicle');
Run Code Online (Sandbox Code Playgroud)

这有效,但我必须在每个加载的文件中执行此操作popsicle.我想Promise加入window.

如何window.Promise使用webpack …

javascript polyfills internet-explorer-11 webpack

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

停止gif动画onload,在mouseover上启动激活

我有一个包含大量GIF的页面.

<img src="gif/1303552574110.1.gif" alt="" >
<img src="gif/1302919192204.gif" alt="" >
<img src="gif/1303642234740.gif" alt="" >
<img src="gif/1303822879528.gif" alt="" >
<img src="gif/1303825584512.gif" alt="" >
Run Code Online (Sandbox Code Playgroud)

我正在寻找什么

1页面加载=>停止所有GIF的动画

2在鼠标悬停时=>为该一个gif启动动画

3在mouseout =>动画再次停止该gif

我想这可以在Jquery中完成,但我不知道如何.

jquery gif

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

PyPI很慢.我如何运行自己的服务器?

当一个新的开发人员加入团队,或者Jenkins运行完整的构建时,我需要创建一个新的virtualenv.我经常发现使用Pip和大量(超过10个)需求设置virtualenv需要很长时间才能从PyPI安装所有内容.通常它完全失败:

Downloading/unpacking Django==1.4.5 (from -r requirements.pip (line 1))
Exception:
Traceback (most recent call last):
  File "/var/lib/jenkins/jobs/hermes-web/workspace/web/.venv/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/basecommand.py", line 107, in main
    status = self.run(options, args)
  File "/var/lib/jenkins/jobs/hermes-web/workspace/web/.venv/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/commands/install.py", line 256, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/var/lib/jenkins/jobs/hermes-web/workspace/web/.venv/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/req.py", line 1018, in prepare_files
    self.unpack_url(url, location, self.is_download)
  File "/var/lib/jenkins/jobs/hermes-web/workspace/web/.venv/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/req.py", line 1142, in unpack_url
    retval = unpack_http_url(link, location, self.download_cache, self.download_dir)
  File "/var/lib/jenkins/jobs/hermes-web/workspace/web/.venv/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/download.py", line 463, in unpack_http_url
    download_hash = _download_url(resp, link, temp_location)
  File "/var/lib/jenkins/jobs/hermes-web/workspace/web/.venv/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/download.py", line 380, in _download_url
    chunk = resp.read(4096)
  File "/usr/lib64/python2.6/socket.py", line 353, in read …
Run Code Online (Sandbox Code Playgroud)

python caching pip mirroring pypi

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

朱莉娅(Julia-lang)表现与Fortran和Python相比

我调整了一个简单的程序来计算和绘制Julia的运动漩涡以测试语言,我也用Python编写它没有特别的原因.

(免责声明:1.我读过的stackoverflow的每一次性能比较都因为没有全面/正确/写得好/相关等等而受到抨击 - 我不是假装这是一个真正的比较,我只想知道如何制作朱莉娅更快.2.我知道python可以优化,在Cython等中实现,这不是讨论的一部分,它只是在这里为Julia和Python中的等效函数的参考.)

代码和性能结果可以在一个要点中看到.

Julia的表现明显慢于Fortran.执行计算所花费的时间是(50000个时间步长):

Fortran: 0.051s
Julia: 2.256s
Python: 30.846s
Run Code Online (Sandbox Code Playgroud)

朱莉娅比Fortran慢得多(慢44倍),差距缩小但仍然显着,时间步长增加10倍(0.50s vs 15.24s).

这些结果与julia主页上显示的结果有很大不同.我究竟做错了什么?我可以修快朱莉娅吗?

我在Julia主页上浏览了Julia Performance Tips页面和比较背后的代码,没有什么能让我解决.

同样有趣的是,Julia加载PyPlot(5secsish !!)非常慢,而且比Python读取文本文件要慢得多.我可以做些什么来改善这些事情吗?

请注意,上面的时间不显示Julia和Python的加载时间,它只是计算AFAIK所需的原始时间 - 请参阅代码.对于fortran来说,这就是整个事情.在每种情况下,绘图都已大致关闭以允许速度比较.

计算机:Intel i7-3770,16GB RAM,SSD HD,操作系统:Ubuntu 13.10 64bit.,Fortran:gfortran,GNU Fortran(Ubuntu/Linaro 4.8.1-10ubuntu9)4.8.1,Julia:版本0.3.0-prerelease + 396 (2013-12-12 00:18 UTC),提交c5364db*(0天大师),x86_64-linux-gnu,Python:2.7.5+


更新:

根据ivarne的建议,我重新编写了Julia脚本(在上面的gist中更新):在函数中封装grunt工作,声明所有内容的类型,并在适用的情况下将矩阵的不同元素拆分为不同的数组.(我在很多地方都包含了Float64,因为我尝试了Float32,看看是否有帮助,但大部分时间都没有).

结果如下:

50,000 时间步骤:

Fortran: 0.051s (entire programme)
Julia: raw calc.: 0.201s, calc. and return (?): 0.758s, total exec.: 6.947s
Run Code Online (Sandbox Code Playgroud)

500,000 时间步骤:

Fortran: 0.495s (entire programme)
Julia: raw calc.: 1.547s, …
Run Code Online (Sandbox Code Playgroud)

performance fortran fortran77 julia

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

由于压缩权属空间,.hashcode()会返回不同的int吗?

如果我Object.hashcode()在某个对象上调用该方法,则返回该对象的内部地址(默认实现).该地址是逻辑地址还是物理地址?

在垃圾收集中,由于内存压缩,对象移位发生在内存中.如果我在GC之前和之后调用哈希码,它会返回相同的哈希码(它返回),如果是,那么为什么(因为压缩地址可能会改变)?

java garbage-collection

34
推荐指数
2
解决办法
2377
查看次数

PyPI是否区分大小写?

PyPI如何处理区分大小写?

例如,这个SO问题记录了PyPI foobar如果FooBar已经存在则拒绝新包.

pip针对pypi.python.org 运行似乎转换为包的规范案例:

$ pip install django
Downloading/unpacking django
  Downloading Django-1.7.tar.gz (7.5MB): 7.5MB downloaded
Run Code Online (Sandbox Code Playgroud)

或者:

$ pip install Django
Downloading/unpacking Django
  Downloading Django-1.7.tar.gz (7.5MB): 7.5MB downloaded
Run Code Online (Sandbox Code Playgroud)

但是,在我的virtualenv中,只有一些文件似乎属于规范案例:

$ ls ~/pyenvs/test_venv/lib/python2.7/site-packages/ | grep -i django
django/
Django-1.7-py2.7.egg-info/
Run Code Online (Sandbox Code Playgroud)

XML-RPC API期望什么?我是否可以一直认为http://pypi.python.org/simple/foohttp://pypi.python.org/simple/FoO都会返回HTTP 200?

PyPI在案例敏感方面的立场是否记录在案?

python pypi

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