Из-за чего пайплайн ругается на синтаксис?

Ссылка скопирована
1 ответ

Есть Pipeline в GitHub
По вводным: необходимо выполнить действие если success.

Работает:

- name: Run on success if: success() run: echo "This runs only if 'First Step' succeeds"

Не работает:

- name: Run on success if: success() uses: appleboy/telegram-action@master with:

Сейчас ситуация такая: мне необходим второй пример, который помечен как не работает.

По вводным: ругается на синтаксис в строке с "with:"
Нужно понять: подскажите, какой правильный синтаксис или какую доку почитать??

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь NetOps Ответ

В GitHub Actions шаг может использовать либо run, либо uses, но синтаксис вокруг if и with должен быть строго на одном уровне внутри одного элемента списка. Частая причина ошибки — неправильные отступы или пустой/криво вложенный with:.

Правильный пример с action:

- name: Send Telegram on success
  if: ${{ success() }}
  uses: appleboy/telegram-action@master
  with:
    to: ${{ secrets.TELEGRAM_TO }}
    token: ${{ secrets.TELEGRAM_TOKEN }}
    message: "Workflow completed successfully"

- name: Send Telegram on success if: ${{ success() }} uses: appleboy/telegram-action@master with: to: ${{ secrets.TELEGRAM_TO }} token: ${{ secrets.TELEGRAM_TOKEN }} message: "Workflow completed successfully"

with: должен быть на том же уровне отступа, что и uses, а параметры внутри — на два пробела глубже. Нельзя писать with внутри run или смешивать run и uses в одном шаге.

Если нужно выполнить команду и потом отправить Telegram, это два разных шага:

- name: Build
  run: npm run build

- name: Send Telegram on success
  if: ${{ success() }}
  uses: appleboy/telegram-action@master
  with:
    to: ${{ secrets.TELEGRAM_TO }}
    token: ${{ secrets.TELEGRAM_TOKEN }}
    message: "Build OK"

- name: Build run: npm run build - name: Send Telegram on success if: ${{ success() }} uses: appleboy/telegram-action@master with: to: ${{ secrets.TELEGRAM_TO }} token: ${{ secrets.TELEGRAM_TOKEN }} message: "Build OK"

Если действие должно выполниться только после конкретного шага, можно дать шагу id и проверять результат:

- name: First step
  id: first
  run: echo "ok"

- name: Notify
  if: ${{ steps.first.outcome == 'success' }}
  uses: appleboy/telegram-action@master
  with:
    to: ${{ secrets.TELEGRAM_TO }}
    token: ${{ secrets.TELEGRAM_TOKEN }}
    message: "First step succeeded"

- name: First step id: first run: echo "ok" - name: Notify if: ${{ steps.first.outcome == 'success' }} uses: appleboy/telegram-action@master with: to: ${{ secrets.TELEGRAM_TO }} token: ${{ secrets.TELEGRAM_TOKEN }} message: "First step succeeded"

Если YAML ругается именно на строку with:, проверьте ещё две вещи. Во-первых, предыдущая строка должна быть uses:, а не run:. Во-вторых, выше не должно быть незакрытой кавычки или двоеточия в значении. YAML очень чувствителен: одна лишняя табуляция или двоеточие без кавычек может подсветить ошибку ниже реальной причины.

Для проверки удобно вставить workflow в любой YAML validator или открыть вкладку Actions в GitHub: редактор часто показывает место ошибки до запуска. Ещё полезно временно заменить action на простой минимальный вариант с одним параметром message. Если минимальный вариант проходит, добавляйте параметры to, token, format по одному.

Итог: проверьте отступы YAML и не смешивайте run с uses. Документация: GitHub Actions workflow syntax, разделы jobs.<job_id>.steps[*].uses, steps[*].if и steps[*].with. Для Telegram action держите if, uses и with на одном уровне шага.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно