mirror of
https://github.com/actions/checkout.git
synced 2026-05-06 23:19:55 +08:00
- Kill git process on timeout: use child_process.spawn directly for
timeout-eligible operations so we have a ChildProcess handle to send
SIGTERM (then SIGKILL after 5s). On Windows, SIGTERM is a forced kill
so the SIGKILL fallback is effectively a no-op there.
- Fix timeout:0 not working: replace falsy || coalescion with explicit
empty-string check so that '0' is not replaced by the default '300'.
- Refactor execGit to use an options object instead of 5 positional
parameters, eliminating error-prone filler args (false, false, {}).
- Pass allowAllExitCodes through to execGitWithTimeout so both code
paths have consistent behavior for non-zero exit codes.
- Add settled guard to prevent double-reject when both close and error
events fire on the spawned process.
- Handle null exit code (process killed by signal) as an error rather
than silently treating it as success.
- Capture stderr in error messages for the timeout path, matching the
information level of the non-timeout exec path.
- Log SIGKILL failures at debug level instead of empty catch block.
- Warn on customListeners being ignored in the timeout path.
- Emit core.warning() when invalid input values are silently replaced
with defaults, so users know their configuration was rejected.
- Add input validation in setTimeout (reject negative values).
- Clarify retry-max-attempts semantics: total attempts including the
initial attempt (3 = 1 initial + 2 retries).
- Remove Kubernetes probe references from descriptions.
- Use non-exhaustive list (e.g.) for network operations in docs to
avoid staleness if new operations are added.
- Add tests for timeout/retry input parsing (defaults, timeout:0,
custom values, invalid input with warnings, backoff clamping) and
command manager configuration (setTimeout, setRetryConfig, fetch).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
144 lines
2.7 KiB
TypeScript
144 lines
2.7 KiB
TypeScript
export interface IGitSourceSettings {
|
|
/**
|
|
* The location on disk where the repository will be placed
|
|
*/
|
|
repositoryPath: string
|
|
|
|
/**
|
|
* The repository owner
|
|
*/
|
|
repositoryOwner: string
|
|
|
|
/**
|
|
* The repository name
|
|
*/
|
|
repositoryName: string
|
|
|
|
/**
|
|
* The ref to fetch
|
|
*/
|
|
ref: string
|
|
|
|
/**
|
|
* The commit to checkout
|
|
*/
|
|
commit: string
|
|
|
|
/**
|
|
* Indicates whether to clean the repository
|
|
*/
|
|
clean: boolean
|
|
|
|
/**
|
|
* The filter determining which objects to include
|
|
*/
|
|
filter: string | undefined
|
|
|
|
/**
|
|
* The array of folders to make the sparse checkout
|
|
*/
|
|
sparseCheckout: string[]
|
|
|
|
/**
|
|
* Indicates whether to use cone mode in the sparse checkout (if any)
|
|
*/
|
|
sparseCheckoutConeMode: boolean
|
|
|
|
/**
|
|
* The depth when fetching
|
|
*/
|
|
fetchDepth: number
|
|
|
|
/**
|
|
* Fetch tags, even if fetchDepth > 0 (default: false)
|
|
*/
|
|
fetchTags: boolean
|
|
|
|
/**
|
|
* Indicates whether to use the --progress option when fetching
|
|
*/
|
|
showProgress: boolean
|
|
|
|
/**
|
|
* Indicates whether to fetch LFS objects
|
|
*/
|
|
lfs: boolean
|
|
|
|
/**
|
|
* Indicates whether to checkout submodules
|
|
*/
|
|
submodules: boolean
|
|
|
|
/**
|
|
* Indicates whether to recursively checkout submodules
|
|
*/
|
|
nestedSubmodules: boolean
|
|
|
|
/**
|
|
* The auth token to use when fetching the repository
|
|
*/
|
|
authToken: string
|
|
|
|
/**
|
|
* The SSH key to configure
|
|
*/
|
|
sshKey: string
|
|
|
|
/**
|
|
* Additional SSH known hosts
|
|
*/
|
|
sshKnownHosts: string
|
|
|
|
/**
|
|
* Indicates whether the server must be a known host
|
|
*/
|
|
sshStrict: boolean
|
|
|
|
/**
|
|
* The SSH user to login as
|
|
*/
|
|
sshUser: string
|
|
|
|
/**
|
|
* Indicates whether to persist the credentials on disk to enable scripting authenticated git commands
|
|
*/
|
|
persistCredentials: boolean
|
|
|
|
/**
|
|
* Organization ID for the currently running workflow (used for auth settings)
|
|
*/
|
|
workflowOrganizationId: number | undefined
|
|
|
|
/**
|
|
* Indicates whether to add repositoryPath as safe.directory in git global config
|
|
*/
|
|
setSafeDirectory: boolean
|
|
|
|
/**
|
|
* User override on the GitHub Server/Host URL that hosts the repository to be cloned
|
|
*/
|
|
githubServerUrl: string | undefined
|
|
|
|
/**
|
|
* Timeout in seconds for each network git operation attempt (e.g. fetch, lfs-fetch, ls-remote).
|
|
* 0 means no timeout.
|
|
*/
|
|
timeout: number
|
|
|
|
/**
|
|
* Total number of attempts for each network git operation (including the initial attempt).
|
|
* For example, 3 means one initial attempt plus up to 2 retries.
|
|
*/
|
|
retryMaxAttempts: number
|
|
|
|
/**
|
|
* Minimum backoff time in seconds between retry attempts.
|
|
*/
|
|
retryMinBackoff: number
|
|
|
|
/**
|
|
* Maximum backoff time in seconds between retry attempts.
|
|
*/
|
|
retryMaxBackoff: number
|
|
}
|