Доступ к Git проекта

Altium 365 может размещать Git-репозиторий для исходных файлов вашего проекта. Altium Designer работает с этими репозиториями как собственный клиент, но вы также можете работать с ними как с любым другим удалённым Git-репозиторием — clonepullpush и т. д. с помощью стандартного Git-клиента.

На этой странице показано, как:

  1. Узнать URL репозитория проекта через API Altium 365.

  2. Аутентифицировать Git-запросы с помощью токена доступа Altium 365.

  3. Работать с Git-репозиторием

Шаг 1: Получение URL репозитория

Сведения о репозитории доступны через API Altium 365. Выполните запрос к своим проектам, прочитайте поле repositoryUrl и используйте его как свой Git remote. 

Считайте repositoryUrl непрозрачным значением. Запрашивайте его через API и используйте точно в том виде, в каком оно возвращается — API является единственным достоверным источником информации о том, где находится репозиторий. Не формируйте, не разбирайте и не задавайте URL репозитория вручную.

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}"
        }
      ]
    }
  }
}

This page covers projects backed by Altium-hosted Git repositories. Репозитории, размещённые в другом месте, не рассматриваются в этом руководстве.

Шаг 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), что и в описанных выше методах.

Согласно стандарту URI, любые специальные символы в userinfo должны быть процентно закодированы — например, @ преобразуется в %40. Для token:{access-token}   в примере выше это ничего не меняет, но имеет значение, если вы используете другое значение (например, адрес электронной почты) в качестве имени пользователя.

Шаг 3: Работа с репозиторием

После клонирования репозиторий ведёт себя как любой стандартный удалённый Git-репозиторий:

cd <your-repository>

# Make changes, then push as usual
git add .
git commit -m "Update firmware sources"
git push

Платформа отслеживает изменения в ветке master репозитория проекта. Отправляйте изменения, которые проект должен подхватить, в master

Недействительный или истёкший токен доступа приводит к ошибке аутентификации при выполнении операций 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.

См. также

AI-LocalizedЛокализовано с помощью ИИ
Если вы обнаружили проблему, выделите текст/изображение и нажмитеCtrl + Enter, чтобы отправить нам свой отзыв.
Content