Проверьте, было ли создано репозиторий Github с использованием шаблона Probot.

У меня есть Github Bot (Probot), который я использую для автоматизации таких вещей, как соглашения об именах и т. д. и т. д.

У меня также есть несколько команд, которые мы используем для управления видимостью, и мне было интересно, можно ли использовать Probot для назначения доступа определенным командам, когда репозиторий создается из определенного шаблона.

Однако я проанализировал объект контекста и просмотрел его в поисках имени шаблона репо, но, похоже, не нашел надежного способа определить, откуда было создано репо. Может я что-то упускаю или это вообще невозможно? См. прикрепленный код

const templateTeamAssignment = async (context) => {
  const { github, payload } = context;
  const repo = payload.repository.name;

  console.log("context", context);
};

module.exports = templateTeamAssignment;

Любые идеи?


person cshocks    schedule 28.10.2020    source источник


Ответы (2)


Полезная нагрузка события не включает искомое свойство template_repository. Но вы можете получить информацию, извлекая информацию из репозитория с помощью вызова REST API или запроса GraphQL. Например, попробуйте это

const { template_repository } = await context.github.repos.get(context.repo())

Если template_repository не установлено, это означает, что репозиторий не был создан с использованием репозитория шаблонов.

person Gregor    schedule 29.10.2020
comment
К сожалению, @Грегор этого не сделал. Это пролило некоторый свет на baptiste-preview, который мне нужно было бы предоставить в качестве заголовка, чтобы показать свойства is_template и template_repository, как вы упомянули. Они также видны только в функции listForOrg. Когда я реализовал это, я смог увидеть свойство is_template, но не template_repository, что наводит меня на мысль, что оно еще недостаточно стабильно для производства, и это было подтверждено предупреждением в документации по API. А пока мне придется обходиться без, если у вас нет других идей? - person cshocks; 02.11.2020
comment
Предварительные просмотры градуируются один за другим, они должны быть достаточно стабильными. Я бы посоветовал обратиться в службу поддержки GitHub по адресу support.github.com/contact, они будут способный помочь лучшему - person Gregor; 03.11.2020
comment
Спасибо за это @Gregor, я попробую и сообщу здесь, если мне удастся решить эту проблему. - person cshocks; 05.11.2020

К сожалению, я не думаю, что это возможно в настоящее время. Мне удалось выяснить, что baptiste-preview необходимо указать в качестве заголовка, чтобы в результате отображались свойства is_template и template_repository. Они также видны только в функции listForOrg(), поэтому мне пришлось бы прокручивать результат, чтобы найти информацию об отдельном репо.

const templateTeamAssignment = async (context) => {
  const { github, payload } = context;
  const repo = payload.repository.name;

  console.log("context", context);

  console.log("stackOverflow", await context.github.repos.get(context.repo()));
  console.log(
    "stackOverflow",
    await context.github.repos.listForOrg({
      org: payload.organization.login,
      headers: {
        accept: "application/vnd.github.baptiste-preview+json",
      },
    })
  );
};

Когда я реализовал это, я смог увидеть свойство is_template, но не template_repository, что наводит меня на мысль, что оно еще недостаточно стабильно для производства, и это было подтверждено предупреждением в документации по API. Хотелось бы узнать, успешно ли кто-нибудь в настоящее время получает свойство template_repository?

person cshocks    schedule 02.11.2020