小编sin*_*spd的帖子

将Jenkins中的作业输出传递给另一个作业

我对此做了很多研究,但找不到令人满意的答案.以下过程将是自动的,每晚重复,因此用户在运行时不能手动传递任何参数.父作业调用阻塞链中的所有以下子进程我的作业层次结构设置如下,主要作业和子进程如下:

Run-Tests-EveryNight(父作业) - > Create-A-Virtual-Machiene - > Run-Tests-on-VM

接下来,当您创建VM时,它会被分配一个生成的IP地址,我需要将该IP地址传递给Run-Tests-On-VM作为参数,但我似乎无法找到任何方法来执行此操作.

澄清:有些人发现问题不清楚:我问如何将动态创建的虚拟机IP地址作为参数传递给不同的作业(子进程)

注意:我已经阅读过有关复制工件的内容,但我觉得它在这种情况下不起作用(加上写入然后从文件中读取对于简单的参数传递来说太过分了.)

我觉得应该有一个非常简单的方法来做到这一点......

更新:建议使用参数化触发插件.我已经在使用并使用以下bash脚本来复制属性

# Create override properties file for functional tests
FILENAME="user.properties"
cd "path of the file goes here"
rm -f $FILENAME
echo "FQDN=$VM_FQDN" >> $FILENAME
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何写入此文件(或创建新的属性文件,将IP地址保存为构建后的操作

答:按照下面的答案,使用这些线程中的任何一个来修改属性文件或在Jenkins中使用注入选项 存档hudson/jenkins中的工件

如何根据我的个人资料更改maven中的.properties文件?

谢谢

jenkins

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

Dotty 如何决定如何推断/何时扩大联合类型?

此处讨论了扩大联合类型但我似乎无法找到以下案例的答案

让我们从以下内容开始

val x = List(1, 2, "a")
Run Code Online (Sandbox Code Playgroud)

这个异构列表被推断为List[Any]就像在 Scala 2 中一样

然而以下

val x2 = List(List(1, 2), Vector("a", "b"))
Run Code Online (Sandbox Code Playgroud)

推断为 List[scala.collection.immutable.AbstractSeq[Int | String]]

这是相当混乱的行为。为什么Any在一种情况下会推断出两种不相交类型的 LUB ,而在另一种情况下会推断出联合类型?

如果这只是一个设计决定,是否有任何此类情况需要人们注意?

scala type-inference dotty union-types scala-3

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

Http4s Client Encode Entity as x-www-form-urlencoded Recursively

I have a request like the following

val request =
    Request[IO](
      method = POST,
      uri = Uri.uri("..."),
      headers = Headers(
        Authorization(BasicCredentials("...", "..."))
      )
    )
    .withEntity(PaymentIntentRequest2(2000, "usd"))
Run Code Online (Sandbox Code Playgroud)

我正在查看源代码,看起来它withEntity继承了嵌套的标头EntityDecoder,因此上面的代码默认为Content-Type: application/json. 好像我明确地传递UrlForm一切都很好。

不幸的是,我所点击的 API 预期数据为,x-www-form-urlencoded并且考虑到目标 API 与所有不同端点/请求的复杂性,我希望找到一种将给定案例类编码为表单的方法。最好的方法是什么?

我努力了:

  1. 显式指定Content-Type但这不起作用,因为继承类型优先

  2. Product构建从到 的隐式泛型转换UrlForm(目前是扩展方法)

implicit class UrlFormEncode[+B <: Product](val u: B) {
    def asUrlForm: UrlForm =
      u.productElementNames
        .zip(u.productIterator)
        .foldLeft(UrlForm()) { (a, b) =>
          a.combine(UrlForm(b._1 -> b._2.toString))
        }
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是 …

scala circe http4s http4s-circe

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