由于“无法将所有权更改为uid 3434”,因此无法将CircleCI Workspace从Windows附加到Linux

时间:2019-09-06 20:09:42

标签: tar circleci workspace

我正在使用CircleCI的持久性工作区功能在Linux和Windows执行程序类型之间运行具有相同构建文件夹的作业。我可以从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移动文件并在提取文件时忽略user:group部分,因为您不能保证UID / GID存在。 我打开了一张支持票,但希望对此问题有更快的解决方案。

1 个答案:

答案 0 :(得分:0)

我找到了解决此问题的方法,它迫使CircleCI使用TAR_OPTIONS环境变量来强制选项忽略所有者/组。 这是我添加到作业步骤的步骤,当上一个作业运行为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。