Open alinkedd opened 8 months ago
npm issues while building https://github.com/diia-open-source/diia-setup-howto/issues/2#issuecomment-1998143871
I trying to build source code and hit different kind of NPM issues. For example npm/cli#5007
Із того що я спостережую, то Дія веде усю розробку на Лінуксі, і потребує глобально установлених наступних тулів
також процес збірки залежить від ts-proto який не має зібраних windows бінарників, тому genproto пакет не функціональний і ламається + там npm root у башевому стилі використовується.
Зараз я намагаюся опублікувати пакети у іншому NPM скопі @kant2002-diia-inhouse
, і для цього роблю форк кожного репозіторія, і маю гілку outhouse
із локальними змінами. ~через те що я на Windows працюю, я не можу зібрати be-types бо пакет be-getproto лише сумісний із Лінукс/Мак де-факто~
(WIP) List of packages/clients to bundle
Prerequisites: Node.js 18 + npm, protoc. Currently, it seems that packages also require eslint, prettier, typescript (5.2.2) installed globally.
Зараз можно прубовати запустити be-documents-service
Для цього, або треба склонувати мій форк або якось запустити NPM пакет @kant2002-diia-inhouse/documents-service
якщо ви на вінді і склонували мій форк, також треба буде локально застосувати патч https://github.com/diia-open-source/be-genproto/pull/4 інакше не буде працювати.
~Також треба запустити HashiCorp Vault або щось що підтримує цей протокол.~(це я погарячкував) Далі вже требе гратися, я так далеко не зайшов. Якщо у мене буде повна інструкція, я додам інформацю.
Тестове середовище як вказано у https://github.com/diia-open-source/diia-setup-howto/blob/main/backend/docker-compose.yml не працює із Mongo через дві проблеми
number | undefined
diff --git a/backend/docker-compose.yml b/backend/docker-compose.yml
index a981aa1..acb73c0 100644
--- a/backend/docker-compose.yml
+++ b/backend/docker-compose.yml
@@ -45,6 +45,9 @@ services:
"--replSet",
"diia"
]
+ volumes:
+ - ./scripts/rs-init.sh:/scripts/rs-init.sh
+ - ./scripts/init.js:/scripts/init.js
mongo2:
container_name: mongo2
image: mongo:5
rs.init.sh
#!/bin/bash
DELAY=25
mongo <<EOF
var config = {
"_id": "diia",
"version": 1,
"members": [
{
"_id": 1,
"host": "mongo1:27017",
"priority": 2
},
{
"_id": 2,
"host": "mongo2:27017",
"priority": 1
},
{
"_id": 3,
"host": "mongo3:27017",
"priority": 1
}
]
};
rs.initiate(config, { force: true });
EOF
echo "****** Waiting for ${DELAY} seconds for replicaset configuration to be applied ******"
sleep $DELAY
mongo < /scripts/init.js
init.js
rs.status();
we can join our efforts in monorepo https://github.com/ArtfulBits/diia.monorepo
Public Service Catalog також не може бути створено, через брак пакету "@diia-inhouse/user-service-client"
https://github.com/diia-open-source/be-public-service-catalog/blob/3e70df9fe7f918f17ffe6aa737d8261e9893a770/package.json#L78
Мене от цікавить важливе питання чому саме всі ці пакети вони не змогли налаштувати для чистого форку і організувати нормальне налаштування для того самого новачка який цікавиться строгим Ентерпрайзом аби він зуміг без всяких проблем могли на локальній машині трішки підняти і погратись із кодом, бо для мене це все зараз лише експонат аніж просто засіб який ти можеш детально вивчити шляхом тестів чи просто налаштувати і підняти локально на чистому середовищі. Бо реально я ніч витратив аби +- щось налаштувати (дякуючи JavaScript Січ де на трансляції все це було зроблено перший початок, тільки вже потім мудрував із протобуферами та імплементацією інших частин). Реально без ГПТ + СтекОверфлоу тут наразі не налаштуєш бо дуже багато багів і помилок навіть при стабільній ноді 20.х.х і дуже багато компонентів зроблено аби було. Як і що до того це напевно або моїх знань недостатньо або там реально все доволі туго йде.
Тестове середовище як вказано у https://github.com/diia-open-source/diia-setup-howto/blob/main/backend/docker-compose.yml не працює із Mongo через дві проблеми
- репліка сет треба руками ініціалізувати
- Три ноди мають різні порти, а бекенд дії не підтримує цю конфігурацію. https://github.com/diia-open-source/be-pkg-db/blob/0ac6f89eb7d1a961ced739c033862527caece65f/src/services/database.ts#L95-L103 тип змінної порт
number | undefined
Наскільки я бачив у коді, то бек дії має таку конфігурації тільки вона скоріш за все в ігнорі для репозиторія, але це лише мої здогадки бо зараз важко щось мені описати після 15-ти годинної терапії із цим бекендом. Хай там як наразі дуже багато доведеться писати руцями аби це все підняти на локальній машині і цього "дуже багато" реально багато.
btw, setup stream by JavaScript Січ (@xanf) - https://youtu.be/Pe4N5ssNMTo (in Ukrainian)
замість @diia-inhouse/user-service-client
можна юзати або @kant2002-diia-inhouse/user-service-client
який побудований звідси https://github.com/kant2002/be-user-service-client Це дозволило запустити ще public-service-catalog
@the-az-dev Чи тобі вдалося запустити якусь частину Дії? Бо у мене зараз усе окрім criminal-cert сервіса начебто піднято. Незважаючи, який підхід тобі більше до вподоби, мій, Олександра чи робити усе самотужки, ти можеш знайти нас у телезі https://t.me/+f6d5MCe-euthOTFi можливо там ми тобі швидше зможемо допомогти із стартом.
@the-az-dev Чи тобі вдалося запустити якусь частину Дії? Бо у мене зараз усе окрім criminal-cert сервіса начебто піднято. Незважаючи, який підхід тобі більше до вподоби, мій, Олександра чи робити усе самотужки, ти можеш знайти нас у телезі https://t.me/+f6d5MCe-euthOTFi можливо там ми тобі швидше зможемо допомогти із стартом.
Я лише фокусувався на архітектурі, патернах і роботи авторизації, бо саме там для себе я відкрив нові речі. Доречі, дякую за інвайт в вашу групу, обовязково доєднаюсь, крім того я надіюсь, що Diia Center дозволить сформувати Open Source команду на базі досвідчених програмістів та програмістів ентузіастів, які зможуть елементарно робити взаємодії із шаблонами готово коду ну й робити адекватні рефактори коду, ну й яка буде підтримувати весь цей код як і бекенду так і мобільних апок і ця команда зможе спокійно робити PRи!)
Ще дрібна глобальна залежність https://github.com/diia-open-source/be-gateway-service/issues/4
Комусь вдалося налаштувати все середовище та фактично запустити службу в одному вікні? Has anyone managed to setup the whole environment and actually run a service one windows? @kant2002
The provided documentation is insufficient for assembling backend. As for now, it's more like looking package-by-package for a needle in a haystack, rather than following a structured, streamlined path. Additionally, it appears that the current batch of packages has NOT been tested in a clean environment before being uploaded.
UPD According to Diia representatives, the current batch of BE packages is a snapshot of some (but not all) packages, which have also been stripped of some code for security reasons.
This topic is aimed at coming up with possible solutions for those trying to get it all together. Please feel free to leave your setup problems, as well as link to related issues, PRs, comments, or add other useful information.