diff --git a/workflow-parser/src/model/converter/events.ts b/workflow-parser/src/model/converter/events.ts index 2d4ba2d..955de5b 100644 --- a/workflow-parser/src/model/converter/events.ts +++ b/workflow-parser/src/model/converter/events.ts @@ -7,10 +7,12 @@ import {TokenType} from "../../templates/tokens/types"; import { BranchFilterConfig, EventsConfig, + NamesFilterConfig, PathFilterConfig, ScheduleConfig, TagFilterConfig, TypesFilterConfig, + VersionsFilterConfig, WorkflowFilterConfig } from "../workflow-template"; import {isValidCron} from "./cron"; @@ -76,10 +78,11 @@ export function convertOn(context: TemplateContext, token: TemplateToken): Event ...convertPatternFilter("tags", eventToken), ...convertPatternFilter("paths", eventToken), ...convertFilter("types", eventToken), + ...convertFilter("versions", eventToken), + ...convertFilter("names", eventToken), ...convertFilter("workflows", eventToken) }; } - return result; } @@ -121,8 +124,8 @@ function convertPatternFilter( - name: "types" | "workflows", +function convertFilter( + name: "types" | "workflows" | "versions" | "names", token: MappingToken ): T { const result = {} as T; diff --git a/workflow-parser/src/model/workflow-template.ts b/workflow-parser/src/model/workflow-template.ts index 679da4f..9952184 100644 --- a/workflow-parser/src/model/workflow-template.ts +++ b/workflow-parser/src/model/workflow-template.ts @@ -129,6 +129,7 @@ export type EventsConfig = { repository_dispatch?: TypesFilterConfig; release?: TypesFilterConfig; watch?: TypesFilterConfig; + image_versions?: TypesFilterConfig & VersionsFilterConfig & NamesFilterConfig; // Index signature to allow easier lookup [eventName: string]: unknown; @@ -138,6 +139,14 @@ export type TypesFilterConfig = { types?: string[]; }; +export type VersionsFilterConfig = { + versions?: string[]; +}; + +export type NamesFilterConfig = { + names?: string[]; +}; + export type BranchFilterConfig = { branches?: string[]; "branches-ignore"?: string[]; diff --git a/workflow-parser/testdata/reader/on-event-config-image-version-name-version.yml b/workflow-parser/testdata/reader/on-event-config-image-version-name-version.yml index 6a5b5ff..fbfb045 100644 --- a/workflow-parser/testdata/reader/on-event-config-image-version-name-version.yml +++ b/workflow-parser/testdata/reader/on-event-config-image-version-name-version.yml @@ -15,7 +15,14 @@ jobs: --- { "events": { - "image_version": {} + "image_version": { + "versions": [ + "1.*" + ], + "names": [ + "testing" + ] + } }, "jobs": [ { diff --git a/workflow-parser/testdata/reader/on-event-config-image-version-names.yml b/workflow-parser/testdata/reader/on-event-config-image-version-names.yml index 34f733f..0656753 100644 --- a/workflow-parser/testdata/reader/on-event-config-image-version-names.yml +++ b/workflow-parser/testdata/reader/on-event-config-image-version-names.yml @@ -21,6 +21,10 @@ jobs: "image_version": { "types": [ "ready" + ], + "names": [ + "one", + "two" ] } }, diff --git a/workflow-parser/testdata/reader/on-event-config-image-version-versions.yml b/workflow-parser/testdata/reader/on-event-config-image-version-versions.yml index c50ca7e..52dcaa5 100644 --- a/workflow-parser/testdata/reader/on-event-config-image-version-versions.yml +++ b/workflow-parser/testdata/reader/on-event-config-image-version-versions.yml @@ -21,6 +21,10 @@ jobs: "image_version": { "types": [ "ready" + ], + "versions": [ + "1.0.0", + "1.0.1" ] } },