由于 "Cannot change ownership to uid 3434",无法将 CircleCI Workspace 从 Windows 附加到 Linux

Can't attach CircleCI Workspace from Windows to Linux due to "Cannot change ownership to uid 3434"

我在 Linux 和 Windows 执行程序类型之间使用 CircleCI 的持久工作区功能来 运行 具有相同构建文件夹的作业。我能够从 Linux 转到 Windows 但是当我从 Windows 转到 Linux 时,当 CircleCI 尝试附加工作区时出现此错误。

正在应用工作区图层:

  9ba3eddc-3658-43c2-858b-aea39250af3e
  25c476af-8804-4125-b979-05a62a9ac204

Error applying workspace layer for job 25c476af-8804-4125-b979-05a62a9ac204: Error extracting tarball /tmp/workspace-layer-25c476af-8804-4125-b979-05a62a9ac204854634413 : tar: project/.circleci/config.yml: Cannot change ownership to uid 3434, gid 197121: Invalid argument

查看错误很明显系统上不存在 UID。我尝试 运行 命令来创建相同的 UID/GID 它出错了,但我仍然遇到无法更改所有者的问题。

我原以为 CircleCI 会移动文件并在提取时忽略用户:组部分,因为您不能保证 UID/GID 存在。 我开了一张支持票,但希望能更快地解决这个问题。

我找到了这个问题的解决方案,它强制 CircleCI 使用 TAR_OPTIONS 环境变量来强制选项忽略 owner/group。 这是我在上一个作业 运行 为 Window.

时添加到附加工作区的作业步骤中的内容
build-app:
    build:
    docker:
      - image: Dockerhub.com/myrepo/myimage:1.0.0
        environment:
          TAR_OPTIONS: --no-same-owner

使用 TAR_OPTIONS 环境注入选项 --no-same-owner 允许 CircleCI 毫无问题地提取 tarball。