UNPKG

@catladder/cli

Version:

Panter cli tool for cloud CI/CD and DevOps

770 lines (769 loc) • 24.9 kB
/** * This file was automatically generated by json-schema-to-typescript. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run json-schema-to-typescript to regenerate this file. */ /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "image". */ export type Image = string | { /** * Full name of the image that should be used. It should contain the Registry part if needed. */ name: string; /** * Command or script that should be executed as the container's entrypoint. It will be translated to Docker's --entrypoint option while creating the container. The syntax is similar to Dockerfile's ENTRYPOINT directive, where each shell token is a separate string in the array. * * @minItems 1 */ entrypoint?: any[]; pull_policy?: ("always" | "never" | "if-not-present") | ("always" | "never" | "if-not-present")[]; } | string[]; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "services". */ export type Services = (string | { /** * Full name of the image that should be used. It should contain the Registry part if needed. */ name: string; /** * @minItems 1 */ entrypoint?: string[]; pull_policy?: ("always" | "never" | "if-not-present") | ("always" | "never" | "if-not-present")[]; /** * @minItems 1 */ command?: string[]; alias?: string; variables?: JobVariables; })[]; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "before_script". */ export type BeforeScript = (string | string[])[]; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "after_script". */ export type AfterScript = (string | string[])[]; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "!reference". */ export type Reference = string[]; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "interruptible". */ export type Interruptible = boolean; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "retry". */ export type Retry = RetryMax | { max?: RetryMax; when?: RetryErrors | RetryErrors[]; }; /** * The number of times the job will be retried if it fails. Defaults to 0 and can max be retried 2 times (3 times total). * * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "retry_max". */ export type RetryMax = number; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "retry_errors". */ export type RetryErrors = "always" | "unknown_failure" | "script_failure" | "api_failure" | "stuck_or_timeout_failure" | "runner_system_failure" | "runner_unsupported" | "stale_schedule" | "job_execution_timeout" | "archived_failure" | "unmet_prerequisites" | "scheduler_failure" | "data_integrity_failure"; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "tags". */ export type Tags = (string | string[])[]; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "timeout". */ export type Timeout = string; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "include_item". */ export type IncludeItem = string | { /** * Relative path from local repository root (`/`) to the `yaml`/`yml` file template. The file must be on the same branch, and does not work across git submodules. */ local: string; rules?: IncludeRules; inputs?: Inputs; } | { /** * Path to the project, e.g. `group/project`, or `group/sub-group/project` [Learn more](https://docs.gitlab.com/ee/ci/yaml/index.html#includefile). */ project: string; /** * Branch/Tag/Commit-hash for the target project. */ ref?: string; file: string | string[]; rules?: IncludeRules; inputs?: Inputs; } | { /** * Use a `.gitlab-ci.yml` template as a base, e.g. `Nodejs.gitlab-ci.yml`. */ template: string; rules?: IncludeRules; inputs?: Inputs; } | { /** * Local path to component directory or full path to external component directory. */ component: string; rules?: IncludeRules; inputs?: Inputs; } | { /** * URL to a `yaml`/`yml` template file using HTTP/HTTPS. */ remote: string; rules?: IncludeRules; inputs?: Inputs; }; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "includeRules". */ export type IncludeRules = ({ if?: If; exists?: Exists; when?: ("never" | "always") | null; } | string | string[])[] | null; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "if". */ export type If = string; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "exists". */ export type Exists = string[]; export type JobTemplate = { image?: Image; services?: Services; before_script?: BeforeScript; after_script?: AfterScript; hooks?: Hooks; rules?: Rules; variables?: JobVariables1; cache?: Cache; id_tokens?: IdTokens; secrets?: Secrets; script?: string | (string | string[])[]; /** * Define what stage the job will run in. */ stage?: string | string[]; /** * Job will run *only* when these filtering options match. */ only?: null | FilterRefs | { refs?: FilterRefs; /** * Filter job based on if Kubernetes integration is active. */ kubernetes?: "active"; variables?: string[]; /** * Filter job creation based on files that were modified in a git push. */ changes?: string[]; }; /** * The name of one or more jobs to inherit configuration from. */ extends?: string | string[]; /** * The list of jobs in previous stages whose sole completion is needed to start the current job. */ needs?: (string | { job: string; artifacts?: boolean; optional?: boolean; parallel?: ParallelMatrix; } | { pipeline: string; job: string; artifacts?: boolean; parallel?: ParallelMatrix; } | { job: string; project: string; ref: string; artifacts?: boolean; parallel?: ParallelMatrix; })[]; /** * Job will run *except* for when these filtering options match. */ except?: null | FilterRefs | { refs?: FilterRefs; /** * Filter job based on if Kubernetes integration is active. */ kubernetes?: "active"; variables?: string[]; /** * Filter job creation based on files that were modified in a git push. */ changes?: string[]; }; tags?: Tags; allow_failure?: AllowFailure; timeout?: Timeout; when?: When; start_in?: StartIn; /** * Specify a list of job names from earlier stages from which artifacts should be loaded. By default, all previous artifacts are passed. Use an empty array to skip downloading artifacts. */ dependencies?: string[]; artifacts?: Artifacts; /** * Used to associate environment metadata with a deploy. Environment can have a name and URL attached to it, and will be displayed under /environments under the project. */ environment?: string | { /** * The name of the environment, e.g. 'qa', 'staging', 'production'. */ name: string; /** * When set, this will expose buttons in various places for the current environment in Gitlab, that will take you to the defined URL. */ url?: string; /** * The name of a job to execute when the environment is about to be stopped. */ on_stop?: string; /** * Specifies what this job will do. 'start' (default) indicates the job will start the deployment. 'prepare'/'verify'/'access' indicates this will not affect the deployment. 'stop' indicates this will stop the deployment. */ action?: "start" | "prepare" | "stop" | "verify" | "access"; /** * The amount of time it should take before Gitlab will automatically stop the environment. Supports a wide variety of formats, e.g. '1 week', '3 mins 4 sec', '2 hrs 20 min', '2h20min', '6 mos 1 day', '47 yrs 6 mos and 4d', '3 weeks and 2 days'. */ auto_stop_in?: string; /** * Used to configure the kubernetes deployment for this environment. This is currently not supported for kubernetes clusters that are managed by Gitlab. */ kubernetes?: { /** * The kubernetes namespace where this environment should be deployed to. */ namespace?: string; [k: string]: any | undefined; }; /** * Explicitly specifies the tier of the deployment environment if non-standard environment name is used. */ deployment_tier?: "production" | "staging" | "testing" | "development" | "other"; }; /** * Indicates that the job creates a Release. */ release?: { /** * The tag_name must be specified. It can refer to an existing Git tag or can be specified by the user. */ tag_name: string; /** * Message to use if creating a new annotated tag. */ tag_message?: string; /** * Specifies the longer description of the Release. */ description: string; /** * The Release name. If omitted, it is populated with the value of release: tag_name. */ name?: string; /** * If the release: tag_name doesn’t exist yet, the release is created from ref. ref can be a commit SHA, another tag name, or a branch name. */ ref?: string; /** * The title of each milestone the release is associated with. */ milestones?: string[]; /** * The date and time when the release is ready. Defaults to the current date and time if not defined. Should be enclosed in quotes and expressed in ISO 8601 format. */ released_at?: string; assets?: { /** * Include asset links in the release. * * @minItems 1 */ links: { /** * The name of the link. */ name: string; /** * The URL to download a file. */ url: string; /** * The redirect link to the url. */ filepath?: string; /** * The content kind of what users can download via url. */ link_type?: "runbook" | "package" | "image" | "other"; }[]; }; }; /** * Must be a regular expression, optionally but recommended to be quoted, and must be surrounded with '/'. Example: '/Code coverage: \d+\.\d+/' */ coverage?: string; retry?: Retry; parallel?: Parallel; interruptible?: Interruptible; /** * Limit job concurrency. Can be used to ensure that the Runner will not run certain jobs simultaneously. */ resource_group?: string; trigger?: { /** * Path to the project, e.g. `group/project`, or `group/sub-group/project`. */ project: string; /** * The branch name that a downstream pipeline will use */ branch?: string; /** * You can mirror the pipeline status from the triggered pipeline to the source bridge job by using strategy: depend */ strategy?: "depend"; /** * Specify what to forward to the downstream pipeline. */ forward?: { /** * Variables defined in the trigger job are passed to downstream pipelines. */ yaml_variables?: boolean; /** * Variables added for manual pipeline runs and scheduled pipelines are passed to downstream pipelines. */ pipeline_variables?: boolean; }; } | { include?: string | ({ /** * Relative path from local repository root (`/`) to the local YAML file to define the pipeline configuration. */ local?: string; } | { /** * Name of the template YAML file to use in the pipeline configuration. */ template?: string; } | { /** * Relative path to the generated YAML file which is extracted from the artifacts and used as the configuration for triggering the child pipeline. */ artifact: string; /** * Job name which generates the artifact */ job: string; } | { /** * Path to another private project under the same GitLab instance, like `group/project` or `group/sub-group/project`. */ project: string; /** * Branch/Tag/Commit hash for the target project. */ ref?: string; /** * Relative path from repository root (`/`) to the pipeline configuration YAML file. */ file: string; })[]; /** * You can mirror the pipeline status from the triggered pipeline to the source bridge job by using strategy: depend */ strategy?: "depend"; /** * Specify what to forward to the downstream pipeline. */ forward?: { /** * Variables defined in the trigger job are passed to downstream pipelines. */ yaml_variables?: boolean; /** * Variables added for manual pipeline runs and scheduled pipelines are passed to downstream pipelines. */ pipeline_variables?: boolean; }; } | string; inherit?: { default?: boolean | ("after_script" | "artifacts" | "before_script" | "cache" | "image" | "interruptible" | "retry" | "services" | "tags" | "timeout")[]; variables?: boolean | string[]; }; /** * A path to a directory that contains the files to be published with Pages */ publish?: string; } & JobTemplate1; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "rules". */ export type Rules = ({ if?: If; changes?: Changes; exists?: Exists; variables?: RulesVariables; when?: When; start_in?: StartIn; allow_failure?: AllowFailure; needs?: RulesNeeds; } | string | string[])[] | null; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "changes". */ export type Changes = { /** * List of file paths. */ paths: string[]; /** * Ref for comparing changes. */ compare_to?: string; } | string[]; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "when". */ export type When = "on_success" | "on_failure" | "always" | "never" | "manual" | "delayed"; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "start_in". */ export type StartIn = string; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "allow_failure". */ export type AllowFailure = boolean | { exit_codes: number; } | { /** * @minItems 1 */ exit_codes: number[]; }; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "rulesNeeds". */ export type RulesNeeds = (string | { /** * Name of a job that is defined in the pipeline. */ job: string; /** * Download artifacts of the job in needs. */ artifacts?: boolean; /** * Whether the job needs to be present in the pipeline to run ahead of the current job. */ optional?: boolean; })[]; /** * Filter job by different keywords that determine origin or state, or by supplying string/regex to check against branch/tag names. * * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "filter_refs". */ export type FilterRefs = (("branches" | "tags" | "api" | "external" | "pipelines" | "pushes" | "schedules" | "triggers" | "web") | string)[]; /** * Use the `needs:parallel:matrix` keyword to specify parallelized jobs needed to be completed for the job to run. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#needsparallelmatrix) * * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "parallel_matrix". */ export type ParallelMatrix = { /** * Defines different variables for jobs that are running in parallel. * * @maxItems 200 */ matrix: { [k: string]: (string | number | any[]) | undefined; }[]; }; /** * Splits up a single job into multiple that run in parallel. Provides `CI_NODE_INDEX` and `CI_NODE_TOTAL` environment variables to the jobs. * * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "parallel". */ export type Parallel = number | { /** * Defines different variables for jobs that are running in parallel. * * @maxItems 200 */ matrix: { [k: string]: (string | number | any[]) | undefined; }[]; }; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "job_template". */ export type JobTemplate1 = { when: "delayed"; [k: string]: any | undefined; } | { when?: { [k: string]: any | undefined; }; [k: string]: any | undefined; }; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "workflowName". */ export type WorkflowName = string; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "string_file_list". */ export type StringFileList = string | string[]; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "filter". */ export type Filter = null | FilterRefs | { refs?: FilterRefs; /** * Filter job based on if Kubernetes integration is active. */ kubernetes?: "active"; variables?: string[]; /** * Filter job creation based on files that were modified in a git push. */ changes?: string[]; }; /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "job". */ export type Job = JobTemplate1; export interface JobVariables { [k: string]: any | undefined; } /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "globalVariables". */ export interface GlobalVariables { [k: string]: any | undefined; } /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "cache". */ export interface Cache { key?: string | { /** * @minItems 1 * @maxItems 2 */ files?: string[]; prefix?: string; [k: string]: any | undefined; }; paths?: string[]; policy?: string; unprotect?: boolean; untracked?: boolean; when?: "on_success" | "on_failure" | "always"; /** * @maxItems 5 */ fallback_keys?: string[]; [k: string]: any | undefined; } /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "artifacts". */ export interface Artifacts { /** * @minItems 1 */ paths?: string[]; /** * @minItems 1 */ exclude?: string[]; expose_as?: string; name?: string; untracked?: boolean; when?: "on_success" | "on_failure" | "always"; expire_in?: string; reports?: { /** * Path for file(s) that should be parsed as JUnit XML result */ junit?: string | string[]; /** * Path to a single file with browser performance metric report(s). */ browser_performance?: string; /** * Used to collect coverage reports from the job. */ coverage_report?: { /** * Code coverage format used by the test framework. */ coverage_format?: "cobertura"; /** * Path to the coverage report file that should be parsed. */ path?: string; [k: string]: any | undefined; } | null; /** * Path to file or list of files with code quality report(s) (such as Code Climate). */ codequality?: string | string[]; /** * Path to file or list of files containing runtime-created variables for this job. */ dotenv?: string | string[]; /** * Path to file or list of files containing code intelligence (Language Server Index Format). */ lsif?: string | string[]; /** * Path to file or list of files with SAST vulnerabilities report(s). */ sast?: string | string[]; /** * Path to file or list of files with Dependency scanning vulnerabilities report(s). */ dependency_scanning?: string | string[]; /** * Path to file or list of files with Container scanning vulnerabilities report(s). */ container_scanning?: string | string[]; /** * Path to file or list of files with DAST vulnerabilities report(s). */ dast?: string | string[]; /** * Deprecated in 12.8: Path to file or list of files with license report(s). */ license_management?: string | string[]; /** * Path to file or list of files with license report(s). */ license_scanning?: string | string[]; /** * Path to file or list of files with requirements report(s). */ requirements?: string | string[]; /** * Path to file or list of files with secret detection report(s). */ secret_detection?: string | string[]; /** * Path to file or list of files with custom metrics report(s). */ metrics?: string | string[]; /** * Path to file or list of files with terraform plan(s). */ terraform?: string | string[]; cyclonedx?: string | string[]; load_performance?: string | string[]; }; } /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "hooks". */ export interface Hooks { pre_get_sources_script?: string | (string | string[])[]; } /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "inputs". */ export interface Inputs { [k: string]: any | undefined; } /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "rulesVariables". */ export interface RulesVariables { [k: string]: any | undefined; } /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "jobVariables". */ export interface JobVariables1 { [k: string]: any | undefined; } /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "id_tokens". */ export interface IdTokens { /** * This interface was referenced by `IdTokens`'s JSON-Schema definition * via the `patternProperty` ".*". */ [k: string]: { aud: string | string[]; }; } /** * This interface was referenced by `HttpsGitlabComGitlabCiYml`'s JSON-Schema * via the `definition` "secrets". */ export interface Secrets { /** * This interface was referenced by `Secrets`'s JSON-Schema definition * via the `patternProperty` ".*". */ [k: string]: { [k: string]: any | undefined; }; }