Caminho no Gestor bibliotecas/deploy-lock.php
Trava de deploy por ambiente (req-197). Um arquivo de trava impede dois deploys ao mesmo tempo no mesmo ambiente. Quem usa:
-
a atualização do sistema (
temp/deploy.lock, no CLI e no web); -
o deploy de projeto por API (mesmo arquivo; recusa com HTTP 409);
-
o pipeline
c2f project:update-all(trava por destino emGIT/.c2f-deploy-locks/, com espera).
A biblioteca é pura: não depende do Gestor, porque roda no atualizador independente, na API e no CLI. Para usar, carregue com require_once.
-
Criação atômica (
fopencomx): só um processo cria o arquivo. -
Conteúdo da trava: dono, detalhe, execução, máquina, PID, início e validade (
expires_at). -
Trava vencida (processo que morreu sem liberar): é tirada do caminho por
renameatômico e assumida. Quem assumiu recebestalepara registrar no log. -
Liberação e renovação: só o dono do
tokenlibera;deploy_lock_refresh()estende a validade em execuções longas.
Uso
-
deploy_lock_acquire($arquivo, $dono, $ttl)tenta pegar a trava. Devolveoke otoken, oubusycom quem está com ela (holder). Cria a pasta se faltar. -
deploy_lock_release($arquivo, $token)libera, só com o token certo;deploy_lock_refresh($arquivo, $token, $ttl)estende a validade. -
deploy_lock_read($arquivo)lê a trava atual;deploy_lock_expired($trava)diz se venceu (trava ilegível conta como vencida). -
deploy_lock_describe($trava)monta o texto de recusa: dono, detalhe, execução, máquina, PID, início e validade.
Funções
Gerado a partir de gestor/bibliotecas/deploy-lock.php · 6 funções
deploy_lock_read
ver no código · linha 24 ↗deploy_lock_read(string $arquivo): ?arrayLê a trava atual.
Parâmetros
$arquivostring
Retorno
deploy_lock_expired
ver no código · linha 31 ↗deploy_lock_expired(?array $trava, ?int $agora = null): boolA trava está vencida? (sem validade legível conta como vencida)
Parâmetros
$trava?array$agora?int
Retorno
deploy_lock_acquire
ver no código · linha 46 ↗deploy_lock_acquire(string $arquivo, array $dono, int $ttl = DEPLOY_LOCK_TTL): arrayTenta pegar a trava.
Parâmetros
$arquivostring- Caminho do arquivo de trava (a pasta é criada se faltar).
$donoarray- ['owner' => quem (ex.: 'update-system', 'api-project-update', 'pipeline'),
$ttlint- Validade em segundos.
Retorno
deploy_lock_release
ver no código · linha 83 ↗deploy_lock_release(string $arquivo, string $token): boolLibera a trava, só se o token for o dela.
Parâmetros
$arquivostring$tokenstring
Retorno
deploy_lock_refresh
ver no código · linha 90 ↗deploy_lock_refresh(string $arquivo, string $token, int $ttl = DEPLOY_LOCK_TTL): boolEstende a validade (execuções longas).
Parâmetros
$arquivostring$tokenstring$ttlint
Retorno
deploy_lock_describe
ver no código · linha 98 ↗deploy_lock_describe(?array $trava): stringTexto curto de quem está com a trava (mensagens de recusa).
Parâmetros
$trava?array
Retorno