#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
, возможно, заменить на текущую ветку