Как создать бомбу замедленного действия в действиях Github, на которой работает Ubuntu?
Недавно я столкнулся с проблемой, которую мне придется решить в будущем. В результате мне интересно создать бомбу замедленного действия в моем рабочем процессе CI:
В компьютерном программном обеспечении бомба замедленного действия — это часть компьютерной программы, написанная таким образом, чтобы она начинала или прекращала функционировать после достижения заранее определенной даты или времени.
Вот что я пробовал до сих пор:
jobs:
Test-Runner:
runs-on: ubuntu-22.04
steps:
# Other steps ...
- name: 'A timebomb to address an issue on the 01/05/2023'
run: |
if [[ $(date +%s) -gt 1682895600 ]]; then
echo "It has been X months since #ISSUE was opened."
echo "Please check if Y has been fixed."
echo " If it has, please update do Z."
echo " else, please increase this timebomb by 1 month."
echo "See: ..."
fi
Я хочу, чтобы этот шаг завершился неудачей в указанную дату . Возможно ли это с помощью действий Github?
1 ответ
Действия GitHub учитывают коды выхода Linux и устанавливают для них статус проверки выполнения действия, который может быть «успех» или «неудача».
Из документации Установка кодов выхода для действий :
Вы можете использовать коды выхода, чтобы установить статус действия. GitHub отображает статусы, указывающие на успешные или неудачные действия.
Как обычно,0
указывает на успех и:
Любой другой код выхода указывает на то, что действие не удалось. При сбое действия все одновременные действия отменяются, а будущие действия пропускаются. И прогон проверки, и набор проверок получают статус сбоя.
Поэтому сделайте что-нибудь простое, например проверьте текущую дату и верните ненулевой код выхода:
jobs:
Test-Runner:
runs-on: ubuntu-22.04
steps:
# Other steps ...
- name: 'A timebomb to address an issue on the 01/05/2023'
run: |
if [[ $(date +%s) -gt 1682895600 ]]; then
echo "It has been X months since #ISSUE was opened."
echo "Please check if Y has been fixed."
echo " If it has, please update do Z."
echo " else, please increase this timebomb by 1 month."
echo "See: ..."
exit 1 # <--- A non-zero exit code
fi
- name: 'Uploading test artifacts'
if: success() || failure()
Произойдет сбой CI в определенную дату. Важно отметить, что вам нужно будет поместить это в конец шагов теста, если вы хотите, чтобы другие шаги выполнялись до сбоя задания. (возможно, непосредственно перед загрузкой тестовых артефактов)