left4me: make pip_install self-healing on every apply
The previous shape (`triggered: True`, in git_deploy's triggers list) meant pip_install only ran when something upstream fired. After a partial first-apply failure (where git_deploy succeeded but pip_install failed for an unrelated reason), subsequent applies couldn't recover — git_deploy was already in desired state, nothing fired pip_install. Drop `triggered: True`. Drop pip_install from git_deploy's triggers (bw enforces a triggers→triggered:True invariant). Add `unless`: sudo -u left4me /opt/left4me/.venv/bin/python -c "import l4d2host, l4d2web" to short-circuit when the venv is already correct. Editable installs pick up code changes automatically — no need to re-pip on every git update. For dep changes (rare), nudge manually: bw run ovh.left4me 'sudo -u left4me /opt/left4me/.venv/bin/pip install -e /opt/left4me/src/l4d2host -e /opt/left4me/src/l4d2web'
This commit is contained in:
parent
c2cc3866f3
commit
cac04a456b
1 changed files with 9 additions and 7 deletions
|
|
@ -134,12 +134,12 @@ git_deploy = {
|
||||||
# sudo) — files end up root-owned. Chown so subsequent
|
# sudo) — files end up root-owned. Chown so subsequent
|
||||||
# `pip install -e` running as left4me can write .egg-info/.
|
# `pip install -e` running as left4me can write .egg-info/.
|
||||||
'action:left4me_chown_src',
|
'action:left4me_chown_src',
|
||||||
# create_venv is gated by `unless` for idempotency and doesn't
|
|
||||||
# need to refire on git updates — once the venv exists, it
|
|
||||||
# persists. pip_install IS retriggered so editable installs
|
|
||||||
# pick up the new code.
|
|
||||||
'action:left4me_pip_install',
|
|
||||||
],
|
],
|
||||||
|
# pip_install is NOT in triggers (it's not triggered:True so bw
|
||||||
|
# would reject the edge). It runs on every apply with an `unless`
|
||||||
|
# guard for idempotency; editable installs pick up code changes
|
||||||
|
# without re-running pip. For dep changes (rare), nudge by hand:
|
||||||
|
# `bw run ovh.left4me '<the pip command>'`.
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -181,9 +181,11 @@ actions['left4me_pip_upgrade'] = {
|
||||||
}
|
}
|
||||||
|
|
||||||
actions['left4me_pip_install'] = {
|
actions['left4me_pip_install'] = {
|
||||||
# Single pip invocation installs both editable packages from the same checkout.
|
# Single pip invocation installs both editable packages from the same
|
||||||
|
# checkout. Runs on every apply and self-heals after partial failures;
|
||||||
|
# `unless` short-circuits when both packages are already importable.
|
||||||
'command': 'sudo -u left4me /opt/left4me/.venv/bin/pip install -e /opt/left4me/src/l4d2host -e /opt/left4me/src/l4d2web',
|
'command': 'sudo -u left4me /opt/left4me/.venv/bin/pip install -e /opt/left4me/src/l4d2host -e /opt/left4me/src/l4d2web',
|
||||||
'triggered': True,
|
'unless': 'sudo -u left4me /opt/left4me/.venv/bin/python -c "import l4d2host, l4d2web"',
|
||||||
'cascade_skip': False,
|
'cascade_skip': False,
|
||||||
'needs': [
|
'needs': [
|
||||||
'git_deploy:/opt/left4me/src',
|
'git_deploy:/opt/left4me/src',
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue