GitHub Action 文件权限问题

今天在修补 tianheg/coding-interview-university 仓库的 Action 时,遇到一个问题:想把一个文件的内容输出到 issue 中,但是因为文件字符长度超过 65536 而报错。

    {"resource":"Issue","code":"custom","field":"body","message":"body is too long (maximum is 65536 characters)"}

所以通过以下命令,把文件中超出 60000 的部分移除。

    cat ./lychee/out.md | cut -c 1-60000 >> ./lychee/out.md

但是却不停地报错。

    /home/runner/work/_temp/3f19c8f9-894d-4ef8-aef0-f78d9fe01db7.sh: line 1: ./lychee/out.md: Permission denied

一开始,我改了很多次那个移除命令,比如加个 sudopermissions: write-all

后来,我想到可以加个 ls -al 试试看,结果听令我意外且惊喜。

    > ls -al
    total 188
    drwxr-xr-x 6 runner docker   4096 May  1 03:30 .
    drwxr-xr-x 3 runner docker   4096 May  1 03:29 ..
    drwxr-xr-x 8 runner docker   4096 May  1 03:29 .git
    drwxr-xr-x 3 runner docker   4096 May  1 03:29 .github
    -rw-r--r-- 1 runner docker    222 May  1 03:29 .gitignore
    -rw-r--r-- 1 runner docker  20130 May  1 03:29 LICENSE.txt
    -rw-r--r-- 1 runner docker 132734 May  1 03:29 README.md
    drwxr-xr-x 3 runner docker   4096 May  1 03:29 extras
    drwxr-xr-x 2 root   root     4096 May  1 03:30 lychee
    -rw-r--r-- 1 runner docker   6951 May  1 03:29 programming-language-resources.md

不错,权限为 root,所以需要添加命令。

    pwd
    ls -al
    sudo chown runner:docker -R ./lychee
    ls -al
    cat ./lychee/out.md | cut -c 1-60000 >> ./lychee/out.md

这样,这个问题就算解决了。

后记

cat ./lychee/out.md | cut -c 1-60000 >> ./lychee/out.md 似乎还保留了文件的原内容,如果想要覆盖源文件的内容需要把 >> 改为 >

欢迎通过「邮件」或者点击「这里」告诉我你的想法
Welcome to tell me your thoughts via "email" or click "here"