32 Home
Артур Галямов edited this page 1 year ago

Мирокод

Платформа ЦРНП "Мирокод"

Общее описание

Платформа "Мирокод" - необходимый инструмент для разработки народных проектов.

Разрабатывается на основе gitea.

Вы можете собрать и развернуть этот проект у себя

В перспективе планируется реализовать:

  1. Карта пользователей (их ресурсы, компетенции и интересы), проектов, сообществ.
  2. Дерево задач в каждом проекте
  3. Дерево проектов
  4. Проекты могут быть не только для разработки, но и любые общественные проекты
  5. У пользователя можно будет указать ресурсы, компетенции, интересы
  6. Объединяются в одном месте, люди, проекты, ресурсы и компетенции, а также инструменты ведения проектов и решения задач.
  7. В перспективе самый простой модуль игроподобия, для того чтобы легко подбирать новые задачи из любых проектов
  8. Метрика по проектам

Как подключиться к проекту

  1. Написать куратору - https://t.me/AlexeiBv
  2. Выбрать задачу и уведомить об этом куратора.
  3. Все изменения проводить в отдельной ветке отщеплённой от dev_mirocod.
  4. Для вливания изменений делаем запросы на слияние

Разработка

Основная ветка для разработки - dev_mirocod. Она отщеплена от стабильного релиза.

При реализации задачи:

  1. Клонируем себе (если уже не склонирован)
git clone gitea@git.mirocod.ru:MIROCOD/Platform_Mirocod.git
  1. Отщепляем от dev_mirocod новую ветку (например, user_map).
git branch user_map

переходим на новую ветку

git checkout user_map 

Пушим ветку в основной репозиторий

git push origin user_map:user_map

Указываем в задаче нужную ветку

  1. Проводим изменения в нашей новой ветке.
  2. Добавляем новые файлы к коммиту
git add .
  1. Коммитим себе локально
git commit -m "Новые изменения #X"

, где #X - номер задачи, например #12

  1. Делаем запрос на слияние в ветку dev_mirocod в репозитории на сайте.

Выкатывание

  1. Начинаем локально.

  2. запускаем очистку

    TAGS="bindata sqlite sqlite_unlock_notify" make build clean
    
  3. Запускаем сами тесты:

    TAGS="bindata sqlite sqlite_unlock_notify" make test
    
  4. Если что-то сломалось, исправляем и делаем push в ветку dev_mirocod.

  5. Переходим на хостинг.

  6. На всякий случай проверить, что есть дамп БД gitea (в самом свежем tgz-архиве в папке /home/backup), например, через sudo mc.

  7. На всякий случай делаем дамп папки с данными (можно перезаписать).

    sudo zip -r /home/backup/home.gitea.data.zip /home/gitea/data/
    
  8. Заходим под пользователем gitea.

    sudo -i -u gitea
    
  9. Переходим в рабочую папку проекта.

    cd /home/gitea/platform_mirocod/
    
  10. Стягиваем последние изменения из ветки dev_mirocod.

    git pull origin dev_mirocod
    
  11. Пересобираем проект.

    TAGS="bindata" make build
    
  12. Выполняем миграции:

    ./gitea migrate
    
  13. Выходим из-под пользователя gitea:

    exit
    
  14. Остановить службу gitea:

    sudo systemctl stop gitea.service
    
  15. Заходим под пользователем gitea.

    sudo -i -u gitea
    
  16. Заменить исполняемый файл:

    cp ./platform_mirocod/gitea .
    
  17. Выходим из-под пользователя gitea:

    exit
    
  18. Запускаем службу gitea:

    sudo systemctl start gitea.service
    

Возникающие ошибки

  1. make: *** [public/js/index.js] Ошибка 137

    • Причина: недостаток ОЗУ.
    • Лечение: освободить ОЗУ, например, временно отключить mysql.service. Можно ещё mattermost.service. Только затем обязательно включить его снова.

$ sudo systemctl stop mysql.service

  1. Makefile:597: ошибка выполнения рецепта для цели «gitea» make: *** [gitea] Ошибка 1

В консоли виды ошибки, наподобие go build code.gitea.io/gitea/modules/public: /usr/local/go/pkg/tool/linux_amd64/compile: signal: killed

  • Причина и лечение те же - недостаток ОЗУ.