Доступ к Git проекта
Altium 365 может размещать Git-репозиторий для исходных файлов вашего проекта. Altium Designer работает с этими репозиториями как собственный клиент, но вы также можете работать с ними как с любым другим удалённым Git-репозиторием — clone, pull, push и т. д. с помощью стандартного Git-клиента.
На этой странице показано, как:
-
Узнать URL репозитория проекта через API Altium 365.
-
Аутентифицировать Git-запросы с помощью токена доступа Altium 365.
-
Работать с Git-репозиторием
Шаг 1: Получение URL репозитория
Сведения о репозитории доступны через API Altium 365. Выполните запрос к своим проектам, прочитайте поле repositoryUrl и используйте его как свой Git remote.
Sм. Tokens для получения подробной информации о том, как получать и использовать токены Altium 365. Если вы только начинаете работать с API, начните с руководства Altium 365 API Quick Start Guide.
Аппаратные проекты
Для аппаратных (PCB) проектов поля репозитория доступны через desProjects:
query {
desProjects {
nodes {
repositoryUrl
}
}
}
Программные проекты
Для программных проектов те же поля доступны через sftSoftwareProjects:
query {
sftSoftwareProjects {
repositoryUrl
}
}
Поля ответа
Оба запроса возвращают одинаковые поля репозитория:
| Ваше приложение | Описание |
repositoryUrl |
URL удалённого Git-репозитория. Считайте его непрозрачным значением — запрашивайте его через API и используйте как есть. |
Например, ответ для аппаратного проекта:
{
"data": {
"desProjects": {
"nodes": [
{
"repositoryUrl": "{repositoryUrl}"
}
]
}
}
}
Шаг 2: Аутентификация
Git-репозитории Altium 365 используют базовую аутентификацию. Используйте свой токен API Altium 365 access token в качестве пароля. Токен должен быть выдан для Workspace, которому принадлежит проект.
username is ignored игнорируется сервером, но должна быть непустой строкой. Подойдёт любой заполнитель (например: token).
Заголовок Authorization
Для межсервисных вызовов передавайте учётные данные в заголовке Authorization, закодированными в base64 в формате username:password:
Authorization: Basic base64("token:{access-token}")
Командная строка Git
Выполните клонирование, используя repositoryUrl, возвращённый API. Когда будет предложено, введите любое непустое имя пользователя и ваш токен доступа в качестве пароля:
git clone {repositoryUrl}
# Username: "token" (any non-empty value)
# Password: {access-token}
Настройте Git credential helper, чтобы токен хранился безопасно и вам не приходилось вводить его при каждой операции. Доступные helper’ы зависят от платформы (например, osxkeychain в macOS, manager в Windows):
git config --global credential.helper osxkeychain
Учётные данные в URL репозитория
В качестве альтернативы интерактивному вводу Altium 365 принимает учётные данные в компоненте authority URL — в стандартном синтаксисе URI username:password@. API никогда не возвращает URL с уже заполненными учётными данными, поэтому эту форму вы формируете сами: возьмите возвращённый repositoryUrl и вставьте {username}:{access-token}@ сразу после https://.
git clone https://token:{access-token}@<returned-url>
# <returned-url> is the repositoryUrl with the leading "https://" removed
Имя пользователя игнорируется (подойдёт любое непустое значение); в качестве пароля используется тот же токен доступа (JWT), что и в описанных выше методах.
Шаг 3: Работа с репозиторием
После клонирования репозиторий ведёт себя как любой стандартный удалённый Git-репозиторий:
cd <your-repository>
# Make changes, then push as usual
git add .
git commit -m "Update firmware sources"
git push
Недействительный или истёкший токен доступа приводит к ошибке аутентификации при выполнении операций Git:
git clone {repositoryUrl}
# provide credentials when prompted
Cloning into '<your-repository>'...
bad input: 07KCg
fatal: Authentication failed for '{repositoryUrl}'
Безопасность
-
Обращайтесь с токеном доступа как с паролем. Не коммитьте его в систему контроля версий и не встраивайте его в клиентский код.
-
Предпочтительнее использовать credential helper вместо встраивания токена в URL клонирования, чтобы он не записывался в
.git/configили историю вашей оболочки. -
Для автоматизации используйте короткоживущие токены. Для CI/CD и фоновых сервисов получайте короткоживущий токен доступа из refresh token, чтобы учётные данные, передаваемые с каждым запросом, имели ограниченное окно возможного компрометирования. См. Using a Refresh Token.
Ограничения
Чтобы репозиторий проекта оставался быстрым и надёжным, Git-сервер отклоняет большие сжатые архивы: .zip, .7z и .rar файлы размером более 256 МБ. Push, включающий такой файл, будет отклонён:
git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 282.56 MiB | 1.09 MiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
error: RPC failed; HTTP 471 curl 22 The requested URL returned error: 471
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
Everything up-to-date
См. KB: Cannot save project due to Git error with status code 471 для получения подробной информации об этой ошибке в контексте Altium Designer.