簡體   English   中英

(GitHub 操作,上傳工件)盡管授予了完全權限,但訪問被拒絕嘗試上傳文件

[英](GitHub Actions, Upload artifact) Access denied trying to upload a file despite giving it full permissions

描述問題

我正在執行一個從 docker 容器運行 API 測試的操作,該容器生成一個 report.html。 此報告保存到 docker 卷中。 在操作中,創建報告后,我嘗試在 report.html 上使用 actions/upload-artifact,使用其在主機卷中的位置的路徑。

問題是當操作嘗試執行此操作時Error: EACCES: permission denied, lstat /path/to/report.html我收到Error: EACCES: permission denied, lstat /path/to/report.html

我試圖通過在使用該操作之前執行sudo chmod ugo+rwx /path/to/report.html來解決此問題,但它沒有任何改變。 我認為使用 sudo 運行該操作會起作用,但這似乎不受支持。

如何繁殖

重現一個類似的例子,我只是在卷中創建一個 test.txt 文件。 github 操作如下所示:

name: Action
on:
  push:
    
jobs:
  example:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Compose Containers and Run 
        run: |
          docker-compose up --abort-on-container-exit
      
      - name: Fix permissions 
        run: |
          sudo chmod ugo+rwx /var/lib/docker/volumes/example_reports/_data/test.txt
        
      - name: Upload report.html
        uses: actions/upload-artifact@v2
        with:
          name: test.txt
          path: /var/lib/docker/volumes/example_reports/_data/test.txt

Dockerfile 很簡單:

FROM ubuntu

ENTRYPOINT [ "/bin/bash", "-c" ]

和 doker 組成:

version: "3.7"

services:
  example:
    build:
      context: .
    volumes:
      - reports:/home/reports
    command: ["touch /home/reports/test.txt"]

volumes:
  reports:

您的 docker 容器以 root 身份運行,因此以 root 身份創建文件。

您可以通過指定來更改它

    user: '1000:1000'

為您的 docker-compose 文件中的服務。

原來我想得太難了。 為了讓上傳工件工作,我需要做的就是首先將文件從卷目錄中復制出來。

在操作文件中,不要嘗試修復權限,只需在組合容器后執行此操作:

 - name: Copy out file from volume
   run: |
     sudo cp /var/lib/docker/volumes/example_reports/_data/test.txt /home/
  
  - name: Upload report.html
    uses: actions/upload-artifact@v2
    with:
      name: test.txt
      path: /home/test.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM