Есть ли способ регистрировать ответы на ошибки в действиях Github?

#github #github-actions

Вопрос:

Я пытаюсь создать трекер ошибок, который позволяет мне записывать сообщения об ошибках выполняемого мной скрипта python. Вот мой файл YAML на данный момент:

 name: Bug Tracker   #Controls when the workflow will run on:  # Triggers the workflow on push request events  push:  branches: [ main ]    # Allows you to run this workflow manually from the Actions tab (for testing)  workflow_dispatch:  # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs:  build:  # Self Hosted Runner  runs-on: windows-latest   # Steps for tracker to get activated  steps:  # Checks-out your repository under BugTracker so the job can find it  - uses: actions/checkout@v2  - name: setup python  uses: actions/setup-python@v2  with:  python-version: 3.8  # Runs main script to look for   - name: Run File and collect bug  id: response  run: |  echo Running File...  python script.py  echo "${{steps.response.outputs.result}}"  

Каждый раз, когда я запускаю рабочий процесс, я не могу сохранить код ошибки. Под сохранением кода ошибки я имею в виду, например… если скрипт python выдает «Процесс завершен с кодом выхода 1». Тогда я могу сохранить это в файл txt. Я видел случаи, когда я мог бы сэкономить, если бы он успешно работал. Я думал о том, чтобы получить ошибку в скрипте python, но я не хочу добавлять один и тот же код в каждый файл, если мне это не нужно. Есть какие-нибудь мысли? Очень признателен за любую помощь или предложения.

Обновление: Мне удалось успешно использовать код на python для сохранения в файл txt. Тем не менее, я все еще надеюсь сделать это в Github, если у кого-нибудь есть какие-либо предложения.

Комментарии:

1. где вы хотите хранить этот txt-файл ?

2. В настоящее время он у меня есть в репозитории Github @BertrandMartel

3. @BertrandMartel Возможно ли это?

Ответ №1:

Ты мог бы :

  • перенаправьте вывод в файл журнала, записывая код выхода
  • установите вывод со значением кода выхода, например:
 echo ::set-output name=status::$status  
  • на другом шаге зафиксируйте файл журнала
  • на заключительном шаге убедитесь, что код выхода равен успеху (0), в противном случае выйдите из скрипта с этим кодом выхода.

Используя ubuntu-latest , это было бы так:

 name: Bug Tracker  on: [push,workflow_dispatch]  jobs:  build:  runs-on: ubuntu-latest   steps:  - uses: actions/checkout@v2  - name: setup python  uses: actions/setup-python@v2  with:  python-version: 3.8  - name: Run File and collect logs  id: run  run: |  echo Running File...  status=$(python script.py > log.txt 2>amp;1; echo $?)  cat log.txt  echo ::set-output name=status::$status  - name: Commit log  run: |  git config --global user.name 'GitHub Action'  git config --global user.email 'action@github.com'  git add -A  git checkout master  git diff-index --quiet HEAD || git commit -am "deploy workflow logs"  git push  - name: Check run status  if: steps.run.outputs.status != '0'  run: exit "${{ steps.run.outputs.status }}"  

В Windows, я думаю, вам нужно будет обновить эту часть:

 status=$(python script.py > log.txt 2>amp;1; echo $?) cat log.txt  

Комментарии:

1. Спасибо, я попробую и посмотрю, сработает ли это 🙂

2. Я получаю сообщение об ошибке при запуске журнала фиксации. Вот ошибка: pathspec ‘master’ не соответствовал ни одному файлу(файлам), известным git Ошибка: Процесс завершен с кодом выхода 1.

3. @JordanK в строке git checkout master , возможно, заменить на текущую ветку