Stabilize exec CI and disable scheduled runs
Some checks failed
CI / PR gate (macos-latest) (push) Has been cancelled
CI / PR gate (ubuntu-24.04) (push) Has been cancelled
CI / Extended Linux runtime (push) Has been cancelled
CI / Portable build (alpine-musl) (push) Has been cancelled
CI / Portable build (debian-stable-glibc) (push) Has been cancelled
CI / Portable build (ubuntu-24.04-glibc) (push) Has been cancelled
CI / Package recipe gate (push) Has been cancelled

This commit is contained in:
m1ngsama 2026-05-29 15:28:39 +08:00
parent c04be0b263
commit 5ac760d196
3 changed files with 8 additions and 9 deletions

View file

@ -6,8 +6,6 @@ on:
pull_request: pull_request:
branches: [ main, 'release/**' ] branches: [ main, 'release/**' ]
workflow_dispatch: workflow_dispatch:
schedule:
- cron: '17 3 * * *'
permissions: permissions:
contents: read contents: read
@ -56,7 +54,7 @@ jobs:
extended-linux-runtime: extended-linux-runtime:
name: Extended Linux runtime name: Extended Linux runtime
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || github.event_name == 'push' if: github.event_name == 'workflow_dispatch' || github.event_name == 'push'
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
@ -131,7 +129,7 @@ jobs:
portable-container-builds: portable-container-builds:
name: Portable build (${{ matrix.name }}) name: Portable build (${{ matrix.name }})
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || github.event_name == 'push' if: github.event_name == 'workflow_dispatch' || github.event_name == 'push'
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
strategy: strategy:
fail-fast: false fail-fast: false
@ -166,7 +164,7 @@ jobs:
package-recipe-gate: package-recipe-gate:
name: Package recipe gate name: Package recipe gate
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || github.event_name == 'push' if: github.event_name == 'workflow_dispatch' || github.event_name == 'push'
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:

View file

@ -1,7 +1,7 @@
# CI/CD and Release Governance # CI/CD and Release Governance
TNT is a C SSH terminal chat server. The CI/CD system is designed for a public TNT is a C SSH terminal chat server. The CI/CD system is designed for a public
open-source project: fast feedback on pull requests, broader scheduled open-source project: fast feedback on pull requests, broader push and manual
validation across target environments, reproducible release artifacts, and a validation across target environments, reproducible release artifacts, and a
manual production deployment boundary. manual production deployment boundary.
@ -31,12 +31,11 @@ Purpose:
before merge. before merge.
- Avoid slow soak, valgrind, and container matrix jobs on every PR. - Avoid slow soak, valgrind, and container matrix jobs on every PR.
### Extended and Nightly Validation ### Extended Validation
Workflow: `.github/workflows/ci.yml` Workflow: `.github/workflows/ci.yml`
Runs on `main` or `release/**` pushes, manual dispatch, and the nightly Runs on `main` or `release/**` pushes and manual dispatch:
schedule:
- `extended-linux-runtime` - `extended-linux-runtime`
- Runs `RUN_INTEGRATION=1 RUN_SOAK=1 RUN_SLOW_CLIENT=1 make release-check`. - Runs `RUN_INTEGRATION=1 RUN_SOAK=1 RUN_SLOW_CLIENT=1 make release-check`.

View file

@ -822,9 +822,11 @@ void input_run_session(client_t *client) {
if (client->exec_command[0] != '\0' || client->exec_command_too_long) { if (client->exec_command[0] != '\0' || client->exec_command_too_long) {
int exit_status = exec_dispatch(client); int exit_status = exec_dispatch(client);
ssh_channel_request_send_exit_status(client->channel, exit_status); ssh_channel_request_send_exit_status(client->channel, exit_status);
ssh_blocking_flush(client->session, 1000);
ssh_channel_send_eof(client->channel); ssh_channel_send_eof(client->channel);
ssh_blocking_flush(client->session, 1000); ssh_blocking_flush(client->session, 1000);
ssh_channel_close(client->channel); ssh_channel_close(client->channel);
ssh_blocking_flush(client->session, 1000);
goto cleanup; goto cleanup;
} }