Add 'down-on-success' input to action.yml and implement conditional down in post-runner.ts
Some checks failed
Internal - Main - Continuous Integration / ci (push) Has been cancelled
Internal - Main - Continuous Integration / release (push) Has been cancelled
Need fix to Issue / main (push) Has been cancelled

This commit is contained in:
2025-08-03 03:45:16 +07:00
parent 70d1c8d63e
commit 1372c61353
3 changed files with 24 additions and 10 deletions

View File

@@ -48,6 +48,10 @@ inputs:
description: The GitHub token used to create an authenticated client (to fetch the latest version of docker compose). description: The GitHub token used to create an authenticated client (to fetch the latest version of docker compose).
default: ${{ github.token }} default: ${{ github.token }}
required: false required: false
down-on-success:
description: "Whether to down the services on success."
required: false
default: "false"
runs: runs:
using: node20 using: node20

View File

@@ -30,15 +30,16 @@ export async function run(): Promise<void> {
loggerService.debug("docker compose logs:\n" + output); loggerService.debug("docker compose logs:\n" + output);
await dockerComposeService.down({ if (inputs.downOnSuccess) {
dockerFlags: inputs.dockerFlags, await dockerComposeService.down({
composeFiles: inputs.composeFiles, dockerFlags: inputs.dockerFlags,
composeFlags: inputs.composeFlags, composeFiles: inputs.composeFiles,
cwd: inputs.cwd, composeFlags: inputs.composeFlags,
downFlags: inputs.downFlags, cwd: inputs.cwd,
serviceLogger: loggerService.getServiceLogger(inputs.serviceLogLevel), downFlags: inputs.downFlags,
}); serviceLogger: loggerService.getServiceLogger(inputs.serviceLogLevel),
});
}
loggerService.info("docker compose is down"); loggerService.info("docker compose is down");
} catch (error) { } catch (error) {
setFailed(`${error instanceof Error ? error : JSON.stringify(error)}`); setFailed(`${error instanceof Error ? error : JSON.stringify(error)}`);

View File

@@ -14,6 +14,7 @@ export type Inputs = {
composeVersion: string | null; composeVersion: string | null;
githubToken: string | null; githubToken: string | null;
serviceLogLevel: LogLevel; serviceLogLevel: LogLevel;
downOnSuccess: boolean;
}; };
export enum InputNames { export enum InputNames {
@@ -27,6 +28,7 @@ export enum InputNames {
ComposeVersion = "compose-version", ComposeVersion = "compose-version",
GithubToken = "github-token", GithubToken = "github-token",
ServiceLogLevel = "services-log-level", ServiceLogLevel = "services-log-level",
DownOnSuccess = "down-on-success",
} }
export const COMPOSE_VERSION_LATEST = "latest"; export const COMPOSE_VERSION_LATEST = "latest";
@@ -44,6 +46,7 @@ export class InputService {
composeVersion: this.getComposeVersion(), composeVersion: this.getComposeVersion(),
githubToken: this.getGithubToken(), githubToken: this.getGithubToken(),
serviceLogLevel: this.getServiceLogLevel(), serviceLogLevel: this.getServiceLogLevel(),
downOnSuccess: this.getDownOnSuccess(),
}; };
} }
@@ -124,9 +127,15 @@ export class InputService {
const configuredLevel = getInput(InputNames.ServiceLogLevel, { required: false }); const configuredLevel = getInput(InputNames.ServiceLogLevel, { required: false });
if (configuredLevel && !Object.values(LogLevel).includes(configuredLevel as LogLevel)) { if (configuredLevel && !Object.values(LogLevel).includes(configuredLevel as LogLevel)) {
throw new Error( throw new Error(
`Invalid service log level "${configuredLevel}". Valid values are: ${Object.values(LogLevel).join(", ")}` `Invalid service log level "${configuredLevel}". Valid values are: ${Object.values(
LogLevel
).join(", ")}`
); );
} }
return (configuredLevel as LogLevel) || LogLevel.Debug; return (configuredLevel as LogLevel) || LogLevel.Debug;
} }
private getDownOnSuccess(): boolean {
return getInput(InputNames.DownOnSuccess, { required: false }) === "true";
}
} }