gpt4 book ai didi

Github Action /缓存@v2 : unrecognized option: posix in the post job

转载 作者:行者123 更新时间:2023-12-05 02:49:03 30 4
gpt4 key购买 nike

我正在使用 Github Actions 在我的项目中实现 CI 管道。目前,我正在尝试使用 actions/cache@v2 来缓存 yarn cache dir 以改善管道时间。不幸的是,总是运行 actions/cache@v2 我在作业后收到错误消息:/bin/tar: unrecognized option: posix。完整日志为:

Post job cleanup.
/usr/bin/docker exec 4decc52e7744d9ab2e81bb24c99a830acc848912515ef1e86fbb9b8d5049c9cf sh -c "cat /etc/*release | grep ^ID"
/bin/tar --posix -z -cf cache.tgz -P -C /__w/open-tuna-api/open-tuna-api --files-from manifest.txt
/bin/tar: unrecognized option: posix
BusyBox v1.31.1 () multi-call binary.

Usage: tar c|x|t [-ZzJjahmvokO] [-f TARFILE] [-C DIR] [-T FILE] [-X FILE] [--exclude PATTERN]... [FILE]...

Create, extract, or list files from a tar file

c Create
x Extract
t List
-f FILE Name of TARFILE ('-' for stdin/out)
-C DIR Change to DIR before operation
-v Verbose
-O Extract to stdout
-m Don't restore mtime
-o Don't restore user:group
-k Don't replace existing files
-Z (De)compress using compress
-z (De)compress using gzip
-J (De)compress using xz
-j (De)compress using bzip2
-a (De)compress using lzma
-h Follow symlinks
-T FILE File with names to include
-X FILE File with glob patterns to exclude
--exclude PATTERN Glob pattern to exclude
Warning: Tar failed with error: The process '/bin/tar' failed with exit code 1

我是按照官方的例子action cache repository .这是我的 CI.yml 的片段

  # Configure cache
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"

- uses: actions/cache@v2
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-

因为上面的错误,没有创建缓存,也没有改善流水线时间。我试过更改 hasFiles 表达式和整个 key ,但没有成功。

我的问题是:我在使用 Action Cache 时是否犯了一些错误?谁能帮我解决这个问题?谢谢。

最佳答案

您的问题是您在基于 Alpine Linux 的容器中运行。 Alpine Linux 专为小尺寸而设计,因此它用 busybox(一种多调用二进制文件)中的工具替换了许多标准 GNU 实用程序。您的 tar 版本就是其中之一。

actions/cache@v2 操作使用 tar --posix,它告诉 tar 创建一个标准的 pax 格式存档。 pax 存档是 tar 存档的一种形式,它可以处理任意长的文件名、巨大的文件大小以及 tar 存档无法处理的其他类型的元数据。此格式由 POSIX 指定,是比 GNU tar 样式存档更好的选择,因为它适用于各种系统,并且不受特定实现的影响,而且功能更强大。

但是,作为 busybox 的一部分提供的 tar 版本不支持 --posix 选项,因此该命令失败。如果你想使用 actions/cache@v2 GitHub Action,那么你需要在你的 PATH 中提供一个版本的 GNU 或 BSD (libarchive) tar 在运行它之前,以便可以使用该命令而不是 busybox 的命令。

关于Github Action /缓存@v2 : unrecognized option: posix in the post job,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64184839/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com