Действия Github Шаг Pylint не может создать каталог с тестовым заданием

На самом деле я пытаюсь завершить свое первое действие GitHub с развертыванием CI / CD и Heroku, и я получаю эту ошибку.

Изображение ошибки:  введите описание изображения здесь

Это мое публичное репо.
https://github.com/jovicon/the_empire_strikes_back_challenge < br /> Все обновлено в ветке разработки

Это моя тестовая работа: (полный файл)
Примечание. Когда я комментирую шаг Pylint, все работает нормально.

test:
    name: Test Docker Image
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Checkout master
        uses: actions/checkout@v1
      - name: Log in to GitHub Packages
        run: echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin docker.pkg.github.com
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: Pull image
        run: |
          docker pull ${{ env.IMAGE }}:latest || true
      - name: Build image
        run: |
          docker build \
            --cache-from ${{ env.IMAGE }}:latest \
            --tag ${{ env.IMAGE }}:latest \
            --file ./backend/Dockerfile.prod \
            "./backend"
      - name: Run container
        run: |
          docker run \
            -d \
            --name fastapi-tdd \
            -e PORT=8765 \
            -e ENVIRONMENT=dev \
            -e DATABASE_TEST_URL=sqlite://sqlite.db \
            -p 5003:8765 \
            ${{ env.IMAGE }}:latest
      - name: Pytest
        run: docker exec fastapi-tdd python -m pytest .
      - name: Pylint
        run: docker exec fastapi-tdd python -m pylint app/
      - name: Black
        run: docker exec fastapi-tdd python -m black . --check
      - name: isort
        run: docker exec fastapi-tdd /bin/sh -c "python -m isort ./*/*.py --check-only"

Я также помещаю сюда свой Dockerfile.prod:

# pull official base image
FROM python:3.8.3-slim-buster

# create directory for the app user
RUN mkdir -p /home/app

# create the app user
RUN addgroup --system app && adduser --system --group app

# create the appropriate directories
ENV HOME=/home/app
ENV APP_HOME=/home/app/web
RUN mkdir $APP_HOME
WORKDIR $APP_HOME

# set environment varibles
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV ENVIRONMENT prod
ENV TESTING 0

# install system dependencies
RUN apt-get update \
    && apt-get -y install netcat gcc postgresql \
    && apt-get clean

# install python dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt .
COPY ./dev-requirements.txt .
RUN pip install -r requirements.txt
RUN pip install -r dev-requirements.txt

# add app
COPY . .

RUN chmod 755 $HOME

# chown all the files to the app user
RUN chown -R app:app $APP_HOME

# change to the app user
USER app

# run gunicorn
CMD gunicorn --bind 0.0.0.0:$PORT app.main:app -k uvicorn.workers.UvicornWorker

person Jose Contreras    schedule 06.10.2020    source источник


Ответы (1)


Вы устанавливаете права доступа к каталогу $HOME на 755 от пользователя по умолчанию. chown -R app:app $APP_HOME нацелен только на $APP_HOME, который является только подкаталогом $HOME.

Как следствие, пользователь app не имеет прав на запись в $HOME, и pylint не может создать каталог /home/app/.pylint.d.

person riQQ    schedule 06.10.2020
comment
Я пробовал это: Dockerfile.prod RUN chmod 755 $HOME RUN chown -R app:app $HOME disapear не удалось создать сообщение, но строка ошибки с кодом выхода 30 все еще существует. ссылка - person Jose Contreras; 06.10.2020
comment
Я решаю код выхода следующим образом: ссылка - person Jose Contreras; 06.10.2020