Как сделать токен github

Обновлено: 07.07.2024

Этот код вызывает ошибки:

удаленный: анонимный доступ к scuzzlebuzzle/ol3-1.git запрещен.

Неустранимый: аутентификация не удалась для " https://github.com/scuzzlebuzzle/ol3-1.git/"

Ваш curl Команда совершенно неверна. Вы должны использовать следующее

Кроме того, это не разрешает вашему компьютеру клонировать репозиторий, если на самом деле он является частным. (Однако, взглянув на это, вы увидите, что это не так.) Обычно вы делаете следующее:

Это добавит ваши учетные данные на удаленный сервер, созданный при клонировании хранилища. К сожалению, однако, вы не можете контролировать, как Travis клонирует ваш репозиторий, поэтому вы должны отредактировать пульт таким образом.

Это исправит ваш проект для использования пульта со встроенными учетными данными.

@YMHuang поставил меня на правильный путь со ссылкой на документацию.

Смехотворно, статья рассказывает о том, как ее создать, но не дает абсолютно никаких сведений о том, что с ней делать. Примерно через час траления документов и так, я, наконец, нашел ответ:-

На самом деле я был вынужден включить 2FA в соответствии с политикой компании, когда работал удаленно и все еще имел локальные изменения, так что на самом деле это не было clone Мне нужно но push , Я читал во многих местах, что мне нужно было удалить и воссоздать пульт, но на самом деле мой нормальный push Команда работала точно так же, как clone выше, и пульт не изменился:-

Это сработало для меня с помощью SSH:

Settings > Developer settings > Generate new token

Автоматизация / автоматизация Git с помощью токенов OAuth Автоматизация Git с использованием токенов OAuth

Это также работает в git push команда

Чтобы использовать его, у меня сработала следующая последовательность:

Чтобы не передавать "ключи от замка".

Обратите внимание, что ответ sigmavirus24 требует, чтобы вы дали Тревису токен с довольно широкими разрешениями - поскольку GitHub предлагает только токены с широкими областями действия, такими как "написать все мои публичные репо" или "написать все мои личные репо".

Если вы хотите ограничить доступ (немного больше работы!), Вы можете использовать ключи развертывания GitHub в сочетании с зашифрованными полями yaml Travis.

Вот эскиз того, как работает техника.

Сначала создайте ключ развертывания RSA (через ssh-keygen ) называется my_key и добавьте его в качестве ключа развертывания в настройках своего репозитория github.

Затем используйте $password файл для расшифровки вашего ключа развертывания во время интеграции, добавив в ваш файл yaml:

Теперь мне не нужно вводить имя пользователя и пароль каждый раз, когда я нажимаю изменения.
Я просто печатаю git push

и нажмите Enter, и изменения будут внесены.

Для MacOS, если вам не предлагается ввести имя пользователя и пароль, это означает, что ваш пароль хранится в Keychain Access. Каждый раз, когда вы пытаетесь клонировать или нажимать, он будет пытаться использовать ваш старый пароль. Выполните следующие 3 шага, чтобы решить эту проблему:

  1. Создать PAT (токен личного доступа) - ССЫЛКА
  2. Открыть KeyChain доступ (через поиск Spotlight)> поиск GitHub> нажмите GitHub> изменение и сохранить с новым PAT LINK
  3. Попробуйте снова нажать или клонировать, теперь вы сохранили PAT вместо вашего pwd.

Обычно мне это нравится

Git_token читает из переменной config в azure DevOps.

Вы можете прочитать мой блог полностью здесь

Вот как будет выглядеть конечный URL:

Значение long PAT (Personal Access Token) - все длинное значение между // и знаком @ в URL-адресе является вашим PAT.

user-name будет вашим точным именем пользователя

repo.git будет вашим точным именем репо

Это даст вам значение PAT, которое вы поместите в свой URL.


Когда вы создаете PAT, убедитесь, что вы выбрали следующие параметры, чтобы он мог позволить вам управлять своими REPO.

Сохраните свой PAT или потеряйте его

Как только у вас будет PAT. Вам нужно будет сохранить его в локальном файле, чтобы вы могли использовать его снова. Если вы не сохраните его где-нибудь, его невозможно больше когда-либо увидеть, и вам придется создать новый PAT

Теперь вам понадобится как минимум:

  1. способ отобразить его на консоли, чтобы вы могли снова увидеть его.
  2. или, способ автоматически скопировать его в буфер обмена.

Для 1 просто используйте :

Где путь - это реальный путь к местоположению и файлу, в котором вы сохранили значение PAT.

Для 2

Это скопирует содержимое файла в буфер обмена, чтобы вам было проще использовать PAT.

К вашему сведению - если у вас нет xclip, сделайте следующее:

Скачивает и устанавливает xclip. Если у вас нет apt-get , вам может потребоваться другой установщик (например, yum )

Что это такое и как удаленно прогонять тесты на каждый пуш при помощи одного крошечного конфига


Что такое github actions вообще?

Это указание гитхабу запускать какой-то код каждый раз когда случается некое событие. Push, создание PR, таймер, внешнее событие, а также всякие другие.
Где запускается этот код? На виртуальных машинах гитхаба(но при желании можно и на своих гонять). Удобно, можно ничего не настраивать.
Что он делает? Да что угодно, насколько хватит фантазии, главное — позволяет автоматизировать какие-то действия, нужные для вашего процесса разработки: гонять тесты, собирать и деплоить продукты, собирать статистику, оповещать людей.

Таким образом github предоставляет возможность не только прикрутить неплохой бесплатный CI/CD(как раньше умел только gitlab, о котором у меня тоже была статья), но и создать очень гибкую и легко конфигурируемую систему поддержки разработки.


Тут все восхитительно просто.

Для начала нужно придумать, что же хочется сделать. Потом найти готовый экшен/несколько, которые позволят это сделать. Их проще всего искать в github marketplace — по сути это просто список репозиториев, которые подали заявку, чтобы быть там. На самом деле вы будете ссылаться на конкретный репозиторий конкретного пользователя.

Если подходящие готовые не находятся, всегда можно написать свой. Это очень просто. Я, например, написала экшен, чтобы интегрировать jira в пулл-реквесты:

jira-description - GitHub Marketplace

A lightweight solution to integrate GitHub with JIRA for project management. 🔎 To make jira-description-action a part…

Пока что давайте разберем самый простой пример — пусть на каждый пуш в любой ветке гоняются тесты(пример будет про js-разработку)

В первую очередь нужно создать в своем проекте папку .github, а в ней папку. workflows, а в ней файл name-matters-only-for-you.yaml

контент у него будет такой:

Тогда в интерфейсе гитхаба прогоны будут выглядеть вот так:



Разберемся, что делает каждая строчка. Этот пример покрывает далеко не все возможные опции, у гитхаба есть чудесная документация на английском, где описано все-все-все

Steps

  1. Весь конфиг пишется в yaml, поэтому важно следовать синтаксису и следить за отступами, новая сущность в списке начинается с –
  2. Шаги — это по сути упорядоченный список. Они будут выполняться один за одним строго последовательно

Посмотрим еще раз на конфиг, тут видно, что у нас 4 шага, только у них почему-то разный набор параметров, как это работает?

  • name нужен просто для отображения в интерфейсе, без него прекрасно можно обойтись
  • uses тут указываем имя какого-то уже написанного экшена, если хотим его использовать. Экшен может быть конкретным бранчем в конкретном репозитории(любом), может быть вообще кодом, лежащим в соседней папке, а может быть и вовсе docker-image(полный список)
    В примере используется actions/checkout@v2 и actions/setup-node@v1 . По названию легко можно найти их в marketplace, посмотреть исходный код конкретной версии(она идет после @ в названии) и понять, что они делают. checkout делает pull репозитория и ветки, в котором запущен. Таким образом мы получаем доступ к коду. Без этого экшена делать npm i было бы не на чем.
    setup-node устанавливает ноду, чтобы мы могли дальше использовать ее
  • with если шаг использует экшен, то иногда в него хочется передать параметры. Параметры регламентированы самим экшеном. В примере мы можем указать версию ноды, необходимую для нашего проекта
  • run запускает какую-то команду в shell. Использовать shell-команду вместе с экшеном не получится, они должны жить в разных шагах

После того, как этот файл добавлен и запушен в master, на каждый дальнейший пуш будет прогоняться наш скрипт с тестами.
Если это был просто пуш, результат можно будет увидеть в списке коммитов. Если пулл-реквест — в саммари внизу



Вот и все, разобрали маленький пример, ура, можно дерзать!
Чтобы было проще, собрала список вещей, которые узнала, когда дерзала сама

Как передать какой-нибудь токен, нигде его не публикуя? Или что такое secrets в конфигах?

Всякие токены доступа, опубликованные в публичном доступе, это большой риск для вашей секьюрности. Как передавать их в зашифрованном виде? Гитхаб уже позаботился об этом, создав secrets. Их можно найти в любом репозитории: settings -> secrets. Там можно создать секрет с почти любым именем, например, MY_TOKEN, добавить к нему значение, и тогда в любом экшене можно будет написать secrets.MY_TOKEN , и это значение будет использоваться

Прикольные вещи:
1. Один раз создав и сохранив секрет, посмотреть его значение будет уже нельзя, только обновить
2. Если попытаться вывести значение секрета в логах или внутри кода экшена, выведется ***
3. Однако лучше не логгировать секреты вообще, так как любую защиту такого рода все же можно обойти

Как добавить secrets.GITHUB_TOKEN, который нужен в конфиге?

Все секреты с именами, начинающимися на GITHUB — служебные и подставляются гитхабом автоматически. Можно не переживать, просто напишите > и все будет работать

Как сделать так, чтобы нельзя было замержить пулл-реквест если тесты упали?

Нужно пойти в настройки репозитория и у становить там правила для мержа в master, выбрав галочкой workflow, содержащий важные тесты


Как передать результат работы одного шага в другой шаг?

Это очень классная фича! При помощи кода ниже я проверяю, есть ли измененные файлы после билда в папке lib и, если есть, делаю коммит с обновленной сборкой. Переменные, добавленные в шаге, доступны в любом следующем шаге этого же job

Как передать результат работы между джобами?

Тут немного веселее!

Важно помнить, что и output, и env-параметры это строки, которые могут содержать специальные символы. Поэтому при выводе в консоль необходимо это учитывать, иначе можно получить вот такую ошибку, если написать run: echo $> без кавычек:


Если информации в этой статье не хватило для того, чтобы реализовать то, что вам нужно, возможно, пришло время написать собственный экшен:

Если я запускаю команду, похожую на следующую в частном хранилище:

Я получаю следующее приглашение.

enter image description here

Когда я ввожу свои учетные данные, я получаю электронное письмо от Github, в котором говорится, что создан новый токен аутентификации.

Где этот токен хранится на моем ПК? Когда я повторяю приведенную выше команду, я больше не получаю приглашение - до тех пор, пока я не отзову токен на веб-сайте github.

2 ответа

По умолчанию Git будет использовать диспетчер учетных данных Windows для хранения и получения учетных данных Git через Github для рабочего стола Windows.

Диспетчер учетных данных позволяет просматривать и удалять сохраненные учетные данные для входа на веб-сайты, в подключенные приложения и сети.

Чтобы открыть диспетчер учетных данных, введите диспетчер учетных данных в поле поиска на панели задач и выберите панель Управление диспетчером учетных данных . Выберите Веб-учетные данные или Windows-учетные данные , чтобы получить доступ к учетным данным, которыми вы хотите управлять.

Майк Макинтош прав. Вот как вы можете получить доступ к токену.

Измените флаги на приведенную выше команду по своему вкусу. Затем:

Вы получите список созданных вами токенов. Используйте Get-Command -Module CredentialManager для отображения всех доступных команд в модуле, которые вы можете использовать для управления хранилищем учетных данных.

GitHub Actions: начало

В одной из последних статей я делала обзор GitHub Actions и показывала, как использовать существующий экшен для развертывания сайта Gatsby на GitHub Pages. В этой же статье я хочу углубиться в изучение экшенов GitHub, чтобы подробнее раскрыть их основную идею, показать и пояснить архитектуру, а также рассмотреть этапы их построения.

Но прежде чем переходить к особенностям этого инструмента GitHub, давайте уточним, какую он вообще несет пользу. Для этого мы рассмотрим события GitHub и то, как этот ресурс поддерживал их обработку ранее.

События GitHub

GitHub предоставляет хостинг проектов ПО и контроль версий через Git. Обеспечивая возможность сотрудничества между командами (зачастую распределенными), ревью кода и управление проектами, этот ресурс сформировал ядро жизненного цикла разработки ПО.

События GitHub играют важную роль в успешном функционировании GitHub, одновременно предоставляя точки возможного расширения путем интеграции с другими инструментами, применяемыми при разработке ПО. Вы можете использовать GitHub для совместной работы над исходным кодом, JIRA для управления проектами и Confluence для обработки документации. События GitHub помогают расширять спектр типичных выполняемых на GitHub действий и привязываться к другим инструментам, которые вы уже используете.

“Каждое событие соответствует конкретному набору действий, которые могут осуществляться в вашей организации и/или репозитории. Например, если вы подпишитесь на событие issues , то будете получать подробную информацию при каждом открытии issue , его закрытии, отметке и т.д.” — документация GitHub

Например, при отправке пул-реквеста на GitHub вам может понадобиться обновить статус соответствующего тикета в Jira.


Расширение рабочих процессов на GitHub путем обработки событий

На какие события GitHub можно реагировать?

В GitHub по части событий есть обширная документация. Вы можете подключаться к огромному спектру рабочих процессов и расширять их согласно нуждам команды или бизнеса.

  • Когда происходит что-то, связанное с issue , можно использовать события issues для вызова изменений в другой системе.
  • Когда происходит что-то, связанное с пул-реквестом, можно аналогичным образом использовать события пул-реквестов.

Как это было до появления GitHub Actions

Как же осуществляется прослушивание событий GitHub и реагирование на них? До появления GitHub Actions для получения событий GitHub рекомендовалось использовать веб-хуки.

После этого при возникновении активности в репозитории GitHub будет выполнен POST события на эту конечную точку. При этом веб-хук может расширять активность, выполняя в ответ на событие пользовательский код.


Использование веб-хука для ответа на событие

Самый большой недостаток веб-хуков в необходимости существовать в качестве внешнего сервиса. Это подразумевает написание нового сервиса, его развертывание и дальнейшее обслуживание.

Знакомство с GitHub Actions

GitHub Actions вместо независимо развернутого веб-хука предоставляют способ реагирования на события GitHub в рамках самой этой платформы.


Использование рабочего процесса на базе экшена GitHub для ответа на событие

“GitHub Actions — это ваш рабочий процесс, создаваемый вами, выполняемый нами.” — блог GitHub

GitHub Actions обеспечивает ряд преимуществ:

  1. Предоставляет возможность реагировать на события внутри GitHub, избавляя тем самым от необходимости привлечения внешнего инструмента и пересылки данных через другой сервис.
  2. Предоставляет более дешевый тариф, чем отдельный сервис для CI/CD. В данном случае для публичных репозиториев тариф бесплатный, а для частных предполагается оплата по факту использования.
  3. Позволяет повторно задействовать общие рабочие процессы. Этот момент особенно важен, поскольку избавляет разработчиков от необходимости повторного решения одних и тех же задач. Вместо этого публичные рабочие процессы формируют экосистему экшенов, которые разработчики могут разветвлять, редактировать, перебирать и улучшать во многом аналогично коду.

Структура — рабочие процессы, задачи, этапы, экшены и исполнители


Компоненты рабочего процесса

Событие GitHub запускает рабочий процесс:

  • В рабочем процессе (workflow) присутствует одна или более задач (по умолчанию выполняемых параллельно).
  • Задача (job) состоит из одного или более этапов (step), выполняемых одним исполнителем (runner). Данные внутри одной задачи могут передаваться из предшествующих этапов в последующие.
  • Этап состоит из экшена и ввода этого экшена, а также допускает присвоение имени.
  • Экшен — это наименьший самостоятельный компонент рабочего процесса.
  • Исполнитель — это сервер, где установлено соответствующее приложение, которое прослушивает задачи, по очереди выполняет их, сообщает о прогрессе и логирует результаты.

Типы экшенов GitHub

Будучи наименьшим самостоятельным компонентом рабочего процесса, экшен включает в себя код, необходимый для выполнения одного логического задания — проверить репозиторий, настроить Node или развернуть статический сайт.

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

Написать экшен можно одним из двух способов:

JavaScript

В этом случае вы пишите код для экшена на JavaScript. Данный код выполняется с помощью версии Node, указанной вами в файле метаданных action.yml (подробнее об этом позже).

У этого подхода есть ряд недостатков:

  1. Экшен зависит от доступной на исполнителе версии Node. Например, Ubuntu-18 Runner на GitHub работает на Node 12. Если вы используете собственный исполнитель, работающий на Node 10, то экшены JS, написанные для Node 12, могут работать некорректно.
  2. Зависимости должны упаковываться вместе с экшеном (включением каталога node_modules в репозиторий экшена или его упаковыванием в отдельный файл при помощи vercel/ncc).

Контейнеры Docker

Контейнеры Docker объединяют среду и код экшена GitHub вместе, что делает их более надежным способом упаковки.

Это значит, что получателю экшена не нужно беспокоиться об инструментах или зависимостях, используемых в данном экшене. Например, если он был определен в Node 12, но запускается в нестандартном исполнителе на Node 10, то это не вызовет проблем, поскольку экшен Docker выполняется в собственном контейнере, имеющем подходящую для данного экшена версию Node.

Создание экшена на Javascript

В одной из давних статей я описывала настройку веб-хука GitHub для отправки комментариев к пул реквестам, открываемым новыми участниками в репозитории. Сейчас я хочу воссоздать это поведение при помощи экшена.

Инициализация репозитория

  1. Создайте пустой каталог.
  2. Выполните в нем npm init -y .

Описание экшена

Создайте в том же каталоге файл action.yml . Этот файл содержит метаданные, описывающие назначение экшена, его ввод и вывод.

Мы указываем, что этот экшен выполняется на node12 и устанавливаем в качестве точки входа src/index.js (где располагается код для экшена).

Добавление зависимостей toolkit

GitHub предоставляет для экшенов toolkit (инструментарий), содержащий основные утилиты, которые могут потребоваться любому экшену. Мы будем использовать эти утилиты для чтения полезной нагрузки событий, создания клиента API GitHub и других тонкостей, которые не хотим реализовывать вручную.

Написание кода экшена

  • Импортируем модули core и github из инструментария.
  • Обращаемся к вводам экшена, используя функцию core.getInput .
  • Обращаемся к полезной нагрузке события, используя модуль github : github.context.payload .
  • Создаем клиент GitHub, используя модуль github : github.getOctokit(accessToken) с получением токена доступа из ввода.
  • Просматриваем payload на наличие нового пул реквеста (т.е. action становится opened ), а также проверяем, сделан ли пул реквест новым участником.
  • Если да, то используем githubClient , созданный ранее, для отправки комментария к пул реквесту: githubClient.issues.createComment .

Коммит кода

  1. Добавьте каталог src , файлы package.json и package-lock.json , а также каталог node_modules .
  2. Сделайте коммит изменений.
  3. Отметьте изменения тегом: git tag -am "Release version 1.0" v1.0 .
  4. Отправьте их в репозиторий: git push --follow-tags .

Весь итоговый код для этого экшена можете найти в моем репозитории.

Экшен в рабочем процессе репозитория

Перейдите в репозиторий, где хотели бы использовать этот экшен для комментирования пул реквестов новых участников. Создайте в нем каталог .github/workflows . Добавьте в этот каталог файл .yml для описания рабочего процесса:

Именно здесь вы указываете события, в ответ на которые хотите запускать рабочий процесс. В данном случае нам нужно, чтобы он запускался в pull_request в ветке main .

В текущем рабочем процессе есть одна задача comment , которая содержит один этап, состоящий из только что созданного нами экшена, использующего формат deborah-digges/[email protected] , который указывает:

  • Имя пользователя или организации на GitHub, где искать экшен.
  • Название репозитория, где расположен этот экшен и его зависимости.
  • Версию экшена, которая может быть либо в форме тега, либо в виде хэша коммита.

Добавление токена доступа

Мы указываем вводный access-token нашего экшена со значением $> . Чтобы установить это значение, добавьте личный токен доступа в раздел Secrets вашего репозитория.


Раздел Secrets в репозитории GitHub

Тестирование экшена

Читайте также: