Commit 8ad3c1db authored by Пискунов Андрей Дмитриевич's avatar Пискунов Андрей Дмитриевич
Browse files

:bug: Fix find project by group

parent 28e15d36
No related merge requests found
Showing with 32 additions and 12 deletions
+32 -12
GITLAB_TOKEN=
GITLAB_HOST=
TIMEOUT=
\ No newline at end of file
GROUP_NAME=gitlab-group-name
# Скрипт для создания репозиториев gitlab для студентов
## How to run
1. `git clone https://git.miem.hse.ru/biv23x-ps/create-students-repos.git`
1. `cp .env.example .env`
1. fill .env
1. `npm i`
1. `mkdir logs`
1. `sh run.sh `
\ No newline at end of file
## Как запустить
1. Создать группу в Gitlab ручками
1. Получить Personal Access Token в Gitlab. Лучше выдать все scoups
Вот [ссылка](https://git.miem.hse.ru/-/profile/personal_access_tokens) для МИЭМовского Gitlab-а
1. Заполнить `.env ` файл
```
GITLAB_TOKEN=<ваш сгенерированный Gitlab token>
GITLAB_HOST=<ссылка на ваш Gitlab>
GROUP_NAME=<имя созданной вами группы>
TIMEOUT=<раз во сколько милисекунд скрипт будет искать новосозданных студентов>
```
Пример заполнения .env для МИЭМовского Gitlab
```
GITLAB_TOKEN=knmknDqqwdQuj
GITLAB_HOST=https://git.miem.hse.ru
GROUP_NAME=biv23x-ps
TIMEOUT=120000
```
\ No newline at end of file
......@@ -29,8 +29,8 @@ function readStudentsFile() {
});
}
async function getProject(slug) {
const [project] = await api.Projects.search(slug);
async function getProject(slug, groupId) {
const [project] = await api.Projects.search(slug, { namespace_id: groupId });
return project;
}
......@@ -62,11 +62,17 @@ async function addUserToProject(userId, projectId) {
async function main() {
console.info(`Start sync ${new Date().toISOString()}`);
const group = await api.Groups.show(config.groupName);
if (!group) {
console.error(`Group ${config.groupName} in ${config.gitlabHost} not found. Create it before running this service.`);
return;
}
const students = readStudentsFile();
for (const student of students) {
try {
const project = await getProject(student.slug) || await addProjectToGroup(student.name, student.slug);
const project = await getProject(student.slug, group.id) || await addProjectToGroup(student.name, student.slug);
const user = await getUserBySlug(student.slug);
if (!user) {
......@@ -85,6 +91,8 @@ async function main() {
console.log("Start program");
main().catch(err => console.error(err));
setInterval(() => {
main().catch(err => console.error(err));
}, config.timeout);
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment