Действия GitHub PreCommit FatalError: git не удалось

У меня есть задача перенести CI/CD из Gitlab в GitHub Actions, и есть еще одно препятствие, с которым я столкнулся.
Библиотека PreCommit не работает. В gitlab все работало нормально, поэтому я понятия не имею, что можно изменить.

Мой код

name: CI Workflow

on:
  push:
    branches:
      - main

jobs:
  pre-commit-test:
    runs-on: ubuntu-latest
    container:
      image: python:3.11
    
    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Print current directory
      run: pwd

    - name: Set up Python 3.11
      uses: actions/setup-python@v2
      with:
        python-version: 3.11
          
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    - name: Check Git version
      run: git --version
      
    - name: Initialize Git
      run: git init  # Optional step if needed

    - name: Cache pre-commit hooks
      uses: actions/cache@v2
      with:
        path: ~/.cache/pre-commit
        key: ${{ runner.os }}-precommit-${{ hashFiles('.pre-commit-config.yaml') }}

    - name: Install pre-commit
      run: pip install pre-commit

    - name: Run pre-commit with debug
      run: pre-commit run --all-files

Ошибка

Run pre-commit run --all-files
  pre-commit run --all-files
  shell: sh -e {0}
  env:
    pythonLocation: /__t/Python/3.11.9/x64
    LD_LIBRARY_PATH: /__t/Python/3.11.9/x64/lib
An error has occurred: FatalError: git failed. Is it installed, and are you in a Git repository directory?
Check the log at /github/home/.cache/pre-commit/pre-commit.log
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Запуск внутри контейнера вызывает проблему. Контейнер запускается от имени пользователя root, и вся файловая система принадлежит пользователю root. В результате git не может работать. Удаление контейнера работает для меня с помощью этого рабочего процесса:

name: pre-commit

on:
  workflow_dispatch:

jobs:
  pre-commit-test:
    runs-on: ubuntu-latest

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

      - name: Set up Python 3.11
        uses: actions/setup-python@v2
        with:
          python-version: 3.11

      - name: Install dependencies
        run: python -m pip install --upgrade pip

      - name: Cache pre-commit hooks
        uses: actions/cache@v2
        with:
          path: ~/.cache/pre-commit
          key: ${{ runner.os }}-precommit-${{ hashFiles('.pre-commit-config.yaml') }}

      - name: Install pre-commit
        run: python -m pip install pre-commit

      - name: Run pre-commit with debug
        run: pre-commit run --all-files

и этот .pre-commit-config.yaml:

repos:
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v1.2.3
    hooks:
    -   id: trailing-whitespace

Я запустил это внутри монетного контейнера python:3.11, потому что в своем скрипте gitlab я использовал image: python:3.10 и 3.11, потому что 3.10 не работает в действиях GitHub. Я удалил git init и получаю ту же ошибку

KurczakChrupiacy2 11.07.2024 00:33

У меня это сработало, я полностью пропустил этот комментарий о контейнере. После удаления этот код работает. Спасибо !

KurczakChrupiacy2 12.07.2024 18:24

Другие вопросы по теме