diff --git a/.gitea/workflows/deploy-staging.yml b/.gitea/workflows/deploy-staging.yml index 445ec571..c2e66d02 100644 --- a/.gitea/workflows/deploy-staging.yml +++ b/.gitea/workflows/deploy-staging.yml @@ -83,7 +83,7 @@ jobs: ssh_root="${RUNNER_TEMP}/staging-ssh" key_path="$ssh_root/id_ed25519" known_hosts_path="$ssh_root/known_hosts" - incoming="$DEPLOY_PATH/.incoming/$GITEA_RUN_NUMBER-$GITEA_RUN_ATTEMPT" + incoming="$DEPLOY_PATH/.incoming/${GITEA_RUN_ID:?}-${GITEA_RUN_ATTEMPT:-1}" install -m 700 -d "$ssh_root" printf '%s\n' "$SSH_PRIVATE_KEY" | tr -d '\r' > "$key_path" printf '%s\n' "$STAGING_KNOWN_HOSTS" | tr -d '\r' > "$known_hosts_path" diff --git a/.gitea/workflows/migrate-staging-database.yml b/.gitea/workflows/migrate-staging-database.yml index 0c281fc3..c9188dfb 100644 --- a/.gitea/workflows/migrate-staging-database.yml +++ b/.gitea/workflows/migrate-staging-database.yml @@ -69,7 +69,7 @@ jobs: ssh_root="${RUNNER_TEMP}/staging-migration-ssh" key_path="$ssh_root/id_ed25519" known_hosts_path="$ssh_root/known_hosts" - incoming="$DEPLOY_PATH/.incoming/$GITEA_RUN_NUMBER-$GITEA_RUN_ATTEMPT" + incoming="$DEPLOY_PATH/.incoming/${GITEA_RUN_ID:?}-${GITEA_RUN_ATTEMPT:-1}" install -m 700 -d "$ssh_root" printf '%s\n' "$SSH_PRIVATE_KEY" | tr -d '\r' > "$key_path" printf '%s\n' "$STAGING_KNOWN_HOSTS" | tr -d '\r' > "$known_hosts_path" diff --git a/frontend/tests/staging-backend-workflows.test.ts b/frontend/tests/staging-backend-workflows.test.ts index 80fda8f5..4eab8e3b 100644 --- a/frontend/tests/staging-backend-workflows.test.ts +++ b/frontend/tests/staging-backend-workflows.test.ts @@ -220,6 +220,13 @@ test("Gitea staging digest resolution selects linux amd64 from manifest arrays", } }); +test("Gitea staging mutations use available run identifiers", () => { + for (const workflow of [read(giteaDeployWorkflow), read(giteaMigrationWorkflow)]) { + assert.match(workflow, /\$\{GITEA_RUN_ID:\?\}-\$\{GITEA_RUN_ATTEMPT:-1\}/); + assert.doesNotMatch(workflow, /GITEA_RUN_NUMBER/); + } +}); + test("staging mutations retain every pending deployment and migration", () => { for (const workflow of [read(deployWorkflow), read(migrationWorkflow)]) { assert.match(