【问题标题】:How to add two different time in shell script如何在shell脚本中添加两个不同的时间
【发布时间】:2018-01-24 07:03:23
【问题描述】:

我想在 shell 脚本中添加 2 个不同的时间,但我不知道该怎么做 场景是获取 jenkins 构建的构建开始时间、构建结束时间和构建执行时间。 我可以获得构建开始时间和构建执行时间,因此要获得构建结束时间,我必须添加构建开始时间和执行时间。 因为这不是一个正常的添加我不知道如何添加这两个 对此有任何帮助

build_start=11:17 AM
build_duration=07m:52sec
build_end= $build_start + $build_duration

【问题讨论】:

    标签: shell jenkins


    【解决方案1】:

    另一种方法是触摸标记文件以获得您想要计算持续时间的任何部分。

    (更新:假设您使用的是 linux)

    rm "${WORKSPACE}/${BUILD_NUMBER}-start" || true
    touch "${WORKSPACE}/${BUILD_NUMBER}-start"
    
    ...
    # duration is current time - start
    # see https://stackoverflow.com/questions/19463334/how-to-get-time-since-file-was-last-modified-in-seconds-with-bash
    echo $(($(date +%s) - $(date +%s -r "${WORKSPACE}/${BUILD_NUMBER}-start")))
    

    【讨论】:

      【解决方案2】:

      您可以使用两个构建步骤。但请注意,结果时间仍然不准确。 由于每个 shell 步骤都使用自己的环境,因此您需要告诉最后的 shell 步骤使用什么环境。这可以通过“注入环境变量”步骤来完成。

      您的问题的解决方案:

      1) 执行 shell 步骤并获取你的 $build_start,然后

      build_start=$(date +%s)
      echo "build_start=$build_start" > time.env
      

      2) 你的工作构建步骤在这里

      3) 添加构建步骤“注入环境变量”并指向之前创建的“time.env”的位置

      3) 执行 shell 步骤以计算构建持续时间并回显它

          #you now can access injected environment variable ${variable}
          end_time=${build_start}
          build_end=$(date +%s)
          runtime=$(($end_time - $start_time))
          echo Build duration: $runtime seconds.
      

      【讨论】:

      • 我的 jenkins 实例中没有安装 EnvInject 插件。我可以不使用插件来执行此操作吗?
      • 如果你想使用 shell 步骤 - 那就不行。不安装插件可以看看这个话题:stackoverflow.com/questions/13799652/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多