Сам Git ничего не делает с управлением пользователями или правами. Итак, короткий ответ: не пытайтесь делать что-то подлое. Вместо этого используйте учетные записи пользователей Github так, как они были предназначены.
Я предлагаю предоставить этому специальному пользователю собственную учетную запись Github с собственной копией репо. Допустим, основной репо находится на https://github.com/yourteam/repo
, а специальный репо на https://github.com/special/repo
.
Сценарий извлечет изменения из ветки development командного репозитория, объединит ее с собственной веткой master и переведет на https://github.com/special/repo
.
Затем он отправит свои изменения в ветку master команды. Этот шаг может быть принудительным, так как никто больше не должен связываться с мастером. (В случае, если кто-то это делает, использование принудительного толчка здесь означает, что он должен будет исправить свое локальное репо, чтобы позднее соответствовать командному репо, вместо того, чтобы сценарий не выполнялся, пока кто-то не исправит командное репо.)
В то же время, ваше программное обеспечение CI заметит, что master изменился на https://github.com/special/repo
, и опубликует, как вы это обычно делаете. Это основа: CI не обращает внимания на групповое репо, поэтому, несмотря на то, что ваша команда имеет разрешение на его изменение, эти изменения не превращают его в производство.
Этому специальному пользователю потребуется коммитный доступ к командному репо, в дополнение к его собственному репозиторию GitHub. Возможно, самый простой способ - использовать ключ SSH и запустить команду git push из сценария, а не пытаться использовать GitHub API.