【问题标题】:How to add attachment (file name with prefix) to jira using curl from teamcity如何使用来自teamcity的curl将附件(带前缀的文件名)添加到jira
【发布时间】:2020-07-25 08:08:57
【问题描述】:

我想将 pdf 文件从 teamcity 附加到 jira,如何附加带有前缀的 pdf 文件,例如finalExecution202005.pdf ? (这里的前缀'finalExecution'总是固定的)

工作命令: 即 curl -D- -u %env.JIRAUSER%:%env.JIRAPWD% -X POST -H "X-Atlassian-Token: no-check" -F "file=@finalExecution202005.pdf" http://myhost/rest/api/2/issue/%env.JIRAID%/attachments

每次运行文件名更改后,希望通过前缀搜索它

不工作的命令: 即 curl -D- -u %env.JIRAUSER%:%env.JIRAPWD% -X POST -H "X-Atlassian-Token: no-check" -F "file=@finalExecution*.pdf" http://myhost/rest/api/2/issue/%env.JIRAID%/attachments

我必须在文件名中使用通配符,但不确定它是如何工作的? 或一些逻辑,首先搜索确切的文件名,然后将该名称替换为 url cmd

附加信息我正在 Windows 代理上运行我的所有步骤

【问题讨论】:

  • 那么如果这个命令有效,会有什么问题呢?
  • @daggett.. 是上面的命令工作来自 teamcity bcz 这里我已经指定了确切的文件名。但是每次运行后我的文件名都会改变..所以原因想要搜索带有前缀的文件然后将其用于上传

标签: teamcity jira


【解决方案1】:

您正在寻找的解决方案既不与 Jira 相关,也不与 cURL 相关。您只需要告诉 Windows 在您的命令中扩展通配符。这在 Windows 上是不可能的(在 Linux 上不是问题)。

您可以通过使用 FOR 循环并遍历目录中的文件,然后将 last 找到的文件(因为在 DIR 命令中使用 /OD)存储到变量中来解决此问题。

您将需要更多命令来实现此目的。编写多个命令(如果 TeamCity 允许)或准备您自己的包含多个命令的批处理文件:

FOR /F "usebackq delims=" %%f IN (`DIR /B /OD finalExecution*.pdf`) DO SET MY_FILE=%%f
curl -D- -u %env.JIRAUSER%:%env.JIRAPWD% -X POST -H "X-Atlassian-Token: no-check" -F "file=%MY_FILE%"

注意,如果您在 TeamCity 的命令行中运行,请在 DOS 批处理文件中使用双百分号 (%%f) 或单号 (%f)。

有关此主题的答案:

编辑: 你可以这样在一行上运行上面的命令:

F "usebackq delims=" %f IN (`DIR /B /OD finalExecution*.pdf`) DO SET MY_FILE=%f & curl -D- -u %env.JIRAUSER%:%env.JIRAPWD% -X POST -H "X-Atlassian-Token: no-check" -F "file=%MY_FILE%"

请注意,%%f 变量已更改为 %f,因为它不在批处理文件中。

【讨论】:

  • 如果我们使用批处理文件则错误,即 curl 命令不被识别为内部或外部。 & 如果我们把它放在 teamcity 步骤然后 teamcity 创建新的变量,即 My_file 具有空值(它不允许我运行作业,除非它有一些值)
  • 实际上,您可以使用& 符号将命令放在一行中。我已经更新了上面的答案。
【解决方案2】:

作为 teamcity 步骤的解决方案:sh -c "FILENAME=$(la final*); curl -D -k -u %env.jira_username%:%env.jira_password% -X post -H \"X-Atlassian-令牌:无检查\" -F \"file=@$FILENAME\" %env.JIRA_ENDPOINT%/rest/api/2/issue/%env.JIRA_TEST_EXECUTION_KEY%/attachments"

【讨论】:

  • 这看起来更像是一个 Linux 命令,它可以在你的 Windows 代理上运行吗?
  • 如果您在 Windows 中安装了 Linux 支持(例如 cygwin、mingw64),那么您应该在 OP 中指定它以简化答案并节省回答者的时间。最简单的答案是curl -D- -u %env.JIRAUSER%:%env.JIRAPWD% -X POST -H "X-Atlassian-Token: no-check" -F "file=@`ls finalExecution*.pdf`"
猜你喜欢
  • 2015-03-17
  • 2021-09-26
  • 2022-11-16
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 2021-05-27
  • 2015-03-20
  • 1970-01-01
相关资源
最近更新 更多