小编Mar*_*Roy的帖子

在Jenkins Pipeline/Jenkinsfile中获取git分支名称

我创建了一个jenkins管道,它从scm中提取管道脚本.
我将分支说明符设置为' all',因此它建立在对任何分支的任何更改上.

如何从Jenkinsfile访问导致此构建的分支名称?

我尝试过的所有东西都回声无效

sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
Run Code Online (Sandbox Code Playgroud)

这总是如此master.

git branch jenkins jenkins-pipeline

39
推荐指数
9
解决办法
7万
查看次数

从Jenkins管道中的Groovy变量创建JSON字符串

我必须在Groovy中创建这个JSON文件.我尝试了很多东西(JsonOutput.toJson()/ JsonSlurper.parseText())但没有成功.

{
   "attachments":[
      {
         "fallback":"New open task [Urgent]: <http://url_to_task|Test out Slack message attachments>",
         "pretext":"New open task [Urgent]: <http://url_to_task|Test out Slack message attachments>",
         "color":"#D00000",
         "fields":[
            {
               "title":"Notes",
               "value":"This is much easier than I thought it would be.",
               "short":false
            }
         ]
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

这是为了向Slack发布Jenkins构建消息.

groovy json jenkins jenkins-pipeline

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

pg_table_size,pg_relation_size和pg_total_relation_size之间有什么区别?(PostgreSQL的)

有什么区别pg_table_size(),pg_relation_size()&pg_total_relation_size()

我理解文档中解释的基本差异,但它对我的表实际使用了多少空间意味着什么?

postgresql

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

如何在HTTP查询字符串中发送NULL?

我正在开发一个API,可以接受主要的三种数据类型作为查询字符串参数的值:boolean,string&numeric(integerfloat).默认情况下,一切都被检索为一个字符串(我认为没有办法解决这个问题),但参数配置了一个类型,以便我将它们转换为正确的类型.

我现在需要开始接受NULL作为值,对于所有三种数据类型,但我不确定最好的方法是什么.

有些人似乎不接受任何值为NULL(?param,没有=),但这对我来说并不适用:

  1. 我已经接受true了布鲁因,尽管可以改变.
  2. 它作为空字符串接收,这是string数据类型的有效值.

所以,这里有两个我能看到的选项,其中没有一个对我有用:

  1. 使用常量,如"NULL""~".这适用于布尔值和数字,但不适用于字符串,因为这可能是所需的字符串值.
  2. 使用空值.再次,这可以适用于布尔值和数字,但不适用于字符串,因为这可能是所需的字符串值.

似乎使用常量可能是我唯一的选择,并避免可以从字符串中禁止常量的问题.但这真的是唯一可行的选择吗?我希望有更好的方法.:(

编辑:我只是有另一个可能有用的想法,但我不确定它是如何被感知的.我认为它肯定会违反标准,很多人很可能不喜欢它,但到目前为止,我的问题会比任何其他解决方案更好.基本上,我们的想法是使用支持本机数据类型的JSON.我对POST请求没有这个问题,因为他们正在使用JSON.

因此,我们的想法是在查询字符串中使用JSON,基本上允许使用替代查询字符串来覆盖标准HTTP字符串.像:?_json={"foo":"bar","param":null}而不是?foo=bar&param=~.或者甚至可能完全接管查询字符串:?{"foo":"bar","param":null}.

standards http

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

使用默认值将NULL插入NOT NULL列

对于一些背景知识,我们使用Zend Framework 2Doctrine.Doctrine将始终插入NULL我们自己不填充的值.通常这可以,就好像字段有默认值,然后它应该使用此默认值填充字段.

对于我们运行MySQL 5.6.16的服务器之一,下面的查询运行并执行正常.虽然NULL被插入到不可为空的字段中,但MySQL会在插入时使用其默认值填充该字段.

在我们运行MySQL 5.6.20的另一台服务器上,我们运行下面的查询,它会因为抱怨'field_with_default_value'不能为空而失败.

INSERT INTO table_name(id, field, field_with_default_value) 
VALUES(id_value, field_value, NULL);
Run Code Online (Sandbox Code Playgroud)

Doctrine本身不支持将"DEFAULT"传递给它构建的查询,因此这不是一个选项.我认为这必须是一个MySQL服务器的东西,看起来好像它在一个版本但不是另一个版本中工作正常,但不幸的是我不知道这可能是什么.我们的SQL模式在两个服务器上都是相同的('NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION').

我应该提一下,如果我实际在Workbench中运行上面的SQL,它仍然无法以相同的方式工作.所以这不是一个真正的Doctrine问题,但绝对是某种类型的MySQL问题.

任何有关这方面的帮助将不胜感激.

php mysql default-value doctrine-orm zend-framework2

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

如何列出目录中最近删除的文件?

我甚至不确定这是否很容易,但我想列出最近从目录中删除的文件,如果可能的话递归.

我正在寻找一种不需要创建包含原始目录结构快照的临时文件的解决方案,因为写入访问可能并不总是可用.编辑:如果通过将快照存储在shell变量而不是文件中来实现相同的结果,那将解决我的问题.

就像是:

find /some/directory -type f -mmin -10 -deletedFilesOnly

编辑:操作系统:我正在使用Ubuntu 14.04 LTS,但命令很可能是在各种Linux机箱或Docker容器中运行,其中大部分或全部都应该使用ext4,我很可能不会有权进行修改.

linux bash shell command-line

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

使用 Snowflake+DBT 时随机发生无效的 JWT 令牌

我们已经使用带有密钥对身份验证的Snowflake+DBT很长时间了,并且从未遇到过任何问题。

\n

最近,我们开始在某些型号上遇到随机连接错误:

\n
250001 (08001): Failed to connect to DB: account.region.snowflakecomputing.com:443. JWT token is invalid.\n
Run Code Online (Sandbox Code Playgroud)\n

大多数模型都可以工作,但其中一些可能会失败。这种情况可能发生在任何模型上,而且永远不会是同一个模型——有时是第一个模型,有时是最后一个模型,有时是一堆模型。它发生在运行多个模型或运行单个模型时。

\n

它非常不一致,而且似乎没有任何模式。有时它有效,有时则无效。

\n

我们还尝试过 1、4 或 8 个线程,无论如何都会发生这种情况。

\n

显然,凭据或配置 \xe2\x80\x94 没有任何问题,否则什么都不会运行。所以我认为 DBT 处理连接的方式一定有问题。

\n

有趣的是,错误仅发生在本地(到目前为止)。我们在 DBT Cloud 运行中还没有看到它。

\n

两种情况下的 DBT 版本均为 0.20.2。我们尝试了其他版本(0.21.0、0.20.0 和 0.19.1),但问题仍然存在。我不知道为什么我们会遇到这种情况,因为我们之前使用过这些其他版本,没有任何问题。

\n

它与这个问题类似,只是在我们的例子中它根本没有一致地发生。我们尝试“无区域”连接(使用Snowflake Organizations),但没有任何区别:

\n
250001 (08001): Failed to connect to DB: organization-account.snowflakecomputing.com:443. JWT token is invalid.\n
Run Code Online (Sandbox Code Playgroud)\n

我们可以做些什么来解决这个问题吗?

\n

编辑:发生错误时,模型会挂起 60 秒,直到出现错误。

\n

编辑2:我认为当我们开始使用DBT 提供的 Docker 镜像时,错误可能已经开始发生。不确定它们到底出了什么问题,但我们会尝试回到我们自己的自定义图像,看看是否有效。

\n

snowflake-cloud-data-platform dbt

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

如何找到目录中最新修改文件的时间戳(递归)?

我正在处理一个需要在对指定目录中的任何文件进行任何更改时以递归方式重新启动的进程。

我想避免使用任何沉重的东西,比如inotify. 我不需要知道哪些文件被更新,而只需要知道文件是否被更新。此外,我不需要收到每次更改的通知,而只需要知道在特定时间间隔内是否发生了任何更改,由流程动态确定。

必须有一种方法可以使用相当简单的 bash 命令来做到这一点。我不介意多次执行命令;性能不是我对这个用例的主要关注点。但是,命令越快越好。

我需要的唯一输出是上次更改的时间戳,因此我可以将其与存储在内存中的时间戳进行比较。

我也愿意接受更好的解决方案。

linux filesystems bash find

6
推荐指数
2
解决办法
4284
查看次数

如何使用jenkins管道共享库定义全局变量或常量?

尽管我能够定义方法,但到目前为止,使用Jenkins共享库定义变量似乎尚未解决。

我加上/vars/True.groovy这个身体

def call() {
    return true
}
Run Code Online (Sandbox Code Playgroud)

现在在Jenkinsfile中,我尝试测试它是否按预期工作:

println "evaluation ${ true == True }"
Run Code Online (Sandbox Code Playgroud)

但是令人惊讶的是,这失败了true != class True。我的印象是true == True()可能有用,但这不是重点,我需要一个真正的变量,因为整个目的是避免由于人们使用错误的大小写而导致的一些错误。

那么魔术是什么呢?

jenkins-pipeline

6
推荐指数
3
解决办法
4599
查看次数

PHP PCNTL - pcntl_signal()的restart_syscalls参数有什么作用?

我一直在使用PHP的PCNTL扩展一段时间,但无法弄清楚restart_syscalls参数的pcntl_signal()作用.我试着环顾互联网,但找不到任何信息.所有文件都说:

"指定在此信号到达时是否应使用系统调用重启."

什么是"系统调用重启"?

php signals pcntl

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