Как создать бомбу замедленного действия в действиях 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 в определенную дату. Важно отметить, что вам нужно будет поместить это в конец шагов теста, если вы хотите, чтобы другие шаги выполнялись до сбоя задания. (возможно, непосредственно перед загрузкой тестовых артефактов)

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