Как проверить, существует ли проблема с тегом в моем репозитории GitHub с использованием API? - PullRequest
0 голосов
/ 16 января 2019

Итак, у меня есть этот код ниже, который автоматически запускается один раз в час, но проблема в том, что всякий раз, когда возникает конфликт слияния, он создает проблему независимо от того, существует она или нет, поэтому в итоге я получаю кучу дублирующих проблем в Сделки рЕПО. Как проверить, существует ли проблема с тегом «Конфликт слияния», чтобы он не создавал повторяющихся проблем?

Это только часть кода, которая имеет значение:

CONFLICTS=$(git ls-files -u | wc -l)
if [ "$CONFLICTS" -gt 0 ] ; then
    echo "There is a merge conflict. Aborting"
    git merge --abort
    curl -u $GITHUB_USER:$GITHUB_SECRET_TOKEN -H "Content-Type: application/json" -X POST -d '{"title": "Merge conflict detected", "body": "Heroku could not update your repo. Please check for merge conflicts and update manually!","labels": ["merge conflict"]}' https://api.github.com/repos/$GITHUB_REPO/issues
    exit 1
fi

1 Ответ

0 голосов
/ 23 января 2019

Вы можете использовать API поиска проблем , используя следующие параметры поиска:

  • репо: имя пользователя / репо
  • состояние: открыто
  • метка: «конфликт слияния» (отметьте this )

В интерфейсе пользователя: https://github.com/search?q=repo%3AMacley-Kun%2Favaire+state%3Aopen+label%3A%22merge+conflict%22

Использование Github API Rest v3

https://api.github.com/search/issues?q=repo%3AMacley-Kun%2Favaire%20state%3Aopen%20label%3A%22merge%20conflict%22

Использование с & для проверки, если в этом репо хотя бы одна проблема помечена как «конфликт слияния» (без учета регистра)

query='repo:Macley-Kun/avaire state:open label:"merge conflict"'

merge_conflicts=$(curl -G -s "https://api.github.com/search/issues" \
     --data-urlencode "q=$query" | jq '.items | length')

if [ "$merge_conflicts" -eq 0 ]; then
    echo "no opened merge conflicts issue detected"
else
    echo "one or many merge conflicts issues already exist"
fi

Использование Github API Graphql v4

{
  search(query: "repo:Macley-Kun/avaire state:open label:\"merge conflict\"", type: ISSUE, first: 0) {
    issueCount
  }
}

Попробуйте это из проводника

Использование с & :

repo=Macley-Kun/avaire

merge_conflicts=$(curl -s -H "Authorization: token $YOUR_TOKEN" \
     -H  "Content-Type:application/json" \
     -d '{ 
          "query": "{search(query: \"repo:'"$REPO"' state:open label:\\\"merge conflict\\\"\", type: ISSUE, first: 0) {issueCount}}"
      }' https://api.github.com/graphql | jq '.data.search.issueCount')

if [ "$merge_conflicts" -eq 0 ]; then
    echo "no opened merge conflicts issue detected"
else
    echo "one or many merge conflicts issues already exist"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...