Difference between revisions of "Интеграция с github/gitlab"

From EjudgeWiki
 
(...)
Line 1: Line 1:
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Интеграция с github/gitlab]]
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Интеграция с github/gitlab]]
 +
 +
Поддерживается с версии [[Изменения в версии 3.10.0|3.10.0]].
 +
 +
Система ejudge поддерживает хранение исходного кода решений
 +
участников в системах контроля версий github или gitlab.
 +
При определенных событиях в репозитории (например,
 +
при событии push) система контроля версий обращается по заранее
 +
настроенному URL (webhook), уведомляя ejudge, что можно тестировать
 +
очередную версию исходного кода.
 +
Затем ejudge выполняет загрузку исходного кода из репозитория
 +
с помощью git clone, компиляцию и тестирование этого кода.
 +
 +
=== Интеграция со стороны участника ===
 +
 +
Чтобы ejudge мог склонировать исходный код из репозитория,
 +
потребуется ключ ssh. Можно использовать существующий,
 +
который используется для других целей, но предпочтительнее
 +
сгенерировать новую пару из приветного и публичного ключа специально для
 +
использования ejudge. Такой ключ называется deploy key.
 +
 +
==== Генерация ключа ====
 +
 +
Сгенерировать пару ключей можно с помощью команды <code>ssh-keygen -t ed25519 -f ej_deploy</code>. Passphrase нужно оставить пустым.
 +
При исполнении команды на стандартный поток вывода
 +
будет примерно следующий вывод:
 +
 +
$ ssh-keygen -t ed25519 -f ej_deploy
 +
Generating public/private ed25519 key pair.
 +
Enter passphrase (empty for no passphrase):
 +
Enter same passphrase again:
 +
Your identification has been saved in ej_deploy
 +
Your public key has been saved in ej_deploy.pub
 +
The key fingerprint is:
 +
SHA256:MZcQPKClDzn4AcM+S2tBiIJLgWKMciwxK1tj38nMs9k cher@fedora
 +
The key's randomart image is:
 +
+--[ED25519 256]--+
 +
|O*+  ooo.      |
 +
|@*=+ =  o. .    |
 +
|O*= B  o.o      |
 +
|o+=+ X . +      |
 +
|.. =o O S        |
 +
|  +    =        |
 +
| .    o E        |
 +
|                |
 +
|                |
 +
+----[SHA256]-----+
 +
 +
В итоге в текущем каталоге появятся файл <code>ej_deploy.pub</code> &mdash; это ппубличный ключ, и файл <code>ej_deploy</code> &mdash; это приватный ключ.
 +
Публичный ключ нужно добавить в список deploy keys в системе github или gitlab.
 +
 +
==== Добавление deploy key в github ====
 +
 +
Для добавления ключа на странице проекта перейдите
 +
в раздел "Settings".
 +
 +
[https://ejudge.ru/wikiimg/github-settings.png]

Revision as of 07:40, 23 December 2022

Навигация: Главная страница/Система ejudge/Использование/Интеграция с github/gitlab

Поддерживается с версии 3.10.0.

Система ejudge поддерживает хранение исходного кода решений участников в системах контроля версий github или gitlab. При определенных событиях в репозитории (например, при событии push) система контроля версий обращается по заранее настроенному URL (webhook), уведомляя ejudge, что можно тестировать очередную версию исходного кода. Затем ejudge выполняет загрузку исходного кода из репозитория с помощью git clone, компиляцию и тестирование этого кода.

Интеграция со стороны участника

Чтобы ejudge мог склонировать исходный код из репозитория, потребуется ключ ssh. Можно использовать существующий, который используется для других целей, но предпочтительнее сгенерировать новую пару из приветного и публичного ключа специально для использования ejudge. Такой ключ называется deploy key.

Генерация ключа

Сгенерировать пару ключей можно с помощью команды ssh-keygen -t ed25519 -f ej_deploy. Passphrase нужно оставить пустым. При исполнении команды на стандартный поток вывода будет примерно следующий вывод:

$ ssh-keygen -t ed25519 -f ej_deploy
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in ej_deploy
Your public key has been saved in ej_deploy.pub
The key fingerprint is:
SHA256:MZcQPKClDzn4AcM+S2tBiIJLgWKMciwxK1tj38nMs9k cher@fedora
The key's randomart image is:
+--[ED25519 256]--+
|O*+   ooo.       |
|@*=+ =  o. .     |
|O*= B   o.o      |
|o+=+ X . +       |
|.. =o O S        |
|  +    =         |
| .    o E        |
|                 |
|                 |
+----[SHA256]-----+

В итоге в текущем каталоге появятся файл ej_deploy.pub — это ппубличный ключ, и файл ej_deploy — это приватный ключ. Публичный ключ нужно добавить в список deploy keys в системе github или gitlab.

Добавление deploy key в github

Для добавления ключа на странице проекта перейдите в раздел "Settings".

[1]