Reforma příkazů kolem webu #2
Loading…
Reference in a new issue
No description provided.
Delete branch "makefiles"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Tady postupně vzniká návrh, jak nahradit Makefily pomocí klasických shellskriptů. Budu případně rád za zpětnou vazbu z hlediska pohodlnosti psaní takovýchto skriptíků, zatím ale základní operace typu nasazení webu nefungují, takže funkčnost zatím lze testovat jen omezeně.
@ -0,0 +5,4 @@
@echo "Installing version from origin/${BRANCH} ..."
git pull origin ${BRANCH}
git clean -f
make install
/
Blbost, tohle je Makefile_old :-)
@ -0,0 +5,4 @@
echo "Install je trochu magický:
Spusť následující posloupnost příkazů:
make install_venv
Použít
make/…
Totálně jsem zrušil, takže vyřešeno :-)
@ -3,3 +1,1 @@
# Všechny flagy, které se s venvem/virtualenvem/... mají volat patří sem. Volá se "${VENV} cesta"
VENV_PATH ?= env
# Musí být definovaná, i kdyby to měla být "."
# Existence tohohle Makefile je tu jen proto, aby fungovala svalová paměť. Pokud můžete, použijte rovnou `make/…`
Tohle asi může být uvnitř toho cíle, když to stejně je efektivně deprecation warning…
WIP: Reforma příkazů kolem webuto Reforma příkazů kolem webu(Zrušil jsem WIP prefix, ale před mergem do masteru asi počkejme na dokumentaci…)
@ -0,0 +52,4 @@
return 1
fi
BRANCH="$1"
local
@ -0,0 +76,4 @@
}
function install_everything {
# Skoro celé nasazení webu je stejné pro testweb i pro produkci, tak je to tady dohromady
gimli_only
? Používatcollectstatic
by jinde nemělo dávat moc smysl, a měnit práva už vůbec…@ -0,0 +5,4 @@
scp vue_frontend/webpack-stats.json "$GIMLI_LOGIN:$TESTWEB/vue_frontend/"
rsync -ave ssh seminar/static/seminar/vue "$GIMLI_LOGIN:$TESTWEB/seminar/static/seminar/"
# TODO: Je OK tady zapínat venv přímo takhle, nebo by to taky mělo být enkapsulováno do nějakého skriptu (e.g. make/deploy/collect_static)?
Není, je lepší si sourcenout
make/lib.sh
a použítensure_venv
jen proto, aby se to měnilo na jednom místě.@ -0,0 +6,4 @@
scp vue_frontend/webpack-stats.json "$GIMLI_LOGIN:$TESTWEB/vue_frontend/"
rsync -ave ssh seminar/static/seminar/vue "$GIMLI_LOGIN:$TESTWEB/seminar/static/seminar/"
# TODO: Je OK tady zapínat venv přímo takhle, nebo by to taky mělo být enkapsulováno do nějakého skriptu (e.g. make/deploy/collect_static)?
ssh "$GIMLI_LOGIN" "cd $TESTWEB && . env/bin/activate && ./manage.py collectstatic --noinput"
Hezčeji přepsat, tohle se ošklivě čte…
@ -0,0 +8,4 @@
# TODO: This is very ugly, will fix in a future PR (hopefully)
ssh "$GIMLI_LOGIN" "
cd $PRODWEB
. env/bin/activate
Jinak, stejně jako v
push_vue_…
@ -0,0 +6,4 @@
ensure_venv
# TODO: This is very ugly, will fix in a future PR (hopefully)
ssh "$GIMLI_LOGIN" "
set -e
aspoň@ -0,0 +60,4 @@
git fetch --all
# Od teď si musíme dát pozor, abychom nezměnili kód, který právě běží.
# Zkontrolujeme, že se nemění tahle knihovna a skript, který běží.
if test $(git rev-parse @:make/lib.sh) != $(git rev-parse "$BRANCH":make/lib.sh)
Okomentovat, proč nepotřebujeme uvozovky a co je to za magickou syntaxi.
Nakonec jsem tam ty uvozovky dal, tolik tam nevadí a kdyby to někdy někdo upravil, tak to zůstane bezpečné…
make/all
31834b7f8adefault
1a56ba02f3Tak
safe_deploy_branch
se asi chová správně, i.e. dělá to to, co bych čekal :-)(Tady to není poznat, ale na tuhle větev jsem navěsil PR !11, takže nepovažuju za rozumné tuhle větev rebasovat a/nebo squashovat na
master
, protože těžko říct, jak se pak bude mergovat ta druhá. Klasický merge by měl být bezpečný.)@ -0,0 +24,4 @@
test -e '.git' || die "Make skript spuštěn ve špatné složce, spusť ho z kořenového adresáře repozitáře."
function ensure_venv {
test -f "$VENV_PATH/bin/activate" || $VENV "$VENV_PATH"
Tohle není správný check na funkčnost venvu. Může tam být jiný python a podobně…
A zároveň to není správný check pro věci, které vyžadují nainstalovaný web (
make/test
,make/schema
)Testování příkazů:
make/deploy_prod
na testu seběhne (a udělá něco středně divného, ale to je jedno :-)),make/sync_prod_flatpages
nejde otestovat, dokud to není zamergované, amake/push_compiled_vue_to_test
stejně nikoho nezajímá, tak napíšu do dokumentace, že slouží jen pro inspiraci :-)Takže až fixnu
ensure_venv
, tak asi možno zamergovat a nasadit.Dafuq? What happened?
Přečteno (ale s mými znalostmi bashe…).
Neotestováno.
Ale seems legit.
@ -21,0 +7,4 @@
Potřebné vybavení
-------
Tento soupis cílí na nějakého typického vývojáře webu – Linuxáka. Jistě je
:(
Konkrétně to může lidi odradit. (Ne že bych nepodporoval stereotypy.)
@ -21,0 +27,4 @@
- Ideálně ve verzi 3.9 (to je to, co je aktuálně (2022) na Gimlim)
- Včetně pip-u (na Ubuntu balíček ``python3-pip``), venvu (``python3-venv``) a knihoven pro kompilaci
Cčkových rozšíření (``python3-dev``)
- Knihovna pro práci s PostgreSQL (``libpq-dev``)
Sem bych napsal proč je potřeba („Přece jen já přece neběžím na PostgreSQL, tak proč tu je?“)
@ -21,0 +161,4 @@
- Orgovské účty: ``o:o``, ``o1:o`` až ``o3:o``
- Řešitelské účty: ``r:r``, ``r1:r`` až ``r3:r``
Všechny tyto účty jsou (?) svázané s nějakými fiktivními osobami, není ale zřejmé se
S náhodnými. To se spravý při přepsání testdat do rozumného stavu.
@ -0,0 +7,4 @@
only_in_directory "$PRODWEB"
CURRENT_BRANCH="$(git branch --show-current)"
BRANCH="${1:-$CURRENT_BRANCH}"
Tohle není nikde zdokumentované?
Ale vlastně je to tak možná dobře. (Zprvu jsem si nevšiml toho testu níže…)
Nepřijde mi užitečné popisovat každou jednu proměnnou, zvlášť když má životnost 8 řádků a IMHO se jmenuje dostatečně popisně[^Pokud tomu tak není, tak je to validní připomínka].
Myslel jsem to, že deploy_prod bere i větev.
Větší problém je s proměnnými v
make/lib.sh
, některé jsou úplně nepoužité a u některých už nevím, co měly být ($BRANCH
)… Ale mám nějaké použití…@ -0,0 +5,4 @@
# Prerekvizity nekontrolujeme, dokud voláme další make skripty, tak by akorát
# vedly k víc dotazům na stejnou věc a bylo by to otravné. Pokud tu někdy bude
# něco jiného, tak pak ať tu prerekvizity zmíněné jsou.
Nechceš je sem i do komentáře dopsat?
Aby to v nastalém případě stačilo odkomentovat?
Pull request closed