#github #github-actions
Вопрос:
Мне нужно создать задание YAML, которое проверяет, установлена ли веха в PR, и не выполняет автоматическую проверку, если веха не установлена.
Это та работа, которая у меня есть в .файл yml:
jobs:
milestone:
name: Check if milestone is set
runs-on: ubuntu-latest
steps:
- name: Check milestone
uses: actions/github-script@v5
with:
script: |
const pr = context.payload.pull_request;
if (pr.milestone) {
core.info(`This pull request has a milestone set: ${pr.milestone.title}`);
} else {
core.setFailed(`A maintainer needs to set the milestone for this pull request. Milestone is ${pr.milestone}`);
}
После того, как я нажимаю фиксацию на существующий PR, эта проверка успешно проходит, если у этого PR установлен контрольный показатель. Он также успешно завершается неудачей, если не установлен контрольный рубеж. Эта часть работает так, как и ожидалось.
Проблема возникает после того, как я добавляю или удаляю веху из PR и пытаюсь повторно запустить задания. Похоже, что задания используют только те данные, которые были доступны в момент последней фиксации. Пример:
- У меня есть пиар без вехи
- Я нажимаю на новое обязательство по связям с общественностью
- Работа завершается неудачей, как и ожидалось
- Я установил веху в пиаре
- Я повторно запускаю задания
- Работа все еще терпит неудачу, но я бы ожидал, что она пройдет
Я использовал это как вдохновение для своего сценария https://github.com/pllim/action-check_milestone_exists . Единственное, что я изменил, — это версия скрипта GitHub с 3 на 5. Результат тот же при использовании версии 3.
Я также взглянул на это https://github.community/t/feature-request-add-milestone-changes-as-activity-type-to-pull-request/16778/12 . Означает ли это, что это невозможно, или это что-то другое?
Ответ №1:
Вы можете использовать вызов API Github в действии github-скрипта, используя github.request
следующее:
github.request("GET /repos/{owner}/{repo}/pulls/{pr}", {
owner: context.repo.owner,
repo: context.repo.repo,
pr: context.payload.pull_request.number
});
Он использует формат запроса octokit
Следующее проверит, существует ли веха для текущего PR:
on: [pull_request]
name: build
jobs:
milestone:
name: Check if milestone is set
runs-on: ubuntu-latest
steps:
- name: Check milestone
uses: actions/github-script@v5
with:
script: |
const { data } = await github.request("GET /repos/{owner}/{repo}/pulls/{pr}", {
owner: context.repo.owner,
repo: context.repo.repo,
pr: context.payload.pull_request.number
});
if (data.milestone) {
core.info(`This pull request has a milestone set: ${data.milestone.title}`);
} else {
core.setFailed(`A maintainer needs to set the milestone for this pull request.`);
}
Комментарии:
1. сработало как заклинание. большое спасибо!!!