首页 > 解决方案 > 传递给 jest 的 TZ 变量未对 Jenkins docker slaves 生效

问题描述

我正在使用 docker slaves 通过 Docker 插件为 jenkins 构建。我的构建没有问题,但是在一个存储库中,我们将 TZ 变量传递给 jest,如下所示,用于特定的测试套件。该变量未生效并导致测试失败。

> @different/different-ui@1.6.0 test /home/jenkins/agent/workspace/ferent_CI_wtml_25hf0e_for_mahela
> TZ=Australia/Sydney jest --config jest.config.js

测试失败如下图

PASS src/components/data-molecule/data-molecule.spec.tsx
PASS src/components/button/button.spec.tsx
PASS src/components/text-box/text-box.spec.tsx
PASS src/utils/cascade.spec.tsx
PASS src/components/widget/widget.spec.tsx
PASS src/components/clickable/clickable.spec.tsx
PASS src/components/tag/tag.spec.tsx
FAIL src/components/table-cell-date-value/table-cell-date-value.spec.tsx
  ��� <TableCellDateValue /> ��� cell convert the provided date time value correctly

    Expected value   "Aug 1, 2019 - 12:55 pm"
    Received:
      "Aug 1, 2019 - 2:55 am"

    Message:
      expected <TableCellDateValue /> to have text 'Aug 1, 2019 - 12:55 pm', but it has 'Aug 1, 2019 - 2:55 am'      
         
         HTML:
         
         <span id={[undefined]} className={[undefined]}>Aug 1, 2019 - 2:55 am</span>

    Difference:

    - Expected
    + Received

    - Aug 1, 2019 - 12:55 pm
    + Aug 1, 2019 - 2:55 am

我尝试了几件事来克服这个

  1. 尝试如下设置时区 如何在我的 Jest 配置中设置时区?

  2. 试图在 docker 文件本身的 bash_profile 中导出环境变量 TZ

RUN ["/bin/bash", "-c", "echo 'export TZ=Australia/Sydney' >> ~/.bash_profile"]

我不确定 docker 插件在连接到容器时是使用交互式 shell 还是非交互式 shell。

到目前为止,所有这些努力都没有成功。

标签: reactjsjenkinsjestjsdocker-containerjenkins-slave

解决方案


推荐阅读