小编Ser*_*gey的帖子

触发Jenkins每2小时构建一次,但前提是有一个git提交

这是我遇到的问题 - 我需要每2小时触发一次作业构建,但前提是有一个git提交(如果没有活动则跳过).我可以单独解决它们但不确定如何一起解决它们 - 任何人都有任何好的想法?我能想出的唯一一个是每两个小时检查一次的cron作业,如果在那段时间内有一个git提交,则手动触发一个作业,但这看起来并不那么优雅.

任何好的想法都赞赏.

git jenkins

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

表达 - 抽象 - 控制解释

我正在寻找能够很好地解释PAC模式的论文.到目前为止,我发现的所有东西都非常零星.如果在某个地方有这种模式的实现,那也会很棒.谢谢

design-patterns

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

在OSGi包中嵌入jar时,忽略还是可选的结果?

当我构建一个包时,我需要在我的情况下嵌入几个罐子(http-core和http-client).使用maven和flex插件我得到了巨大的导入列表 - 一些我不需要的东西.截至目前,我只是否定了我不需要的软件包<Import-Package>,但我也可以使用Import-Package: resolution:=optional.我想知道什么是首选方式,两种方法的优点/缺点是什么?

embed osgi bundle

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

单击命令中的可选参数

我正在尝试用Click完成CLI解析方面不是很标准的事情,并且只能部分工作:

  • 主CLI有多个子命令(在“显示”和“检查”下面的示例中)
  • 这两个命令都可能具有可选参数,但是该参数在它们之前而不是之后
  • 我决定在“上方”组中处理该参数,并在上下文中传递值

样品:

import click

@click.group()
@click.argument('hostname', required=False)
@click.pass_context
def cli(ctx, hostname=None):
    """"""
    ctx.obj = hostname
    click.echo("cli: hostname={}".format(hostname))

@cli.command()
@click.pass_obj
def check(hostname):
    click.echo("check: hostname={}".format(hostname))

@cli.command()
@click.pass_obj
def show(hostname):
    click.echo("check: hostname={}".format(hostname))

if __name__ == '__main__':
    cli()
Run Code Online (Sandbox Code Playgroud)

具有主机名的部分起作用:

> pipenv run python cli.py  localhost check
cli: hostname=localhost
check: hostname=localhost
> pipenv run python cli.py  localhost show
cli: hostname=localhost
check: hostname=localhost
Run Code Online (Sandbox Code Playgroud)

但是没有主机名的那部分却没有:

> pipenv run python cli.py show
Usage: cli.py [OPTIONS] [HOSTNAME] COMMAND [ARGS]...

Error: Missing command.
Run Code Online (Sandbox Code Playgroud)

有人对我应该开始研究的方向有所了解吗?

python python-click

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

python subprocess.Popen和ssh端口在后台转发

我需要具有基本上模拟用户使用ssh创建端口转发的功能.所以,本质上应该像如下: -执行ssh -f -N -L 10000:gateway:11000 localhost -如果有来自该命令的输出,显示给用户,用户泵作为一个响应输入-完成我想出了下面的代码,几乎做什么,我需要:

    ssh_proc = Popen(['ssh', '-f', '-N', '-L', '10000:gateway:11000', 'localhost'], stdin=PIPE, stdout=PIPE)
stdoutdata, stderrdata = ssh_proc.communicate()
Run Code Online (Sandbox Code Playgroud)

但问题是它永远不会完成.我看到命令已执行并且已创建转发隧道,但仍然卡住了().我可以用Ctrl + C打破这个并得到这个:

    ^CTraceback (most recent call last):
  File "sshman.py", line 278, in <module>
    add(args.remote_host, args.remote_port, args.local_port, args.local_host)
  File "sshman.py", line 125, in add
    stdoutdata, stderrdata = ssh_proc.communicate()
  File "/usr/lib64/python2.7/subprocess.py", line 740, in communicate
    return self._communicate(input)
  File "/usr/lib64/python2.7/subprocess.py", line 1256, in _communicate
    stdout, stderr = self._communicate_with_poll(input)
  File "/usr/lib64/python2.7/subprocess.py", line 1310, in _communicate_with_poll
    ready = poller.poll()
KeyboardInterrupt
Run Code Online (Sandbox Code Playgroud)

由于我使用-f和ssh命令,它应该分叉连接.有没有办法在完成后中断communication()或是否有更优雅的解决方案? …

python ssh fork subprocess popen

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

标签 统计

python ×2

bundle ×1

design-patterns ×1

embed ×1

fork ×1

git ×1

jenkins ×1

osgi ×1

popen ×1

python-click ×1

ssh ×1

subprocess ×1