WIP: Deploy Matosthèque #19

Draft
agroudiev wants to merge 19 commits from agroudiev/matostheque into main
Owner
No description provided.
feat(matostheque01): general packaging, missing dependencies
All checks were successful
Check meta / check_meta (push) Successful in 4s
lint / check (push) Successful in 8s
76118ef9b3
feat(matostheque): update dependencies
All checks were successful
lint / check (push) Successful in 8s
783297a34f
feat(matostheque01): update mailhog-python
All checks were successful
lint / check (push) Successful in 8s
946822e3d8
feat(matostheque): fix mailhog hash
All checks were successful
lint / check (push) Successful in 8s
8827e95ca6
feat(matostheque): start to patch settings
All checks were successful
lint / check (push) Successful in 8s
b338b28856
fix(matostheque): use local sources
All checks were successful
lint / check (push) Successful in 7s
b16459be84
feat(matostheque): start to work on the frontend
All checks were successful
lint / check (push) Successful in 7s
f62e77d5ea
feat(matostheque): continue frontend
All checks were successful
lint / check (push) Successful in 8s
5c1e31a72e
feat(matostheque): set email and CAS
All checks were successful
lint / check (push) Successful in 8s
babfa71189
feat(matostheque): add secrets and migration
All checks were successful
lint / check (push) Successful in 8s
12220f9a73
feat(matostheque): update CAS bypass
All checks were successful
lint / check (push) Successful in 7s
Check meta / check_meta (pull_request) Successful in 3s
lint / check (pull_request) Successful in 7s
dbb0de8db0
ecoppens left a comment
Owner

Y'a quelques trucs qui m'étonnent sur le module mais je vais tester de mon côté pour pas dire de bêtises

Y'a quelques trucs qui m'étonnent sur le module mais je vais tester de mon côté pour pas dire de bêtises
@ -0,0 +145,4 @@
} // commonServiceConfig;
};
systemd.services.matostheque-frontend = {
Owner

Ce service me paraît étonnant pour un frontend fait en Next.js, logiquement ça compile les fichiers statiquement et tu n'as plus besoin de lancer node etc?
Je vais regarder de mon côté

Ce service me paraît étonnant pour un frontend fait en Next.js, logiquement ça compile les fichiers statiquement et tu n'as plus besoin de lancer `node` etc? Je vais regarder de mon côté
Owner

je vois que ça n'a pas mis mon commentaire sur la bonne ligne, voir ligne 148 plutot

je vois que ça n'a pas mis mon commentaire sur la bonne ligne, voir ligne 148 plutot
Author
Owner

Oui, Tom m’avait déjà fait la remarque, il faut que j’ajoute output: 'export’, dans la config Next.js et que je refactor pour avoir un seul service

Oui, Tom m’avait déjà fait la remarque, il faut que j’ajoute `output: 'export’,` dans la config Next.js et que je refactor pour avoir un seul service
@ -0,0 +75,4 @@
installPhase = ''
mkdir -p $out/opt/matostheque
cp -r . $out/opt/matostheque
Owner

Si tu fais comme ça, il ne faut pas être dans l'environment buildPythonApplication, tu peux juste être dans mkDerivation

Si tu fais comme ça, il ne faut pas être dans l'environment `buildPythonApplication`, tu peux juste être dans `mkDerivation`
Author
Owner

Ça me permet d’avoir makeWrapper

Ça me permet d’avoir `makeWrapper`
Owner

makeWrapper est dans le package makeWrapper si tu veux l'utiliser

`makeWrapper` est dans le package `makeWrapper` si tu veux l'utiliser
@ -0,0 +5,4 @@
src:
{
buildNpmPackage,
host,
Owner

dans l'idéal je dirais qu'on a pas envie d'avoir un input host, mais avec NEXT.JS c'est un peu relou, mais ducoup:

  • soit du garde comment tu as fait, mais il faut une valeur par défaut, donc tu peux écrire host ? "", à la place de host,
  • soit tu supprimes ça, dans les URLs {NEXT,REACT}_*_URL tu mets un default et tu override le package quand tu en as besoin (typiquement dans ton module), avec <tonpackage>.overrideAttrs (regarde overrideAttrs sur internet si jamais)
dans l'idéal je dirais qu'on a pas envie d'avoir un input `host`, mais avec NEXT.JS c'est un peu relou, mais ducoup: - soit du garde comment tu as fait, mais il faut une valeur par défaut, donc tu peux écrire `host ? "",` à la place de `host,` - soit tu supprimes ça, dans les URLs `{NEXT,REACT}_*_URL` tu mets un default et tu override le package quand tu en as besoin (typiquement dans ton module), avec `<tonpackage>.overrideAttrs` (regarde overrideAttrs sur internet si jamais)
agroudiev marked this conversation as resolved
@ -0,0 +28,4 @@
NEXT_PUBLIC_DJANGO_SERVER = "https://${host}/api";
NEXT_PUBLIC_ASSETS = "https://${host}/static/";
NEXT_TELEMETRY_DISABLED = "1";
REACT_APP_API_URL = "https://${host}/api";
Owner

Tu peux mettre les variables d'env dans l'attrs env:

env = {
  NEXT_PUBLIC_DJANGO_SERVER = "https://${host}/api";
  ...
};

Ça sera mieux pour la lecture, et les résultats sont différents (env est plus résilient, de mémoire, env fait comme export alors que si tu fais pas, ça n'export pas, mais à vérifier exactement du comportement)

Tu peux mettre les variables d'env dans l'attrs `env`: ```nix env = { NEXT_PUBLIC_DJANGO_SERVER = "https://${host}/api"; ... }; ``` Ça sera mieux pour la lecture, et les résultats sont différents (env est plus résilient, de mémoire, `env` fait comme `export` alors que si tu fais pas, ça n'`export` pas, mais à vérifier exactement du comportement)
agroudiev marked this conversation as resolved
@ -0,0 +34,4 @@
runHook preInstall
mkdir -p $out
mkdir -p $out/bin
Owner

Tu peux garder que mkdir -p $out/bin car si $out n'existe pas, avec l'option -p de mkdir, ça va créer $out avant de créer $out/bin

cf. https://linux.die.net/man/1/mkdir

Tu peux garder que `mkdir -p $out/bin` car si `$out` n'existe pas, avec l'option `-p` de `mkdir`, ça va créer `$out` avant de créer `$out/bin` cf. https://linux.die.net/man/1/mkdir
agroudiev marked this conversation as resolved
@ -0,0 +39,4 @@
cp -r public $out/public
cp -r node_modules $out/node_modules
cp package.json $out/package.json
cp next.config.js $out/next.config.js
Owner

Petit tips bash, tu peux compresser toutes les lignes de cp en une:
cp -r {.next,public,node_modules,package.json,next.config.js} $out est exactement comme faire

cp -r .next $out

cp -r public $out etc.

Petit tips bash, tu peux compresser toutes les lignes de `cp` en une: `cp -r {.next,public,node_modules,package.json,next.config.js} $out` est exactement comme faire `cp -r .next $out` `cp -r public $out` etc.
agroudiev marked this conversation as resolved
@ -0,0 +44,4 @@
export NEXT_PUBLIC_DJANGO_SERVER=https://${host}/api
export NEXT_PUBLIC_ASSETS=https://${host}/static/
export NEXT_TELEMETRY_DISABLED=1
export REACT_APP_API_URL=https://${host}/api
Owner

Donc effectivement tu n'auras pas besoin de ça si tu mets les variables d'env dans env

Donc effectivement tu n'auras pas besoin de ça si tu mets les variables d'env dans `env`
agroudiev marked this conversation as resolved
meta/nodes.nix Outdated
@ -85,0 +95,4 @@
deployment.targetHost = "129.199.146.94";
stateVersion = "24.05";
Owner

Tu n'as pas installé un NixOS 25.05 ? si oui le stateVersion doit être 25.05

La documentation de wiki (lacunaire): https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion

Tu n'as pas installé un NixOS 25.05 ? si oui le stateVersion doit être 25.05 La documentation de wiki (lacunaire): https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
agroudiev marked this conversation as resolved
@ -0,0 +79,4 @@
groups.matostheque = { };
# Let nginx read files created by the matostheque service.
users.nginx.extraGroups = [ "matostheque" ];
Owner

Je me demande si on peut pas se débrouiller pour ne pas avec l'extraGroup aussi, comme ça ça évite de créer un user et group matosthèque et on peut utiliser le DynamicUser de systemd

Je me demande si on peut pas se débrouiller pour ne pas avec l'extraGroup aussi, comme ça ça évite de créer un user et group matosthèque et on peut utiliser le DynamicUser de systemd
refactor(matostheque): clean packaging
All checks were successful
Check meta / check_meta (push) Successful in 3s
Check meta / check_meta (pull_request) Successful in 3s
lint / check (push) Successful in 8s
lint / check (pull_request) Successful in 8s
51d1cc0fc5
chore(matostheque): remove source at the root
All checks were successful
Check meta / check_meta (pull_request) Successful in 3s
lint / check (push) Successful in 8s
lint / check (pull_request) Successful in 7s
76d85cb689
feat(matostheque): use ENS CAS
All checks were successful
Check meta / check_meta (pull_request) Successful in 5s
lint / check (push) Successful in 11s
lint / check (pull_request) Successful in 10s
473b5a9287
fix(matostheque): assets path and permissions
All checks were successful
Check meta / check_meta (pull_request) Successful in 3s
lint / check (push) Successful in 8s
lint / check (pull_request) Successful in 8s
e45e2a329a
All checks were successful
Check meta / check_meta (pull_request) Successful in 3s
lint / check (push) Successful in 8s
lint / check (pull_request) Successful in 8s
This pull request is marked as a work in progress.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin agroudiev/matostheque:agroudiev/matostheque
git switch agroudiev/matostheque

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff agroudiev/matostheque
git switch agroudiev/matostheque
git rebase main
git switch main
git merge --ff-only agroudiev/matostheque
git switch agroudiev/matostheque
git rebase main
git switch main
git merge --no-ff agroudiev/matostheque
git switch main
git merge --squash agroudiev/matostheque
git switch main
git merge --ff-only agroudiev/matostheque
git switch main
git merge agroudiev/matostheque
git push origin main
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
DGNum/lab-infra!19
No description provided.