GitHub Actions 意外的 bash 可读测试结果

Ora*_*tan 5 linux archlinux docker github-actions

移动电源

我有一个 GitHub Actions 工作流程,它最近在我没有进行更改的情况下停止工作。错误:

==> ERROR: /etc/makepkg.conf not found.
    Aborting...
Run Code Online (Sandbox Code Playgroud)

这是从运行# sudo -Eu builder makepkg --printsrcinfo

日志的顺序似乎是错误的,但在较早的日志中是正确的(可能是由于ls -l输出量大)。

此错误的来源似乎是libmakepkg/util/config.sh.in

==> ERROR: /etc/makepkg.conf not found.
    Aborting...
Run Code Online (Sandbox Code Playgroud)

我在入口点脚本中添加了以下内容:

    # Source the config file; fail if it is not found
    if [[ -r $MAKEPKG_CONF ]]; then
        source_safe "$MAKEPKG_CONF"
    else
        error "$(gettext "%s not found.")" "$MAKEPKG_CONF"
        plainerr "$(gettext "Aborting...")"
        exit $E_CONFIG_ERROR
    fi
Run Code Online (Sandbox Code Playgroud)

builder用户在创建build.sh

echo "Writing SRCINFO..."

# Debug
echo "---"
ls -l /
echo "---"
ls -l /etc
echo "---"
sudo -Eu builder cat /etc/makepkg.conf
echo "---"
sudo -Eu builder /bin/bash -c "[[ -r "/etc/makepkg.conf" ]] && echo 1 || echo 0"
echo "---"

sudo -Eu builder makepkg --printsrcinfo > .SRCINFO
Run Code Online (Sandbox Code Playgroud)

我有:

Setting permissions...
Writing SRCINFO...
---
total 52
lrwxrwxrwx   1 root root    7 Feb  1 19:19 bin -> usr/bin
drwxr-xr-x   2 root root 4096 Jan 19 01:32 boot
drwxr-xr-x   5 root root  340 Feb  7 11:58 dev
-rwxr-xr-x   1 root root  836 Feb  7 11:57 entrypoint.sh
drwxr-xr-x   1 root root 4096 Feb  7 11:58 etc
drwxr-xr-x   6 root root 4096 Feb  7 11:58 github
drwxr-xr-x   1 root root 4096 Feb  7 11:57 home
lrwxrwxrwx   1 root root    7 Feb  1 19:19 lib -> usr/lib
lrwxrwxrwx   1 root root    7 Feb  1 19:19 lib64 -> usr/lib
drwxr-xr-x   2 root root 4096 Jan 19 01:32 mnt
drwxr-xr-x   2 root root 4096 Jan 19 01:32 opt
dr-xr-xr-x 159 root root    0 Feb  7 11:58 proc
drwxr-x---   2 root root 4096 Jan 19 01:32 root
drwxr-xr-x   1 root root 4096 Feb  7 11:58 run
lrwxrwxrwx   1 root root    7 Feb  1 19:19 sbin -> usr/bin
drwxr-xr-x   4 root root 4096 Feb  1 19:19 srv
dr-xr-xr-x  12 root root    0 Feb  7 11:58 sys
drwxrwxrwt   2 root root 4096 Jan 19 01:32 tmp
drwxr-xr-x   1 root root 4096 Feb  7 11:57 usr
drwxr-xr-x   1 root root 4096 Feb  1 19:19 var
---
total 640
-rw-r--r-- 1 root root      0 Jan 19 01:32 arch-release
drwxr-xr-x 3 root root   4096 Feb  1 19:19 audit
-rw-r--r-- 1 root root     28 Dec 20 18:44 bash.bash_logout
-rw-r--r-- 1 root root    618 Dec 20 18:44 bash.bashrc
-rw-r--r-- 1 root root    447 Dec  2 16:02 bindresvport.blacklist
drwxr-xr-x 2 root root   4096 Dec 16 14:38 binfmt.d
drwxr-xr-x 4 root root   4096 Feb  1 19:19 ca-certificates
-rw------- 1 root root    722 Jan 19 01:32 crypttab
drwxr-xr-x 2 root root   4096 Feb  1 19:19 default
drwxr-xr-x 2 root root   4096 Jan  7 19:51 depmod.d
-rw-r--r-- 1 root root    685 Jan 31 20:31 e2scrub.conf
-rw-r--r-- 1 root root     97 Jan 13 22:50 environment
-rw-r--r-- 1 root root   1362 Jan 20 21:31 ethertypes
-rw-r--r-- 1 root root    126 Jan 19 01:32 fstab
-rw-r--r-- 1 root root   2584 Feb  6 00:09 gai.conf
-rw-r--r-- 1 root root    626 Feb  7 11:57 group
-rw-r--r-- 1 root root    610 Jan 31 00:20 group-
-rw------- 1 root root    558 Feb  7 11:57 gshadow
-rw------- 1 root root    546 Jan 31 00:20 gshadow-
-rw-r--r-- 1 root root     73 Jan 19 01:32 host.conf
-rw-r--r-- 1 root root     13 Feb  7 11:58 hostname
-rw-r--r-- 1 root root    174 Feb  7 11:58 hosts
-rw-r--r-- 1 root root    714 Dec  8 17:48 inputrc
drwxr-xr-x 2 root root   4096 Feb  1 19:19 iproute2
drwxr-xr-x 2 root root   4096 Feb  1 19:19 iptables
-rw-r--r-- 1 root root     20 Jan 19 01:32 issue
drwxr-xr-x 3 root root   4096 Feb  1 19:19 kernel
drwxr-xr-x 2 root root   4096 Jul  7  2020 keyutils
-rw-r--r-- 1 root root    369 Jan 14 00:32 krb5.conf
-rw-r--r-- 1 root root  18096 Feb  7 11:57 ld.so.cache
-rw-r--r-- 1 root root    117 Jan 19 01:32 ld.so.conf
drwxr-xr-x 1 root root   4096 Feb  7 11:57 ld.so.conf.d
-rw-r----- 1 root root    191 Jan 13 22:33 libaudit.conf
drwxr-xr-x 2 root root   4096 Feb  1 19:19 libnl
-rw-r--r-- 1 root root     17 Jan 31 00:19 locale.conf
-rw-r--r-- 1 root root     18 Jan 31 00:19 locale.gen
-rw-r--r-- 1 root root   9984 Feb  6 00:09 locale.gen.pacnew
-rw-r--r-- 1 root root   5645 Sep  7 13:42 login.defs
-rw-r--r-- 1 root root   5792 Jul  1  2020 makepkg.conf
-rw-r--r-- 1 root root    812 Jan 31 20:31 mke2fs.conf
drwxr-xr-x 2 root root   4096 Jan  7 19:51 modprobe.d
drwxr-xr-x 2 root root   4096 Dec 16 14:38 modules-load.d
-rw-r--r-- 1 root root      0 Jan 19 01:32 motd
lrwxrwxrwx 1 root root     12 Feb  7 11:58 mtab -> /proc/mounts
-rw-r--r-- 1 root root    767 Dec  2 16:02 netconfig
-rw-r--r-- 1 root root   2717 Feb  6 00:09 nscd.conf
-rw-r--r-- 1 root root    328 Jan 19 01:32 nsswitch.conf
drwxr-xr-x 1 root root   4096 Feb  7 11:57 openldap
lrwxrwxrwx 1 root root     19 Feb  1 19:19 os-release -> /usr/lib/os-release
-rw-r--r-- 1 root root   3264 Feb  7 11:57 pacman.conf
-rw-r--r-- 1 root root   2883 Jul  1  2020 pacman.conf.pacnew
drwxr-xr-x 1 root root   4096 Feb  7 11:57 pacman.d
drwxr-xr-x 1 root root   4096 Feb  7 11:57 pam.d
-rw-r--r-- 1 root root    744 Feb  7 11:57 passwd
-rw-r--r-- 1 root root    699 Jan 31 00:20 passwd-
drwxr-xr-x 2 root root   4096 Feb  1 19:19 pkcs11
-rw-r--r-- 1 root root   1020 Jan 19 01:32 profile
drwxr-xr-x 1 root root   4096 Feb  7 11:57 profile.d
-rw-r--r-- 1 root root   3171 Jan  3 17:14 protocols
-rw-r--r-- 1 root root   1814 Jul  7  2020 request-key.conf
drwxr-xr-x 2 root root   4096 Jul  7  2020 request-key.d
-rw-r--r-- 1 root root    649 Feb  7 11:58 resolv.conf
-rw-r--r-- 1 root root   1634 Feb  6 00:09 rpc
-rw-r--r-- 1 root root    139 Jan 19 01:32 securetty
drwxr-xr-x 2 root root   4096 Feb  1 19:19 security
-rw-r--r-- 1 root root 297708 Jan  3 17:14 services
-rw------- 1 root root    375 Feb  7 11:57 shadow
-rw------- 1 root root    346 Jan 31 00:20 shadow-
-rw-r--r-- 1 root root     83 Jan 19 01:32 shells
drwxr-xr-x 2 root root   4096 Feb  1 19:19 skel
drwxr-xr-x 5 root root   4096 Feb  1 19:19 ssl
-rw-r--r-- 1 root root   3975 Jan 26 18:34 sudo.conf
-r--r----- 1 root root   3160 Feb  7 11:57 sudoers
drwxr-x--- 2 root root   4096 Jan 26 18:34 sudoers.d
-rw-r--r-- 1 root root   6169 Jan 26 18:34 sudo_logsrvd.conf
drwxr-xr-x 2 root root   4096 Dec 16 14:38 sysctl.d
drwxr-xr-x 1 root root   4096 Feb  7 11:57 systemd
drwxr-xr-x 2 root root   4096 Dec 16 14:38 tmpfiles.d
drwxr-xr-x 1 root root   4096 Feb  7 11:57 udev
drwxr-xr-x 1 root root   4096 Feb  1 19:19 X11
-rw-r--r-- 1 root root    642 May  7  2020 xattr.conf
drwxr-xr-x 1 root root   4096 Feb  1 19:19 xdg
drwxr-xr-x 2 root root   4096 Feb  1 19:19 xinetd.d
---
#!/hint/bash
#
# /etc/makepkg.conf
#
...
SRCEXT='.src.tar.gz'
---
0
---
==> ERROR: /etc/makepkg.conf not found.
    Aborting...
Run Code Online (Sandbox Code Playgroud)

( 的内容/etc/makepkg.conf被连接。)

我也意外地[[ -r "/etc/makepkg.conf" ]] && echo 1 || echo 0(以 root 身份)做了,我也得到了0.

文件怎么可能不可读但我可以 cat?我还尝试在本地容器中运行完全相同的命令,但无法重现此问题,但自 GitHub Actions 启动以来,每次运行都会发生这种情况。

这让我认为 Actions 设置引起了问题,但似乎没有什么奇怪的:

/usr/bin/docker build -t 442333:35a065f0b9f356b32f2852ba2f6b7296 -f "/home/runner/work/visual-studio-code-insiders-arch/visual-studio-code-insiders-arch/./.github/actions/pkg/Dockerfile" "/home/runner/work/visual-studio-code-insiders-arch/visual-studio-code-insiders-arch/.github/actions/pkg"
Run Code Online (Sandbox Code Playgroud)
/usr/bin/docker run --name a065f0b9f356b32f2852ba2f6b7296_baf94b --label 442333 --workdir /github/workspace --rm -e pythonLocation -e LD_LIBRARY_PATH -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/visual-studio-code-insiders-arch/visual-studio-code-insiders-arch":"/github/workspace" 442333:35a065f0b9f356b32f2852ba2f6b7296
Run Code Online (Sandbox Code Playgroud)

Mic*_*opp 2

感谢您分享这个。我有完全相同的问题。

我在我的中添加了以下内容Dockerfile

RUN sed -i 's/\tif \[\[ -r $MAKEPKG_CONF \]\]; then/\tif \[\[ -f $MAKEPKG_CONF \]\]; then/' /usr/share/makepkg/util/config.sh
Run Code Online (Sandbox Code Playgroud)

它取代了检查读取权限 ( -r) 来检查文件是否存在以及是否是常规文件 ( -f)。

现在我的 github 操作克服了这个特定位置,但在下一次检查时失败:

==> ERROR: You do not have write permission for the directory $BUILDDIR (/tmp/aurutils).
    Aborting...
Run Code Online (Sandbox Code Playgroud)

这不是一个解决方案,也没有回答根本问题,但我希望它无论如何都能有所帮助。