From b47b2982125548029cd91e70fec183749ce9714c Mon Sep 17 00:00:00 2001 From: Peter <81633644+TThanos3000@users.noreply.github.com> Date: Sun, 25 Oct 2026 18:10:55 +0300 Subject: [PATCH 1/2] ops(dev): pin cache-only recovery to inspected certificate deployment --- .github/workflows/dev-results-disk-recovery.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dev-results-disk-recovery.yml b/.github/workflows/dev-results-disk-recovery.yml index 2708fe3f..96b1fdbe 100644 --- a/.github/workflows/dev-results-disk-recovery.yml +++ b/.github/workflows/dev-results-disk-recovery.yml @@ -26,7 +26,7 @@ concurrency: jobs: recovery: - if: github.ref == 'refs/heads/dev' && (github.event_name == 'push' || (inputs.confirmation == 'RESULTS_DEV_CACHE' && (inputs.mode == 'inspect' || inputs.mode == 'cache-only'))) + if: github.ref == 'refs/heads/ops/dev-certificates-cache-recovery-20261025' && (github.event_name == 'push' || (inputs.confirmation == 'RESULTS_DEV_CACHE' && (inputs.mode == 'inspect' || inputs.mode == 'cache-only'))) environment: dev runs-on: ubuntu-latest timeout-minutes: 10 @@ -50,11 +50,12 @@ jobs: exec 2>&1 test "$(id -u)" = 0 test "$(readlink -f /root/api)" = /root/api + test "$(git -C /root/api rev-parse HEAD)" = a360caa7b5e44a5dc0a2ef5f605aafe253fefe54 git -C /root/api merge-base --is-ancestor beef71645567128398d0afa5a2eb80dc6bc8dac7 HEAD grep -Eq 'server_name[[:space:]]+dev\.procollab\.ru;' /etc/nginx/sites-enabled/dev.procollab.ru container=$(docker ps -q --no-trunc --filter 'label=com.docker.compose.project.working_dir=/root/api' --filter 'label=com.docker.compose.service=web') test -n "$container" - test "$(docker inspect -f '{{.Image}}' "$container")" = sha256:3c1d172f27ac3b5221ca26ebeb478b17d0bb48955be1d52bd515d5fabc6f105b + test "$(docker inspect -f '{{.Image}}' "$container")" = sha256:26cf5e9572c68b81239101a6ad829ef659b52e1807e0a4723e678a049b3aeb0d mode='${{ github.event_name == 'push' && 'inspect' || inputs.mode }}' case "$mode" in inspect|cache-only) ;; *) exit 1;; esac containers() { From b37ea5c653922e357697d36e4725f645afb818da Mon Sep 17 00:00:00 2001 From: Peter <81633644+TThanos3000@users.noreply.github.com> Date: Sun, 25 Oct 2026 18:13:43 +0300 Subject: [PATCH 2/2] fix(dev): keep cache recovery valid after verified API deployments --- .github/workflows/dev-results-disk-recovery.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dev-results-disk-recovery.yml b/.github/workflows/dev-results-disk-recovery.yml index 96b1fdbe..4e8689f4 100644 --- a/.github/workflows/dev-results-disk-recovery.yml +++ b/.github/workflows/dev-results-disk-recovery.yml @@ -26,7 +26,7 @@ concurrency: jobs: recovery: - if: github.ref == 'refs/heads/ops/dev-certificates-cache-recovery-20261025' && (github.event_name == 'push' || (inputs.confirmation == 'RESULTS_DEV_CACHE' && (inputs.mode == 'inspect' || inputs.mode == 'cache-only'))) + if: github.ref == 'refs/heads/dev' && (github.event_name == 'push' || (inputs.confirmation == 'RESULTS_DEV_CACHE' && (inputs.mode == 'inspect' || inputs.mode == 'cache-only'))) environment: dev runs-on: ubuntu-latest timeout-minutes: 10 @@ -50,12 +50,15 @@ jobs: exec 2>&1 test "$(id -u)" = 0 test "$(readlink -f /root/api)" = /root/api - test "$(git -C /root/api rev-parse HEAD)" = a360caa7b5e44a5dc0a2ef5f605aafe253fefe54 git -C /root/api merge-base --is-ancestor beef71645567128398d0afa5a2eb80dc6bc8dac7 HEAD grep -Eq 'server_name[[:space:]]+dev\.procollab\.ru;' /etc/nginx/sites-enabled/dev.procollab.ru container=$(docker ps -q --no-trunc --filter 'label=com.docker.compose.project.working_dir=/root/api' --filter 'label=com.docker.compose.service=web') test -n "$container" - test "$(docker inspect -f '{{.Image}}' "$container")" = sha256:26cf5e9572c68b81239101a6ad829ef659b52e1807e0a4723e678a049b3aeb0d + test "$(docker inspect -f '{{.State.Running}}' "$container")" = true + case "$(docker inspect -f '{{.Config.Image}}' "$container")" in + procollab-dev-api:*) ;; + *) echo 'Unexpected DEV runtime image' >&2; exit 1 ;; + esac mode='${{ github.event_name == 'push' && 'inspect' || inputs.mode }}' case "$mode" in inspect|cache-only) ;; *) exit 1;; esac containers() {