@spinnaker/docker 2025.0.6 → 2025.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/image/DockerChartAndTagSelector.d.ts +74 -0
- package/dist/image/DockerImageAndTagSelector.d.ts +1 -1
- package/dist/image/DockerImageReader.d.ts +5 -0
- package/dist/index.js +727 -133
- package/dist/index.js.map +1 -1
- package/dist/pipeline/trigger/DockerHelmOciTriggerConfig.d.ts +8 -0
- package/package.json +3 -3
- package/src/image/DockerChartAndTagSelector.tsx +735 -0
- package/src/image/DockerImageReader.ts +33 -0
- package/src/pipeline/trigger/DockerHelmOciTriggerConfig.tsx +39 -0
- package/src/pipeline/trigger/DockerTrigger.tsx +29 -0
- package/src/pipeline/trigger/DockerTriggerTemplate.tsx +22 -9
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/image/DockerImageReader.ts","../src/image/DockerImageUtils.ts","../src/image/DockerImageAndTagSelector.tsx","../src/pipeline/stages/bake/bakeExecutionDetails.controller.js","../src/pipeline/stages/bake/dockerBakeStage.js","../src/pipeline/trigger/DockerTriggerConfig.tsx","../src/pipeline/trigger/DockerTriggerTemplate.tsx","../src/pipeline/trigger/DockerTrigger.tsx","../src/docker.module.ts"],"sourcesContent":["import type { IFindImageParams, IFindTagsParams, IImage } from '@spinnaker/core';\nimport { REST, RetryService } from '@spinnaker/core';\n\nexport interface IDockerImage extends IImage {\n account: string;\n registry: string;\n repository: string;\n tag: string;\n}\n\nexport class DockerImageReader {\n public static getImage(imageName: string, region: string, credentials: string): PromiseLike<IDockerImage> {\n return REST('/images')\n .path(credentials, region, imageName)\n .query({ provider: 'docker' })\n .get()\n .then((results: IDockerImage[]) => (results && results.length ? results[0] : null))\n .catch((): IDockerImage => null);\n }\n\n public static findImages(params: IFindImageParams): PromiseLike<IDockerImage[]> {\n return RetryService.buildRetrySequence<IDockerImage[]>(\n () => REST('/images/find').query(params).get(),\n (results: IDockerImage[]) => results.length > 0,\n 10,\n 1000,\n )\n .then((results: IDockerImage[]) => results)\n .catch((): IDockerImage[] => []);\n }\n\n public static findTags(params: IFindTagsParams): PromiseLike<string[]> {\n return RetryService.buildRetrySequence<string[]>(\n () => REST('/images/tags').query(params).get(),\n (results: string[]) => results.length > 0,\n 10,\n 1000,\n )\n .then((results: string[]) => results)\n .catch((): string[] => []);\n }\n}\n","export interface IDockerImageParts {\n organization: string;\n repository: string;\n tag?: string;\n digest?: string;\n}\n\nexport class DockerImageUtils {\n // Split the image id up into the selectable parts to feed the UI\n public static splitImageId(imageId = ''): IDockerImageParts {\n let imageParts: string[];\n if (imageId.includes('@')) {\n imageParts = imageId.split('@');\n } else {\n imageParts = imageId.split(':');\n }\n const repository = imageParts[0];\n const repositoryParts = repository.split('/');\n // Everything before the last slash is considered the organization\n const organization = repositoryParts.slice(0, -1).join('/');\n\n const lookup = imageParts.length > 1 ? imageParts.slice(1).join(':') : '';\n\n let tag: string;\n let digest: string;\n if (lookup) {\n if (lookup.startsWith('sha256:')) {\n digest = lookup;\n } else {\n tag = lookup;\n }\n }\n\n return { organization, repository, digest, tag };\n }\n\n public static generateImageId(parts: IDockerImageParts): string {\n if (!parts.repository || !(parts.digest || parts.tag)) {\n return undefined;\n }\n\n let imageId: string;\n\n if (parts.digest) {\n imageId = `${parts.repository}@${parts.digest}`;\n } else {\n imageId = `${parts.repository}:${parts.tag}`;\n }\n\n return imageId;\n }\n}\n","import { groupBy, reduce, trim, uniq } from 'lodash';\nimport React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\n\nimport type { IAccount, IFindImageParams } from '@spinnaker/core';\nimport { AccountService, HelpField, Tooltip, ValidationMessage } from '@spinnaker/core';\n\nimport type { IDockerImage } from './DockerImageReader';\nimport { DockerImageReader } from './DockerImageReader';\nimport type { IDockerImageParts } from './DockerImageUtils';\nimport { DockerImageUtils } from './DockerImageUtils';\n\nexport type IDockerLookupType = 'tag' | 'digest';\n\nexport interface IDockerImageAndTagChanges {\n account?: string;\n organization?: string;\n registry?: string;\n repository?: string;\n tag?: string;\n digest?: string;\n imageId?: string;\n}\n\nexport interface IDockerImageAndTagSelectorProps {\n specifyTagByRegex: boolean;\n imageId: string;\n organization: string;\n registry: string;\n repository: string;\n tag: string;\n digest: string;\n account: string;\n showRegistry?: boolean;\n onChange: (changes: IDockerImageAndTagChanges) => void;\n deferInitialization?: boolean;\n showDigest?: boolean;\n allowManualDefinition?: boolean;\n}\n\nexport interface IDockerImageAndTagSelectorState {\n accountOptions: Array<Option<string>>;\n switchedManualWarning: string;\n missingFields?: string[];\n imagesLoaded: boolean;\n imagesLoading: boolean;\n organizationOptions: Array<Option<string>>;\n repositoryOptions: Array<Option<string>>;\n defineManually: boolean;\n tagOptions: Array<Option<string>>;\n lookupType: IDockerLookupType;\n}\n\nconst imageFields = ['organization', 'repository', 'tag', 'digest'];\nconst defineOptions = [\n { label: 'Manually', value: true },\n { label: 'Select from list', value: false },\n];\n\nexport class DockerImageAndTagSelector extends React.Component<\n IDockerImageAndTagSelectorProps,\n IDockerImageAndTagSelectorState\n> {\n public static defaultProps: Partial<IDockerImageAndTagSelectorProps> = {\n organization: '',\n registry: '',\n repository: '',\n showDigest: true,\n allowManualDefinition: true,\n };\n\n private unmounted = false;\n private images: IDockerImage[];\n private accounts: string[];\n\n private registryMap: { [key: string]: string };\n private accountMap: { [key: string]: string[] };\n private newAccounts: string[];\n private organizationMap: { [key: string]: string[] };\n private repositoryMap: { [key: string]: string[] };\n private organizations: string[];\n private cachedValues: { [key: string]: string } = {};\n\n public constructor(props: IDockerImageAndTagSelectorProps) {\n super(props);\n\n const accountOptions = props.account ? [{ label: props.account, value: props.account }] : [];\n const organizationOptions =\n props.organization && props.organization.length ? [{ label: props.organization, value: props.organization }] : [];\n const repositoryOptions =\n props.repository && props.repository.length ? [{ label: props.repository, value: props.repository }] : [];\n const tagOptions = props.tag && props.tag.length ? [{ label: props.tag, value: props.tag }] : [];\n const parsedImageId = DockerImageUtils.splitImageId(props.imageId);\n const defineManually = props.allowManualDefinition && Boolean(props.imageId && props.imageId.includes('${'));\n\n this.state = {\n accountOptions,\n switchedManualWarning: undefined,\n imagesLoaded: false,\n imagesLoading: false,\n organizationOptions,\n repositoryOptions,\n defineManually,\n tagOptions,\n lookupType: props.digest || parsedImageId.digest ? 'digest' : 'tag',\n };\n }\n\n private getAccountMap(images: IDockerImage[]): { [key: string]: string[] } {\n const groupedImages = groupBy(\n images.filter((image) => image.account),\n 'account',\n );\n return reduce<IDockerImage[], { [key: string]: string[] }>(\n groupedImages,\n (acc, image, key) => {\n acc[key] = uniq(image.map((i) => `${i.repository.split('/').slice(0, -1).join('/')}`));\n return acc;\n },\n {},\n );\n }\n\n private getRegistryMap(images: IDockerImage[]) {\n return images.reduce((m: { [key: string]: string }, image: IDockerImage) => {\n m[image.account] = image.registry;\n return m;\n }, {} as { [key: string]: string });\n }\n\n private getOrganizationMap(images: IDockerImage[]): { [key: string]: string[] } {\n const extractGroupByKey = (image: IDockerImage) =>\n `${image.account}/${image.repository.split('/').slice(0, -1).join('/')}`;\n const groupedImages = groupBy(\n images.filter((image) => image.repository),\n extractGroupByKey,\n );\n return reduce<IDockerImage[], { [key: string]: string[] }>(\n groupedImages,\n (acc, image, key) => {\n acc[key] = uniq(image.map((i) => i.repository));\n return acc;\n },\n {},\n );\n }\n\n private getRepositoryMap(images: IDockerImage[]) {\n const groupedImages = groupBy(\n images.filter((image) => image.account),\n 'repository',\n );\n return reduce<IDockerImage[], { [key: string]: string[] }>(\n groupedImages,\n (acc, image, key) => {\n acc[key] = uniq(image.map((i) => i.tag));\n return acc;\n },\n {},\n );\n }\n\n private getOrganizationsList(accountMap: { [key: string]: string[] }) {\n return accountMap ? accountMap[this.props.showRegistry ? this.props.account : this.props.registry] || [] : [];\n }\n\n private getRepositoryList(organizationMap: { [key: string]: string[] }, organization: string, registry: string) {\n if (organizationMap) {\n const key = `${this.props.showRegistry ? this.props.account : registry}/${organization || ''}`;\n return organizationMap[key] || [];\n }\n return [];\n }\n\n private getTags(tag: string, repositoryMap: { [key: string]: string[] }, repository: string) {\n let tags: string[] = [];\n if (this.props.specifyTagByRegex) {\n if (tag && trim(tag) === '') {\n tag = undefined;\n }\n } else {\n if (repositoryMap) {\n tags = repositoryMap[repository] || [];\n if (!tags.includes(tag) && tag && !tag.includes('${')) {\n tag = undefined;\n }\n }\n }\n\n return { tag, tags };\n }\n\n public componentWillReceiveProps(nextProps: IDockerImageAndTagSelectorProps) {\n if (\n !this.images ||\n ['account', 'showRegistry'].some(\n (key: keyof IDockerImageAndTagSelectorProps) => this.props[key] !== nextProps[key],\n )\n ) {\n this.refreshImages(nextProps);\n } else if (\n ['organization', 'registry', 'repository'].some(\n (key: keyof IDockerImageAndTagSelectorProps) => this.props[key] !== nextProps[key],\n )\n ) {\n this.updateThings(nextProps);\n }\n\n if (nextProps.imageId && nextProps.imageId.includes('${')) {\n this.setState({ defineManually: true });\n }\n }\n\n componentWillUnmount() {\n this.unmounted = true;\n }\n\n private synchronizeChanges(values: IDockerImageParts, registry: string) {\n const { organization, repository, tag, digest } = values;\n if (this.props.onChange) {\n const imageId = DockerImageUtils.generateImageId({ organization, repository, tag, digest });\n const changes: IDockerImageAndTagChanges = {};\n if (tag !== this.props.tag) {\n changes.tag = tag;\n }\n if (imageId !== this.props.imageId) {\n changes.imageId = imageId;\n }\n if (organization !== this.props.organization) {\n changes.organization = organization;\n }\n if (registry !== this.props.registry) {\n changes.registry = registry;\n }\n if (repository !== this.props.repository) {\n changes.repository = repository;\n }\n if (digest !== this.props.digest) {\n changes.digest = digest;\n }\n if (Object.keys(changes).length > 0) {\n this.props.onChange(changes);\n }\n }\n }\n\n private updateThings(props: IDockerImageAndTagSelectorProps, allowAutoSwitchToManualEntry = false) {\n if (!this.repositoryMap || this.unmounted) {\n return;\n }\n\n const { imageId, specifyTagByRegex } = props;\n let { organization, registry, repository } = props;\n\n if (props.showRegistry) {\n registry = this.registryMap[props.account];\n }\n\n const organizationFound = !organization || this.organizations.includes(organization) || organization.includes('${');\n if (!organizationFound) {\n organization = '';\n }\n\n const repositories = this.getRepositoryList(this.organizationMap, organization, registry);\n const repositoryFound = !repository || repository.includes('${') || repositories.includes(repository);\n\n if (!repositoryFound) {\n repository = '';\n }\n\n const { tag, tags } = this.getTags(props.tag, this.repositoryMap, repository);\n const tagFound = tag === props.tag || specifyTagByRegex;\n\n const newState = {\n accountOptions: this.newAccounts.sort().map((a) => ({ label: a, value: a })),\n organizationOptions: this.organizations\n .filter((o) => o)\n .sort()\n .map((o) => ({ label: o, value: o })),\n imagesLoaded: true,\n repositoryOptions: repositories.sort().map((r) => ({ label: r, value: r })),\n tagOptions: tags.sort().map((t) => ({ label: t, value: t })),\n } as IDockerImageAndTagSelectorState;\n\n if (\n imageId &&\n (!this.state.imagesLoaded || allowAutoSwitchToManualEntry) &&\n (!organizationFound || !repositoryFound || !tagFound)\n ) {\n newState.defineManually = true;\n\n const missingFields: string[] = [];\n if (!organizationFound) {\n missingFields.push('organization');\n }\n if (!repositoryFound) {\n missingFields.push('image');\n }\n if (!tagFound) {\n missingFields.push('tag');\n }\n newState.missingFields = missingFields;\n newState.switchedManualWarning = `Could not find ${missingFields.join(' or ')}, switched to manual entry`;\n } else if (!imageId || !imageId.includes('${')) {\n this.synchronizeChanges(\n this.state.defineManually\n ? DockerImageUtils.splitImageId(imageId)\n : { organization, repository, tag, digest: this.props.digest },\n registry,\n );\n }\n\n this.setState(newState);\n }\n\n private initializeImages(props: IDockerImageAndTagSelectorProps) {\n if (this.state.imagesLoading) {\n return;\n }\n\n const { showRegistry, account, registry } = props;\n\n const imageConfig: IFindImageParams = {\n provider: 'dockerRegistry',\n account: showRegistry ? account : registry,\n };\n\n this.setState({ imagesLoading: true });\n DockerImageReader.findImages(imageConfig)\n .then((images: IDockerImage[]) => {\n this.images = images;\n this.registryMap = this.getRegistryMap(this.images);\n this.accountMap = this.getAccountMap(this.images);\n this.newAccounts = this.accounts || Object.keys(this.accountMap);\n\n this.organizationMap = this.getOrganizationMap(this.images);\n this.repositoryMap = this.getRepositoryMap(this.images);\n this.organizations = this.getOrganizationsList(this.accountMap);\n this.updateThings(props, true);\n })\n .finally(() => {\n if (!this.unmounted) {\n this.setState({ imagesLoading: false });\n }\n });\n }\n\n public handleRefreshImages = (): void => {\n this.refreshImages(this.props);\n };\n\n public refreshImages(props: IDockerImageAndTagSelectorProps): void {\n this.initializeImages(props);\n }\n\n private initializeAccounts(props: IDockerImageAndTagSelectorProps) {\n let { account } = props;\n AccountService.listAccounts('dockerRegistry').then((allAccounts: IAccount[]) => {\n const accounts = allAccounts.map((a: IAccount) => a.name);\n if (this.props.showRegistry && !account) {\n account = accounts[0];\n }\n this.accounts = accounts;\n this.refreshImages({ ...props, ...{ account } });\n });\n }\n\n private isNew(): boolean {\n const { account, organization, registry, repository, tag } = this.props;\n return !account && !organization && !registry && !repository && !tag;\n }\n\n public componentDidMount() {\n if (!this.props.deferInitialization && (this.props.registry || this.isNew())) {\n this.initializeAccounts(this.props);\n }\n }\n\n private valueChanged(name: string, value: string) {\n const changes = { [name]: value };\n if (imageFields.some((n) => n === name)) {\n // values are parts of the image\n const { organization, repository, tag, digest } = this.props;\n const imageParts = { ...{ organization, repository, tag, digest }, ...changes };\n const imageId = DockerImageUtils.generateImageId(imageParts);\n changes.imageId = imageId;\n }\n this.props.onChange && this.props.onChange(changes);\n }\n\n private lookupTypeChanged = (o: Option<IDockerLookupType>) => {\n const newType = o.value;\n const oldType = this.state.lookupType;\n const oldValue = this.props[oldType];\n const cachedValue = this.cachedValues[newType];\n\n this.valueChanged(oldType, undefined);\n if (this.cachedValues[newType]) {\n this.valueChanged(newType, cachedValue);\n }\n this.setState({ lookupType: newType });\n this.cachedValues[oldType] = oldValue;\n };\n\n private showManualInput = (defineManually: boolean) => {\n if (!defineManually) {\n const newFields = DockerImageUtils.splitImageId(this.props.imageId || '');\n this.props.onChange(newFields);\n if (this.state.switchedManualWarning) {\n this.setState({ switchedManualWarning: undefined, missingFields: undefined });\n }\n }\n this.setState({ defineManually });\n };\n\n public render() {\n const {\n account,\n allowManualDefinition,\n digest,\n imageId,\n organization,\n repository,\n showDigest,\n showRegistry,\n specifyTagByRegex,\n tag,\n } = this.props;\n const {\n accountOptions,\n switchedManualWarning,\n missingFields,\n imagesLoading,\n lookupType,\n organizationOptions,\n repositoryOptions,\n defineManually,\n tagOptions,\n } = this.state;\n\n const parsedImageId = DockerImageUtils.splitImageId(imageId);\n\n const manualInputToggle = (\n <div className=\"sp-formItem groupHeader\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Define Image ID</div>\n\n <div className=\"sp-formActions sp-formActions--mobile\">\n <span className=\"action\" />\n </div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <Select\n value={defineManually}\n disabled={imagesLoading || !allowManualDefinition}\n onChange={(o: Option<boolean>) => this.showManualInput(o.value)}\n options={defineOptions}\n clearable={false}\n />\n </span>\n </div>\n </div>\n </div>\n );\n\n const warning = switchedManualWarning ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\" />\n <div className=\"sp-formItem__right\">\n <ValidationMessage\n type=\"warning\"\n message={\n <>\n {switchedManualWarning}\n {(missingFields || []).map((f) => (\n <div key={f}>\n <HelpField expand={true} id={`pipeline.config.docker.trigger.missing.${f}`} />\n </div>\n ))}\n </>\n }\n />\n </div>\n </div>\n ) : null;\n\n if (defineManually) {\n return (\n <div className=\"sp-formGroup\">\n {manualInputToggle}\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Image ID</div>\n <div className=\"sp-formActions sp-formActions--mobile\">\n <span className=\"action\" />\n </div>\n </div>\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <input\n className=\"form-control input-sm\"\n value={imageId || ''}\n onChange={(e) => this.valueChanged('imageId', e.target.value)}\n />\n </span>\n </div>\n </div>\n </div>\n {warning}\n </div>\n );\n }\n\n const Registry = showRegistry ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Registry Name</div>\n </div>\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <Select\n value={account}\n disabled={imagesLoading}\n onChange={(o: Option<string>) => this.valueChanged('account', o ? o.value : '')}\n options={accountOptions}\n isLoading={imagesLoading}\n />\n </span>\n <span className=\"sp-formActions sp-formActions--web\">\n <span className=\"action\">\n <Tooltip value={imagesLoading ? 'Images refreshing' : 'Refresh images list'}>\n <i\n className={`fa icon-button-refresh-arrows ${imagesLoading ? 'fa-spin' : ''}`}\n onClick={this.handleRefreshImages}\n />\n </Tooltip>\n </span>\n </span>\n </div>\n </div>\n </div>\n ) : null;\n\n const Organization = (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Organization</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n {organization.includes('${') ? (\n <input\n disabled={imagesLoading}\n className=\"form-control input-sm\"\n value={organization || ''}\n onChange={(e) => this.valueChanged('organization', e.target.value)}\n />\n ) : (\n <Select\n value={organization || ''}\n disabled={imagesLoading}\n onChange={(o: Option<string>) => this.valueChanged('organization', (o && o.value) || '')}\n placeholder=\"No organization\"\n options={organizationOptions}\n isLoading={imagesLoading}\n />\n )}\n </span>\n </div>\n </div>\n </div>\n );\n\n const Image = (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Image</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n {repository.includes('${') ? (\n <input\n className=\"form-control input-sm\"\n disabled={imagesLoading}\n value={repository || ''}\n onChange={(e) => this.valueChanged('repository', e.target.value)}\n />\n ) : (\n <Select\n value={repository || ''}\n disabled={imagesLoading}\n onChange={(o: Option<string>) => this.valueChanged('repository', (o && o.value) || '')}\n options={repositoryOptions}\n required={true}\n isLoading={imagesLoading}\n />\n )}\n </span>\n </div>\n </div>\n </div>\n );\n\n const Tag =\n lookupType === 'tag' ? (\n specifyTagByRegex ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Tag</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <input\n type=\"text\"\n className=\"form-control input-sm\"\n value={tag || ''}\n disabled={imagesLoading || !repository}\n onChange={(e) => this.valueChanged('tag', e.target.value)}\n />\n </span>\n </div>\n <HelpField id=\"pipeline.config.docker.trigger.tag\" expand={true} />\n </div>\n </div>\n ) : (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Tag</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n {tag && tag.includes('${') ? (\n <input\n className=\"form-control input-sm\"\n disabled={imagesLoading}\n value={tag || ''}\n onChange={(e) => this.valueChanged('tag', e.target.value)}\n required={true}\n />\n ) : (\n <>\n <Select\n value={tag || ''}\n disabled={imagesLoading || !repository}\n isLoading={imagesLoading}\n onChange={(o: Option<string>) => this.valueChanged('tag', o ? o.value : undefined)}\n options={tagOptions}\n placeholder=\"No tag\"\n required={true}\n />\n <HelpField id=\"pipeline.config.docker.trigger.tag.additionalInfo\" expand={true} />\n </>\n )}\n </span>\n </div>\n </div>\n </div>\n )\n ) : null;\n\n const Digest =\n lookupType === 'digest' ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">\n Digest <HelpField id=\"pipeline.config.docker.trigger.digest\" />\n </div>\n </div>\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <input\n className=\"form-control input-sm\"\n placeholder=\"sha256:abc123\"\n value={digest || parsedImageId.digest || ''}\n onChange={(e) => this.valueChanged('digest', e.target.value)}\n required={true}\n />\n </span>\n </div>\n </div>\n </div>\n ) : null;\n\n const LookupTypeSelector = showDigest ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Type</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <Select\n clearable={false}\n value={lookupType}\n options={[\n { value: 'digest', label: 'Digest' },\n { value: 'tag', label: 'Tag' },\n ]}\n onChange={this.lookupTypeChanged}\n />\n </span>\n </div>\n </div>\n </div>\n ) : null;\n\n return (\n <div className=\"sp-formGroup\">\n {manualInputToggle}\n {Registry}\n {Organization}\n {Image}\n {LookupTypeSelector}\n {Digest}\n {Tag}\n </div>\n );\n }\n}\n","'use strict';\n\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport { module } from 'angular';\n\nimport { SETTINGS } from '@spinnaker/core';\n\nexport const DOCKER_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER =\n 'spinnaker.docker.pipeline.stage.bake.executionDetails.controller';\nexport const name = DOCKER_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER; // for backwards compatibility\nmodule(DOCKER_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER, [UIROUTER_ANGULARJS]).controller(\n 'dockerBakeExecutionDetailsCtrl',\n [\n '$scope',\n '$stateParams',\n 'executionDetailsSectionService',\n '$interpolate',\n function ($scope, $stateParams, executionDetailsSectionService, $interpolate) {\n $scope.configSections = ['bakeConfig', 'taskStatus'];\n\n const initialized = () => {\n $scope.detailsSection = $stateParams.details;\n $scope.provider = $scope.stage.context.cloudProviderType || 'docker';\n $scope.bakeryDetailUrl = $interpolate(\n $scope.roscoMode && SETTINGS.roscoDetailUrl ? SETTINGS.roscoDetailUrl : SETTINGS.bakeryDetailUrl,\n );\n };\n\n const initialize = () => executionDetailsSectionService.synchronizeSection($scope.configSections, initialized);\n\n initialize();\n\n $scope.$on('$stateChangeSuccess', initialize);\n },\n ],\n);\n","'use strict';\n\nimport { module } from 'angular';\nimport _ from 'lodash';\n\nimport { AuthenticationService, BakeExecutionLabel, BakeryReader, Registry } from '@spinnaker/core';\nimport { DOCKER_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER } from './bakeExecutionDetails.controller';\n\n/*\n This stage is just here so that we can experiment with baking Docker containers within pipelines.\n Without this stage, programmatically-created pipelines with Docker bake stages would not render\n execution details.\n */\nexport const DOCKER_PIPELINE_STAGES_BAKE_DOCKERBAKESTAGE = 'spinnaker.docker.pipeline.stage.bakeStage';\nexport const name = DOCKER_PIPELINE_STAGES_BAKE_DOCKERBAKESTAGE; // for backwards compatibility\nmodule(DOCKER_PIPELINE_STAGES_BAKE_DOCKERBAKESTAGE, [DOCKER_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'bake',\n cloudProvider: 'docker',\n label: 'Bake',\n description: 'Bakes an image',\n templateUrl: require('./bakeStage.html'),\n executionDetailsUrl: require('./bakeExecutionDetails.html'),\n executionLabelComponent: BakeExecutionLabel,\n extraLabelLines: (stage) => {\n return stage.masterStage.context.allPreviouslyBaked || stage.masterStage.context.somePreviouslyBaked ? 1 : 0;\n },\n supportsCustomTimeout: true,\n validators: [{ type: 'requiredField', fieldName: 'package' }],\n restartable: true,\n });\n })\n .controller('dockerBakeStageCtrl', [\n '$scope',\n '$q',\n function ($scope, $q) {\n const stage = $scope.stage;\n\n stage.region = 'global';\n\n if (!$scope.stage.user) {\n $scope.stage.user = AuthenticationService.getAuthenticatedUser().name;\n }\n\n $scope.viewState = {\n loading: true,\n };\n\n function initialize() {\n $scope.viewState.providerSelected = true;\n $q.all([BakeryReader.getBaseOsOptions('docker'), BakeryReader.getBaseLabelOptions()]).then(function ([\n baseOsOptions,\n baseLabelOptions,\n ]) {\n $scope.baseOsOptions = baseOsOptions.baseImages;\n $scope.baseLabelOptions = baseLabelOptions;\n\n if (!$scope.stage.baseOs && $scope.baseOsOptions && $scope.baseOsOptions.length) {\n $scope.stage.baseOs = $scope.baseOsOptions[0].id;\n }\n if (!$scope.stage.baseLabel && $scope.baseLabelOptions && $scope.baseLabelOptions.length) {\n $scope.stage.baseLabel = $scope.baseLabelOptions[0];\n }\n $scope.viewState.loading = false;\n });\n }\n\n function deleteEmptyProperties() {\n _.forOwn($scope.stage, function (val, key) {\n if (val === '') {\n delete $scope.stage[key];\n }\n });\n }\n\n $scope.$watch('stage', deleteEmptyProperties, true);\n\n initialize();\n },\n ]);\n","import type { FormikProps } from 'formik';\nimport React from 'react';\n\nimport type { IDockerTrigger } from '@spinnaker/core';\n\nimport type { IDockerImageAndTagChanges } from '../../image';\nimport { DockerImageAndTagSelector } from '../../image';\n\nexport interface IDockerTriggerConfigProps {\n formik: FormikProps<IDockerTrigger>;\n triggerUpdated: (trigger: IDockerTrigger) => void;\n}\n\nexport function DockerTriggerConfig(props: IDockerTriggerConfigProps) {\n const { formik } = props;\n const trigger = formik.values;\n\n const dockerChanged = (changes: IDockerImageAndTagChanges) => {\n // Trigger doesn't use imageId.\n const { imageId, ...rest } = changes;\n props.triggerUpdated(rest as IDockerTrigger);\n };\n\n return (\n <div className=\"form-horizontal\">\n <DockerImageAndTagSelector\n allowManualDefinition={false}\n specifyTagByRegex={true}\n account={trigger.account}\n organization={trigger.organization}\n registry={trigger.registry}\n repository={trigger.repository}\n tag={trigger.tag}\n showRegistry={true}\n onChange={dockerChanged}\n showDigest={false}\n />\n </div>\n );\n}\n","import { get } from 'lodash';\nimport { $q } from 'ngimport';\nimport React from 'react';\nimport type { Option } from 'react-select';\nimport type { Subscription } from 'rxjs';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\n\nimport type { IDockerTrigger, IPipelineCommand, ITriggerTemplateComponentProps } from '@spinnaker/core';\nimport { HelpField, Spinner, TetheredSelect } from '@spinnaker/core';\n\nimport type { IDockerLookupType } from '../../image';\nimport { DockerImageReader } from '../../image';\n\nconst lookupTypeOptions = [\n { value: 'digest', label: 'Digest' },\n { value: 'tag', label: 'Tag' },\n];\n\nexport interface IDockerTriggerTemplateState {\n digest: string;\n tags: string[];\n tagsLoading: boolean;\n loadError: boolean;\n lookupType: string;\n selectedTag: string;\n}\n\nexport class DockerTriggerTemplate extends React.Component<\n ITriggerTemplateComponentProps,\n IDockerTriggerTemplateState\n> {\n private queryStream = new Subject();\n private subscription: Subscription;\n\n public static formatLabel(trigger: IDockerTrigger): PromiseLike<string> {\n return $q.when(`(Docker Registry) ${trigger.account ? trigger.account + ':' : ''} ${trigger.repository || ''}`);\n }\n\n public constructor(props: ITriggerTemplateComponentProps) {\n super(props);\n this.state = {\n digest: '',\n tags: [],\n tagsLoading: true,\n loadError: false,\n lookupType: 'tag',\n selectedTag: '',\n };\n }\n\n private handleQuery = () => {\n const trigger = this.props.command.trigger as IDockerTrigger;\n return observableFrom(\n DockerImageReader.findTags({\n provider: 'dockerRegistry',\n account: trigger.account,\n repository: trigger.repository,\n }),\n );\n };\n\n private lookupTypeChanged = (o: Option<IDockerLookupType>) => {\n const newType = o.value;\n this.updateArtifact(this.props.command, newType === 'tag' ? this.state.selectedTag : this.state.digest);\n this.setState({ lookupType: newType });\n };\n\n private updateArtifact(command: IPipelineCommand, tagOrDigest: string) {\n this.props.updateCommand('extraFields.tag', tagOrDigest);\n const trigger = command.trigger as IDockerTrigger;\n if (trigger && trigger.repository) {\n let imageName = '';\n if (trigger.registry) {\n imageName += trigger.registry + '/';\n }\n imageName += trigger.repository;\n\n let imageReference = '';\n if (this.state.lookupType === 'digest') {\n imageReference = `${imageName}@${tagOrDigest}`;\n } else {\n imageReference = `${imageName}:${tagOrDigest}`;\n }\n\n this.props.updateCommand('extraFields.artifacts', [\n {\n type: 'docker/image',\n name: imageName,\n version: tagOrDigest,\n reference: imageReference,\n },\n ]);\n }\n }\n\n private updateSelectedTag = (tag: string) => {\n this.updateArtifact(this.props.command, tag);\n this.setState({ selectedTag: tag });\n this.props.command.triggerInvalid = false;\n };\n\n private updateDigest = (digest: string) => {\n this.updateArtifact(this.props.command, digest);\n this.setState({ digest });\n };\n\n private tagLoadSuccess = (tags: string[]) => {\n const { command } = this.props;\n const trigger = command.trigger as IDockerTrigger;\n const newState = {} as IDockerTriggerTemplateState;\n newState.tags = tags || [];\n // default to what is supplied by the trigger if possible\n const defaultSelection = newState.tags.find((t) => t === trigger.tag);\n if (defaultSelection) {\n newState.selectedTag = defaultSelection;\n this.updateSelectedTag(defaultSelection);\n }\n newState.tagsLoading = false;\n this.setState(newState);\n };\n\n private tagLoadFailure = () => {\n this.setState({\n tagsLoading: false,\n loadError: true,\n });\n };\n\n private initialize = () => {\n const { command } = this.props;\n this.props.updateCommand('triggerInvalid', true);\n\n // These fields will be added to the trigger when the form is submitted\n this.props.updateCommand('extraFields', {\n tag: get(command, 'extraFields.tag', ''),\n artifacts: get(command, 'extraFields.artifacts', ''),\n });\n\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n\n // cancel search stream if trigger has changed to some other type\n if (command.trigger.type !== 'docker') {\n return;\n }\n\n this.subscription = this.queryStream\n .pipe(debounceTime(250), switchMap(this.handleQuery))\n .subscribe(this.tagLoadSuccess, this.tagLoadFailure);\n\n this.searchTags();\n };\n\n public componentDidMount() {\n this.initialize();\n }\n\n public componentWillUnmount() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n private searchTags = (query = '') => {\n this.setState({ tags: [`<span>Finding tags${query && ` matching ${query}`}...</span>`] });\n this.queryStream.next();\n };\n\n public render() {\n const { digest, tags, tagsLoading, loadError, selectedTag, lookupType } = this.state;\n\n const options = tags.map((tag) => {\n return { value: tag } as Option<string>;\n });\n\n return (\n <>\n <div className=\"form-group\">\n <div className=\"sm-label-right col-md-4\">Type</div>\n <div className=\"col-md-3\">\n <TetheredSelect\n clearable={false}\n value={lookupType}\n options={lookupTypeOptions}\n onChange={this.lookupTypeChanged}\n />\n </div>\n </div>\n {lookupType === 'tag' && (\n <div className=\"form-group\">\n <label className=\"col-md-4 sm-label-right\">Tag</label>\n {tagsLoading && (\n <div className=\"col-md-6\">\n <div className=\"form-control-static text-center\">\n <Spinner size=\"small\" />\n </div>\n </div>\n )}\n {loadError && <div className=\"col-md-6\">Error loading tags!</div>}\n {!tagsLoading && (\n <div className=\"col-md-6\">\n {tags.length === 0 && (\n <div>\n <p className=\"form-control-static\">No tags found</p>\n </div>\n )}\n {tags.length > 0 && (\n <TetheredSelect\n options={options}\n optionRenderer={(o) => <span>{o.value}</span>}\n clearable={false}\n value={selectedTag}\n valueRenderer={(o) => (\n <span>\n <strong>{o.value}</strong>\n </span>\n )}\n onChange={(o: Option<string>) => this.updateSelectedTag(o.value)}\n placeholder=\"Search tags...\"\n />\n )}\n </div>\n )}\n </div>\n )}\n {lookupType === 'digest' && (\n <div className=\"form-group\">\n <label className=\"col-md-4 sm-label-right\">\n Digest <HelpField id=\"pipeline.config.docker.trigger.digest\" />\n </label>\n <div className=\"col-md-6\">\n <input\n value={digest}\n onChange={(e) => this.updateDigest(e.target.value)}\n className=\"form-control input-sm\"\n required={true}\n />\n </div>\n </div>\n )}\n </>\n );\n }\n}\n","import React from 'react';\n\nimport type { IDockerTrigger, IExecutionTriggerStatusComponentProps } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\n\nimport { DockerTriggerConfig } from './DockerTriggerConfig';\nimport { DockerTriggerTemplate } from './DockerTriggerTemplate';\n\nconst DockerTriggerExecutionStatus = (props: IExecutionTriggerStatusComponentProps) => {\n const trigger = props.trigger as IDockerTrigger;\n return (\n <li>\n {trigger.repository}:{trigger.tag}\n </li>\n );\n};\n\nRegistry.pipeline.registerTrigger({\n label: 'Docker Registry',\n description: 'Executes the pipeline on an image update',\n key: 'docker',\n component: DockerTriggerConfig,\n manualExecutionComponent: DockerTriggerTemplate,\n executionStatusComponent: DockerTriggerExecutionStatus,\n executionTriggerLabel: () => 'Docker Registry',\n validators: [\n {\n type: 'requiredField',\n fieldName: 'account',\n message: '<strong>Registry</strong> is a required field for Docker Registry triggers.',\n },\n {\n type: 'requiredField',\n fieldName: 'repository',\n message: '<strong>Image</strong> is a required field for Docker Registry triggers.',\n },\n {\n type: 'serviceAccountAccess',\n preventSave: true,\n message: `You do not have access to the service account configured in this pipeline's Docker Registry trigger.\n You will not be able to save your edits to this pipeline.`,\n },\n ],\n});\n","import { module } from 'angular';\n\nimport { DOCKER_PIPELINE_STAGES_BAKE_DOCKERBAKESTAGE } from './pipeline/stages/bake/dockerBakeStage';\nimport './pipeline/trigger/DockerTrigger';\n\nexport const DOCKER_MODULE = 'spinnaker.docker';\nmodule(DOCKER_MODULE, [DOCKER_PIPELINE_STAGES_BAKE_DOCKERBAKESTAGE]);\n"],"names":["observableFrom"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/image/DockerImageReader.ts","../src/image/DockerImageUtils.ts","../src/image/DockerImageAndTagSelector.tsx","../src/pipeline/stages/bake/bakeExecutionDetails.controller.js","../src/pipeline/stages/bake/dockerBakeStage.js","../src/image/DockerChartAndTagSelector.tsx","../src/pipeline/trigger/DockerHelmOciTriggerConfig.tsx","../src/pipeline/trigger/DockerTriggerConfig.tsx","../src/pipeline/trigger/DockerTriggerTemplate.tsx","../src/pipeline/trigger/DockerTrigger.tsx","../src/docker.module.ts"],"sourcesContent":["import type { IFindImageParams, IFindTagsParams, IImage } from '@spinnaker/core';\nimport { REST, RetryService } from '@spinnaker/core';\n\nexport interface IDockerImage extends IImage {\n account: string;\n registry: string;\n repository: string;\n tag: string;\n}\n\nexport class DockerImageReader {\n public static getImage(imageName: string, region: string, credentials: string): PromiseLike<IDockerImage> {\n return REST('/images')\n .path(credentials, region, imageName)\n .query({ provider: 'docker' })\n .get()\n .then((results: IDockerImage[]) => (results && results.length ? results[0] : null))\n .catch((): IDockerImage => null);\n }\n\n public static findImages(params: IFindImageParams): PromiseLike<IDockerImage[]> {\n return RetryService.buildRetrySequence<IDockerImage[]>(\n () => REST('/images/find').query(params).get(),\n (results: IDockerImage[]) => results.length > 0,\n 10,\n 1000,\n )\n .then((results: IDockerImage[]) => results)\n .catch((): IDockerImage[] => []);\n }\n\n public static findTags(params: IFindTagsParams): PromiseLike<string[]> {\n return RetryService.buildRetrySequence<string[]>(\n () => REST('/images/tags').query(params).get(),\n (results: string[]) => results.length > 0,\n 10,\n 1000,\n )\n .then((results: string[]) => results)\n .catch((): string[] => []);\n }\n}\n\nexport class DockerChartImageReader {\n public static getImage(imageName: string, region: string, credentials: string): PromiseLike<IDockerImage> {\n return REST('/charts')\n .path(credentials, region, imageName)\n .query({ provider: 'docker' })\n .get()\n .then((results: IDockerImage[]) => (results && results.length ? results[0] : null))\n .catch((): IDockerImage => null);\n }\n\n public static findImages(params: IFindImageParams): PromiseLike<IDockerImage[]> {\n return RetryService.buildRetrySequence<IDockerImage[]>(\n () => REST('/charts/find').query(params).get(),\n (results: IDockerImage[]) => results.length > 0,\n 10,\n 1000,\n )\n .then((results: IDockerImage[]) => results)\n .catch((): IDockerImage[] => []);\n }\n\n public static findTags(params: IFindTagsParams): PromiseLike<string[]> {\n return RetryService.buildRetrySequence<string[]>(\n () => REST('/charts/tags').query(params).get(),\n (results: string[]) => results.length > 0,\n 10,\n 1000,\n )\n .then((results: string[]) => results)\n .catch((): string[] => []);\n }\n}\n","export interface IDockerImageParts {\n organization: string;\n repository: string;\n tag?: string;\n digest?: string;\n}\n\nexport class DockerImageUtils {\n // Split the image id up into the selectable parts to feed the UI\n public static splitImageId(imageId = ''): IDockerImageParts {\n let imageParts: string[];\n if (imageId.includes('@')) {\n imageParts = imageId.split('@');\n } else {\n imageParts = imageId.split(':');\n }\n const repository = imageParts[0];\n const repositoryParts = repository.split('/');\n // Everything before the last slash is considered the organization\n const organization = repositoryParts.slice(0, -1).join('/');\n\n const lookup = imageParts.length > 1 ? imageParts.slice(1).join(':') : '';\n\n let tag: string;\n let digest: string;\n if (lookup) {\n if (lookup.startsWith('sha256:')) {\n digest = lookup;\n } else {\n tag = lookup;\n }\n }\n\n return { organization, repository, digest, tag };\n }\n\n public static generateImageId(parts: IDockerImageParts): string {\n if (!parts.repository || !(parts.digest || parts.tag)) {\n return undefined;\n }\n\n let imageId: string;\n\n if (parts.digest) {\n imageId = `${parts.repository}@${parts.digest}`;\n } else {\n imageId = `${parts.repository}:${parts.tag}`;\n }\n\n return imageId;\n }\n}\n","import { groupBy, reduce, trim, uniq } from 'lodash';\nimport React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\n\nimport type { IAccount, IFindImageParams } from '@spinnaker/core';\nimport { AccountService, HelpField, Tooltip, ValidationMessage } from '@spinnaker/core';\n\nimport type { IDockerImage } from './DockerImageReader';\nimport { DockerImageReader } from './DockerImageReader';\nimport type { IDockerImageParts } from './DockerImageUtils';\nimport { DockerImageUtils } from './DockerImageUtils';\n\nexport type IDockerLookupType = 'tag' | 'digest';\n\nexport interface IDockerImageAndTagChanges {\n account?: string;\n organization?: string;\n registry?: string;\n repository?: string;\n tag?: string;\n digest?: string;\n imageId?: string;\n}\n\nexport interface IDockerImageAndTagSelectorProps {\n specifyTagByRegex: boolean;\n imageId: string;\n organization: string;\n registry: string;\n repository: string;\n tag: string;\n digest: string;\n account: string;\n showRegistry?: boolean;\n onChange: (changes: IDockerImageAndTagChanges) => void;\n deferInitialization?: boolean;\n showDigest?: boolean;\n allowManualDefinition?: boolean;\n}\n\nexport interface IDockerImageAndTagSelectorState {\n accountOptions: Array<Option<string>>;\n switchedManualWarning: string;\n missingFields?: string[];\n imagesLoaded: boolean;\n imagesLoading: boolean;\n organizationOptions: Array<Option<string>>;\n repositoryOptions: Array<Option<string>>;\n defineManually: boolean;\n tagOptions: Array<Option<string>>;\n lookupType: IDockerLookupType;\n}\n\nconst imageFields = ['organization', 'repository', 'tag', 'digest'];\nconst defineOptions = [\n { label: 'Manually', value: true },\n { label: 'Select from list', value: false },\n];\n\nexport class DockerImageAndTagSelector extends React.Component<\n IDockerImageAndTagSelectorProps,\n IDockerImageAndTagSelectorState\n> {\n public static defaultProps: Partial<IDockerImageAndTagSelectorProps> = {\n organization: '',\n registry: '',\n repository: '',\n showDigest: true,\n allowManualDefinition: true,\n };\n\n private unmounted = false;\n private images: IDockerImage[];\n private accounts: string[];\n\n private registryMap: { [key: string]: string };\n private accountMap: { [key: string]: string[] };\n private newAccounts: string[];\n private organizationMap: { [key: string]: string[] };\n private repositoryMap: { [key: string]: string[] };\n private organizations: string[];\n private cachedValues: { [key: string]: string } = {};\n\n public constructor(props: IDockerImageAndTagSelectorProps) {\n super(props);\n\n const accountOptions = props.account ? [{ label: props.account, value: props.account }] : [];\n const organizationOptions =\n props.organization && props.organization.length ? [{ label: props.organization, value: props.organization }] : [];\n const repositoryOptions =\n props.repository && props.repository.length ? [{ label: props.repository, value: props.repository }] : [];\n const tagOptions = props.tag && props.tag.length ? [{ label: props.tag, value: props.tag }] : [];\n const parsedImageId = DockerImageUtils.splitImageId(props.imageId);\n const defineManually = props.allowManualDefinition && Boolean(props.imageId && props.imageId.includes('${'));\n\n this.state = {\n accountOptions,\n switchedManualWarning: undefined,\n imagesLoaded: false,\n imagesLoading: false,\n organizationOptions,\n repositoryOptions,\n defineManually,\n tagOptions,\n lookupType: props.digest || parsedImageId.digest ? 'digest' : 'tag',\n };\n }\n\n private getAccountMap(images: IDockerImage[]): { [key: string]: string[] } {\n const groupedImages = groupBy(\n images.filter((image) => image.account),\n 'account',\n );\n return reduce<IDockerImage[], { [key: string]: string[] }>(\n groupedImages,\n (acc, image, key) => {\n acc[key] = uniq(image.map((i) => `${i.repository.split('/').slice(0, -1).join('/')}`));\n return acc;\n },\n {},\n );\n }\n\n private getRegistryMap(images: IDockerImage[]) {\n return images.reduce((m: { [key: string]: string }, image: IDockerImage) => {\n m[image.account] = image.registry;\n return m;\n }, {} as { [key: string]: string });\n }\n\n private getOrganizationMap(images: IDockerImage[]): { [key: string]: string[] } {\n const extractGroupByKey = (image: IDockerImage) =>\n `${image.account}/${image.repository.split('/').slice(0, -1).join('/')}`;\n const groupedImages = groupBy(\n images.filter((image) => image.repository),\n extractGroupByKey,\n );\n return reduce<IDockerImage[], { [key: string]: string[] }>(\n groupedImages,\n (acc, image, key) => {\n acc[key] = uniq(image.map((i) => i.repository));\n return acc;\n },\n {},\n );\n }\n\n private getRepositoryMap(images: IDockerImage[]) {\n const groupedImages = groupBy(\n images.filter((image) => image.account),\n 'repository',\n );\n return reduce<IDockerImage[], { [key: string]: string[] }>(\n groupedImages,\n (acc, image, key) => {\n acc[key] = uniq(image.map((i) => i.tag));\n return acc;\n },\n {},\n );\n }\n\n private getOrganizationsList(accountMap: { [key: string]: string[] }) {\n return accountMap ? accountMap[this.props.showRegistry ? this.props.account : this.props.registry] || [] : [];\n }\n\n private getRepositoryList(organizationMap: { [key: string]: string[] }, organization: string, registry: string) {\n if (organizationMap) {\n const key = `${this.props.showRegistry ? this.props.account : registry}/${organization || ''}`;\n return organizationMap[key] || [];\n }\n return [];\n }\n\n private getTags(tag: string, repositoryMap: { [key: string]: string[] }, repository: string) {\n let tags: string[] = [];\n if (this.props.specifyTagByRegex) {\n if (tag && trim(tag) === '') {\n tag = undefined;\n }\n } else {\n if (repositoryMap) {\n tags = repositoryMap[repository] || [];\n if (!tags.includes(tag) && tag && !tag.includes('${')) {\n tag = undefined;\n }\n }\n }\n\n return { tag, tags };\n }\n\n public componentWillReceiveProps(nextProps: IDockerImageAndTagSelectorProps) {\n if (\n !this.images ||\n ['account', 'showRegistry'].some(\n (key: keyof IDockerImageAndTagSelectorProps) => this.props[key] !== nextProps[key],\n )\n ) {\n this.refreshImages(nextProps);\n } else if (\n ['organization', 'registry', 'repository'].some(\n (key: keyof IDockerImageAndTagSelectorProps) => this.props[key] !== nextProps[key],\n )\n ) {\n this.updateThings(nextProps);\n }\n\n if (nextProps.imageId && nextProps.imageId.includes('${')) {\n this.setState({ defineManually: true });\n }\n }\n\n componentWillUnmount() {\n this.unmounted = true;\n }\n\n private synchronizeChanges(values: IDockerImageParts, registry: string) {\n const { organization, repository, tag, digest } = values;\n if (this.props.onChange) {\n const imageId = DockerImageUtils.generateImageId({ organization, repository, tag, digest });\n const changes: IDockerImageAndTagChanges = {};\n if (tag !== this.props.tag) {\n changes.tag = tag;\n }\n if (imageId !== this.props.imageId) {\n changes.imageId = imageId;\n }\n if (organization !== this.props.organization) {\n changes.organization = organization;\n }\n if (registry !== this.props.registry) {\n changes.registry = registry;\n }\n if (repository !== this.props.repository) {\n changes.repository = repository;\n }\n if (digest !== this.props.digest) {\n changes.digest = digest;\n }\n if (Object.keys(changes).length > 0) {\n this.props.onChange(changes);\n }\n }\n }\n\n private updateThings(props: IDockerImageAndTagSelectorProps, allowAutoSwitchToManualEntry = false) {\n if (!this.repositoryMap || this.unmounted) {\n return;\n }\n\n const { imageId, specifyTagByRegex } = props;\n let { organization, registry, repository } = props;\n\n if (props.showRegistry) {\n registry = this.registryMap[props.account];\n }\n\n const organizationFound = !organization || this.organizations.includes(organization) || organization.includes('${');\n if (!organizationFound) {\n organization = '';\n }\n\n const repositories = this.getRepositoryList(this.organizationMap, organization, registry);\n const repositoryFound = !repository || repository.includes('${') || repositories.includes(repository);\n\n if (!repositoryFound) {\n repository = '';\n }\n\n const { tag, tags } = this.getTags(props.tag, this.repositoryMap, repository);\n const tagFound = tag === props.tag || specifyTagByRegex;\n\n const newState = {\n accountOptions: this.newAccounts.sort().map((a) => ({ label: a, value: a })),\n organizationOptions: this.organizations\n .filter((o) => o)\n .sort()\n .map((o) => ({ label: o, value: o })),\n imagesLoaded: true,\n repositoryOptions: repositories.sort().map((r) => ({ label: r, value: r })),\n tagOptions: tags.sort().map((t) => ({ label: t, value: t })),\n } as IDockerImageAndTagSelectorState;\n\n if (\n imageId &&\n (!this.state.imagesLoaded || allowAutoSwitchToManualEntry) &&\n (!organizationFound || !repositoryFound || !tagFound)\n ) {\n newState.defineManually = true;\n\n const missingFields: string[] = [];\n if (!organizationFound) {\n missingFields.push('organization');\n }\n if (!repositoryFound) {\n missingFields.push('image');\n }\n if (!tagFound) {\n missingFields.push('tag');\n }\n newState.missingFields = missingFields;\n newState.switchedManualWarning = `Could not find ${missingFields.join(' or ')}, switched to manual entry`;\n } else if (!imageId || !imageId.includes('${')) {\n this.synchronizeChanges(\n this.state.defineManually\n ? DockerImageUtils.splitImageId(imageId)\n : { organization, repository, tag, digest: this.props.digest },\n registry,\n );\n }\n\n this.setState(newState);\n }\n\n private initializeImages(props: IDockerImageAndTagSelectorProps) {\n if (this.state.imagesLoading) {\n return;\n }\n\n const { showRegistry, account, registry } = props;\n\n const imageConfig: IFindImageParams = {\n provider: 'dockerRegistry',\n account: showRegistry ? account : registry,\n };\n\n this.setState({ imagesLoading: true });\n DockerImageReader.findImages(imageConfig)\n .then((images: IDockerImage[]) => {\n this.images = images;\n this.registryMap = this.getRegistryMap(this.images);\n this.accountMap = this.getAccountMap(this.images);\n this.newAccounts = this.accounts || Object.keys(this.accountMap);\n\n this.organizationMap = this.getOrganizationMap(this.images);\n this.repositoryMap = this.getRepositoryMap(this.images);\n this.organizations = this.getOrganizationsList(this.accountMap);\n this.updateThings(props, true);\n })\n .finally(() => {\n if (!this.unmounted) {\n this.setState({ imagesLoading: false });\n }\n });\n }\n\n public handleRefreshImages = (): void => {\n this.refreshImages(this.props);\n };\n\n public refreshImages(props: IDockerImageAndTagSelectorProps): void {\n this.initializeImages(props);\n }\n\n private initializeAccounts(props: IDockerImageAndTagSelectorProps) {\n let { account } = props;\n AccountService.listAccounts('dockerRegistry').then((allAccounts: IAccount[]) => {\n const accounts = allAccounts.map((a: IAccount) => a.name);\n if (this.props.showRegistry && !account) {\n account = accounts[0];\n }\n this.accounts = accounts;\n this.refreshImages({ ...props, ...{ account } });\n });\n }\n\n private isNew(): boolean {\n const { account, organization, registry, repository, tag } = this.props;\n return !account && !organization && !registry && !repository && !tag;\n }\n\n public componentDidMount() {\n if (!this.props.deferInitialization && (this.props.registry || this.isNew())) {\n this.initializeAccounts(this.props);\n }\n }\n\n private valueChanged(name: string, value: string) {\n const changes = { [name]: value };\n if (imageFields.some((n) => n === name)) {\n // values are parts of the image\n const { organization, repository, tag, digest } = this.props;\n const imageParts = { ...{ organization, repository, tag, digest }, ...changes };\n const imageId = DockerImageUtils.generateImageId(imageParts);\n changes.imageId = imageId;\n }\n this.props.onChange && this.props.onChange(changes);\n }\n\n private lookupTypeChanged = (o: Option<IDockerLookupType>) => {\n const newType = o.value;\n const oldType = this.state.lookupType;\n const oldValue = this.props[oldType];\n const cachedValue = this.cachedValues[newType];\n\n this.valueChanged(oldType, undefined);\n if (this.cachedValues[newType]) {\n this.valueChanged(newType, cachedValue);\n }\n this.setState({ lookupType: newType });\n this.cachedValues[oldType] = oldValue;\n };\n\n private showManualInput = (defineManually: boolean) => {\n if (!defineManually) {\n const newFields = DockerImageUtils.splitImageId(this.props.imageId || '');\n this.props.onChange(newFields);\n if (this.state.switchedManualWarning) {\n this.setState({ switchedManualWarning: undefined, missingFields: undefined });\n }\n }\n this.setState({ defineManually });\n };\n\n public render() {\n const {\n account,\n allowManualDefinition,\n digest,\n imageId,\n organization,\n repository,\n showDigest,\n showRegistry,\n specifyTagByRegex,\n tag,\n } = this.props;\n const {\n accountOptions,\n switchedManualWarning,\n missingFields,\n imagesLoading,\n lookupType,\n organizationOptions,\n repositoryOptions,\n defineManually,\n tagOptions,\n } = this.state;\n\n const parsedImageId = DockerImageUtils.splitImageId(imageId);\n\n const manualInputToggle = (\n <div className=\"sp-formItem groupHeader\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Define Image ID</div>\n\n <div className=\"sp-formActions sp-formActions--mobile\">\n <span className=\"action\" />\n </div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <Select\n value={defineManually}\n disabled={imagesLoading || !allowManualDefinition}\n onChange={(o: Option<boolean>) => this.showManualInput(o.value)}\n options={defineOptions}\n clearable={false}\n />\n </span>\n </div>\n </div>\n </div>\n );\n\n const warning = switchedManualWarning ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\" />\n <div className=\"sp-formItem__right\">\n <ValidationMessage\n type=\"warning\"\n message={\n <>\n {switchedManualWarning}\n {(missingFields || []).map((f) => (\n <div key={f}>\n <HelpField expand={true} id={`pipeline.config.docker.trigger.missing.${f}`} />\n </div>\n ))}\n </>\n }\n />\n </div>\n </div>\n ) : null;\n\n if (defineManually) {\n return (\n <div className=\"sp-formGroup\">\n {manualInputToggle}\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Image ID</div>\n <div className=\"sp-formActions sp-formActions--mobile\">\n <span className=\"action\" />\n </div>\n </div>\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <input\n className=\"form-control input-sm\"\n value={imageId || ''}\n onChange={(e) => this.valueChanged('imageId', e.target.value)}\n />\n </span>\n </div>\n </div>\n </div>\n {warning}\n </div>\n );\n }\n\n const Registry = showRegistry ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Registry Name</div>\n </div>\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <Select\n value={account}\n disabled={imagesLoading}\n onChange={(o: Option<string>) => this.valueChanged('account', o ? o.value : '')}\n options={accountOptions}\n isLoading={imagesLoading}\n />\n </span>\n <span className=\"sp-formActions sp-formActions--web\">\n <span className=\"action\">\n <Tooltip value={imagesLoading ? 'Images refreshing' : 'Refresh images list'}>\n <i\n className={`fa icon-button-refresh-arrows ${imagesLoading ? 'fa-spin' : ''}`}\n onClick={this.handleRefreshImages}\n />\n </Tooltip>\n </span>\n </span>\n </div>\n </div>\n </div>\n ) : null;\n\n const Organization = (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Organization</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n {organization.includes('${') ? (\n <input\n disabled={imagesLoading}\n className=\"form-control input-sm\"\n value={organization || ''}\n onChange={(e) => this.valueChanged('organization', e.target.value)}\n />\n ) : (\n <Select\n value={organization || ''}\n disabled={imagesLoading}\n onChange={(o: Option<string>) => this.valueChanged('organization', (o && o.value) || '')}\n placeholder=\"No organization\"\n options={organizationOptions}\n isLoading={imagesLoading}\n />\n )}\n </span>\n </div>\n </div>\n </div>\n );\n\n const Image = (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Image</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n {repository.includes('${') ? (\n <input\n className=\"form-control input-sm\"\n disabled={imagesLoading}\n value={repository || ''}\n onChange={(e) => this.valueChanged('repository', e.target.value)}\n />\n ) : (\n <Select\n value={repository || ''}\n disabled={imagesLoading}\n onChange={(o: Option<string>) => this.valueChanged('repository', (o && o.value) || '')}\n options={repositoryOptions}\n required={true}\n isLoading={imagesLoading}\n />\n )}\n </span>\n </div>\n </div>\n </div>\n );\n\n const Tag =\n lookupType === 'tag' ? (\n specifyTagByRegex ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Tag</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <input\n type=\"text\"\n className=\"form-control input-sm\"\n value={tag || ''}\n disabled={imagesLoading || !repository}\n onChange={(e) => this.valueChanged('tag', e.target.value)}\n />\n </span>\n </div>\n <HelpField id=\"pipeline.config.docker.trigger.tag\" expand={true} />\n </div>\n </div>\n ) : (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Tag</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n {tag && tag.includes('${') ? (\n <input\n className=\"form-control input-sm\"\n disabled={imagesLoading}\n value={tag || ''}\n onChange={(e) => this.valueChanged('tag', e.target.value)}\n required={true}\n />\n ) : (\n <>\n <Select\n value={tag || ''}\n disabled={imagesLoading || !repository}\n isLoading={imagesLoading}\n onChange={(o: Option<string>) => this.valueChanged('tag', o ? o.value : undefined)}\n options={tagOptions}\n placeholder=\"No tag\"\n required={true}\n />\n <HelpField id=\"pipeline.config.docker.trigger.tag.additionalInfo\" expand={true} />\n </>\n )}\n </span>\n </div>\n </div>\n </div>\n )\n ) : null;\n\n const Digest =\n lookupType === 'digest' ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">\n Digest <HelpField id=\"pipeline.config.docker.trigger.digest\" />\n </div>\n </div>\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <input\n className=\"form-control input-sm\"\n placeholder=\"sha256:abc123\"\n value={digest || parsedImageId.digest || ''}\n onChange={(e) => this.valueChanged('digest', e.target.value)}\n required={true}\n />\n </span>\n </div>\n </div>\n </div>\n ) : null;\n\n const LookupTypeSelector = showDigest ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Type</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <Select\n clearable={false}\n value={lookupType}\n options={[\n { value: 'digest', label: 'Digest' },\n { value: 'tag', label: 'Tag' },\n ]}\n onChange={this.lookupTypeChanged}\n />\n </span>\n </div>\n </div>\n </div>\n ) : null;\n\n return (\n <div className=\"sp-formGroup\">\n {manualInputToggle}\n {Registry}\n {Organization}\n {Image}\n {LookupTypeSelector}\n {Digest}\n {Tag}\n </div>\n );\n }\n}\n","'use strict';\n\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport { module } from 'angular';\n\nimport { SETTINGS } from '@spinnaker/core';\n\nexport const DOCKER_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER =\n 'spinnaker.docker.pipeline.stage.bake.executionDetails.controller';\nexport const name = DOCKER_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER; // for backwards compatibility\nmodule(DOCKER_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER, [UIROUTER_ANGULARJS]).controller(\n 'dockerBakeExecutionDetailsCtrl',\n [\n '$scope',\n '$stateParams',\n 'executionDetailsSectionService',\n '$interpolate',\n function ($scope, $stateParams, executionDetailsSectionService, $interpolate) {\n $scope.configSections = ['bakeConfig', 'taskStatus'];\n\n const initialized = () => {\n $scope.detailsSection = $stateParams.details;\n $scope.provider = $scope.stage.context.cloudProviderType || 'docker';\n $scope.bakeryDetailUrl = $interpolate(\n $scope.roscoMode && SETTINGS.roscoDetailUrl ? SETTINGS.roscoDetailUrl : SETTINGS.bakeryDetailUrl,\n );\n };\n\n const initialize = () => executionDetailsSectionService.synchronizeSection($scope.configSections, initialized);\n\n initialize();\n\n $scope.$on('$stateChangeSuccess', initialize);\n },\n ],\n);\n","'use strict';\n\nimport { module } from 'angular';\nimport _ from 'lodash';\n\nimport { AuthenticationService, BakeExecutionLabel, BakeryReader, Registry } from '@spinnaker/core';\nimport { DOCKER_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER } from './bakeExecutionDetails.controller';\n\n/*\n This stage is just here so that we can experiment with baking Docker containers within pipelines.\n Without this stage, programmatically-created pipelines with Docker bake stages would not render\n execution details.\n */\nexport const DOCKER_PIPELINE_STAGES_BAKE_DOCKERBAKESTAGE = 'spinnaker.docker.pipeline.stage.bakeStage';\nexport const name = DOCKER_PIPELINE_STAGES_BAKE_DOCKERBAKESTAGE; // for backwards compatibility\nmodule(DOCKER_PIPELINE_STAGES_BAKE_DOCKERBAKESTAGE, [DOCKER_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'bake',\n cloudProvider: 'docker',\n label: 'Bake',\n description: 'Bakes an image',\n templateUrl: require('./bakeStage.html'),\n executionDetailsUrl: require('./bakeExecutionDetails.html'),\n executionLabelComponent: BakeExecutionLabel,\n extraLabelLines: (stage) => {\n return stage.masterStage.context.allPreviouslyBaked || stage.masterStage.context.somePreviouslyBaked ? 1 : 0;\n },\n supportsCustomTimeout: true,\n validators: [{ type: 'requiredField', fieldName: 'package' }],\n restartable: true,\n });\n })\n .controller('dockerBakeStageCtrl', [\n '$scope',\n '$q',\n function ($scope, $q) {\n const stage = $scope.stage;\n\n stage.region = 'global';\n\n if (!$scope.stage.user) {\n $scope.stage.user = AuthenticationService.getAuthenticatedUser().name;\n }\n\n $scope.viewState = {\n loading: true,\n };\n\n function initialize() {\n $scope.viewState.providerSelected = true;\n $q.all([BakeryReader.getBaseOsOptions('docker'), BakeryReader.getBaseLabelOptions()]).then(function ([\n baseOsOptions,\n baseLabelOptions,\n ]) {\n $scope.baseOsOptions = baseOsOptions.baseImages;\n $scope.baseLabelOptions = baseLabelOptions;\n\n if (!$scope.stage.baseOs && $scope.baseOsOptions && $scope.baseOsOptions.length) {\n $scope.stage.baseOs = $scope.baseOsOptions[0].id;\n }\n if (!$scope.stage.baseLabel && $scope.baseLabelOptions && $scope.baseLabelOptions.length) {\n $scope.stage.baseLabel = $scope.baseLabelOptions[0];\n }\n $scope.viewState.loading = false;\n });\n }\n\n function deleteEmptyProperties() {\n _.forOwn($scope.stage, function (val, key) {\n if (val === '') {\n delete $scope.stage[key];\n }\n });\n }\n\n $scope.$watch('stage', deleteEmptyProperties, true);\n\n initialize();\n },\n ]);\n","import { groupBy, reduce, trim, uniq } from 'lodash';\nimport React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\n\nimport type { IAccount, IFindImageParams } from '@spinnaker/core';\nimport { AccountService, HelpField, Tooltip, ValidationMessage } from '@spinnaker/core';\n\nimport type { IDockerImage } from './DockerImageReader';\nimport { DockerChartImageReader } from './DockerImageReader';\nimport type { IDockerImageParts } from './DockerImageUtils';\nimport { DockerImageUtils } from './DockerImageUtils';\n\nexport type IDockerLookupType = 'tag' | 'digest';\n\nexport interface IDockerChartAndTagChanges {\n account?: string;\n organization?: string;\n registry?: string;\n repository?: string;\n tag?: string;\n digest?: string;\n imageId?: string;\n}\n\nexport interface IDockerChartAndTagSelectorProps {\n specifyTagByRegex: boolean;\n imageId: string;\n organization: string;\n registry: string;\n repository: string;\n tag: string;\n digest: string;\n account: string;\n showRegistry?: boolean;\n onChange: (changes: IDockerChartAndTagChanges) => void;\n deferInitialization?: boolean;\n showDigest?: boolean;\n allowManualDefinition?: boolean;\n}\n\nexport interface IDockerChartAndTagSelectorState {\n accountOptions: Array<Option<string>>;\n switchedManualWarning: string;\n missingFields?: string[];\n imagesLoaded: boolean;\n imagesLoading: boolean;\n organizationOptions: Array<Option<string>>;\n repositoryOptions: Array<Option<string>>;\n defineManually: boolean;\n tagOptions: Array<Option<string>>;\n lookupType: IDockerLookupType;\n}\n\nconst imageFields = ['organization', 'repository', 'tag', 'digest'];\nconst defineOptions = [\n { label: 'Manually', value: true },\n { label: 'Select from list', value: false },\n];\n\nexport class DockerChartAndTagSelector extends React.Component<\n IDockerChartAndTagSelectorProps,\n IDockerChartAndTagSelectorState\n> {\n public static defaultProps: Partial<IDockerChartAndTagSelectorProps> = {\n organization: '',\n registry: '',\n repository: '',\n showDigest: true,\n allowManualDefinition: true,\n };\n\n private unmounted = false;\n private images: IDockerImage[];\n private accounts: string[];\n\n private registryMap: { [key: string]: string };\n private accountMap: { [key: string]: string[] };\n private newAccounts: string[];\n private organizationMap: { [key: string]: string[] };\n private repositoryMap: { [key: string]: string[] };\n private organizations: string[];\n private cachedValues: { [key: string]: string } = {};\n\n public constructor(props: IDockerChartAndTagSelectorProps) {\n super(props);\n\n const accountOptions = props.account ? [{ label: props.account, value: props.account }] : [];\n const organizationOptions =\n props.organization && props.organization.length ? [{ label: props.organization, value: props.organization }] : [];\n const repositoryOptions =\n props.repository && props.repository.length ? [{ label: props.repository, value: props.repository }] : [];\n const tagOptions = props.tag && props.tag.length ? [{ label: props.tag, value: props.tag }] : [];\n const parsedImageId = DockerImageUtils.splitImageId(props.imageId);\n const defineManually = props.allowManualDefinition && Boolean(props.imageId && props.imageId.includes('${'));\n\n this.state = {\n accountOptions,\n switchedManualWarning: undefined,\n imagesLoaded: false,\n imagesLoading: false,\n organizationOptions,\n repositoryOptions,\n defineManually,\n tagOptions,\n lookupType: props.digest || parsedImageId.digest ? 'digest' : 'tag',\n };\n }\n\n private getAccountMap(images: IDockerImage[]): { [key: string]: string[] } {\n const groupedImages = groupBy(\n images.filter((image) => image.account),\n 'account',\n );\n return reduce<IDockerImage[], { [key: string]: string[] }>(\n groupedImages,\n (acc, image, key) => {\n acc[key] = uniq(image.map((i) => `${i.repository.split('/').slice(0, -1).join('/')}`));\n return acc;\n },\n {},\n );\n }\n\n private getRegistryMap(images: IDockerImage[]) {\n return images.reduce((m: { [key: string]: string }, image: IDockerImage) => {\n m[image.account] = image.registry;\n return m;\n }, {} as { [key: string]: string });\n }\n\n private getOrganizationMap(images: IDockerImage[]): { [key: string]: string[] } {\n const extractGroupByKey = (image: IDockerImage) =>\n `${image.account}/${image.repository.split('/').slice(0, -1).join('/')}`;\n const groupedImages = groupBy(\n images.filter((image) => image.repository),\n extractGroupByKey,\n );\n return reduce<IDockerImage[], { [key: string]: string[] }>(\n groupedImages,\n (acc, image, key) => {\n acc[key] = uniq(image.map((i) => i.repository));\n return acc;\n },\n {},\n );\n }\n\n private getRepositoryMap(images: IDockerImage[]) {\n const groupedImages = groupBy(\n images.filter((image) => image.account),\n 'repository',\n );\n return reduce<IDockerImage[], { [key: string]: string[] }>(\n groupedImages,\n (acc, image, key) => {\n acc[key] = uniq(image.map((i) => i.tag));\n return acc;\n },\n {},\n );\n }\n\n private getOrganizationsList(accountMap: { [key: string]: string[] }) {\n return accountMap ? accountMap[this.props.showRegistry ? this.props.account : this.props.registry] || [] : [];\n }\n\n private getRepositoryList(organizationMap: { [key: string]: string[] }, organization: string, registry: string) {\n if (organizationMap) {\n const key = `${this.props.showRegistry ? this.props.account : registry}/${organization || ''}`;\n return organizationMap[key] || [];\n }\n return [];\n }\n\n private getTags(tag: string, repositoryMap: { [key: string]: string[] }, repository: string) {\n let tags: string[] = [];\n if (this.props.specifyTagByRegex) {\n if (tag && trim(tag) === '') {\n tag = undefined;\n }\n } else {\n if (repositoryMap) {\n tags = repositoryMap[repository] || [];\n if (!tags.includes(tag) && tag && !tag.includes('${')) {\n tag = undefined;\n }\n }\n }\n\n return { tag, tags };\n }\n\n public componentWillReceiveProps(nextProps: IDockerChartAndTagSelectorProps) {\n if (\n !this.images ||\n ['account', 'showRegistry'].some(\n (key: keyof IDockerChartAndTagSelectorProps) => this.props[key] !== nextProps[key],\n )\n ) {\n this.refreshImages(nextProps);\n } else if (\n ['organization', 'registry', 'repository'].some(\n (key: keyof IDockerChartAndTagSelectorProps) => this.props[key] !== nextProps[key],\n )\n ) {\n this.updateThings(nextProps);\n }\n\n if (nextProps.imageId && nextProps.imageId.includes('${')) {\n this.setState({ defineManually: true });\n }\n }\n\n componentWillUnmount() {\n this.unmounted = true;\n }\n\n private synchronizeChanges(values: IDockerImageParts, registry: string) {\n const { organization, repository, tag, digest } = values;\n if (this.props.onChange) {\n const imageId = DockerImageUtils.generateImageId({ organization, repository, tag, digest });\n const changes: IDockerChartAndTagChanges = {};\n if (tag !== this.props.tag) {\n changes.tag = tag;\n }\n if (imageId !== this.props.imageId) {\n changes.imageId = imageId;\n }\n if (organization !== this.props.organization) {\n changes.organization = organization;\n }\n if (registry !== this.props.registry) {\n changes.registry = registry;\n }\n if (repository !== this.props.repository) {\n changes.repository = repository;\n }\n if (digest !== this.props.digest) {\n changes.digest = digest;\n }\n if (Object.keys(changes).length > 0) {\n this.props.onChange(changes);\n }\n }\n }\n\n private updateThings(props: IDockerChartAndTagSelectorProps, allowAutoSwitchToManualEntry = false) {\n if (!this.repositoryMap || this.unmounted) {\n return;\n }\n\n const { imageId, specifyTagByRegex } = props;\n let { organization, registry, repository } = props;\n\n if (props.showRegistry) {\n registry = this.registryMap[props.account];\n }\n\n const organizationFound = !organization || this.organizations.includes(organization) || organization.includes('${');\n if (!organizationFound) {\n organization = '';\n }\n\n const repositories = this.getRepositoryList(this.organizationMap, organization, registry);\n const repositoryFound = !repository || repository.includes('${') || repositories.includes(repository);\n\n if (!repositoryFound) {\n repository = '';\n }\n\n const { tag, tags } = this.getTags(props.tag, this.repositoryMap, repository);\n const tagFound = tag === props.tag || specifyTagByRegex;\n\n const newState = {\n accountOptions: this.newAccounts.sort().map((a) => ({ label: a, value: a })),\n organizationOptions: this.organizations\n .filter((o) => o)\n .sort()\n .map((o) => ({ label: o, value: o })),\n imagesLoaded: true,\n repositoryOptions: repositories.sort().map((r) => ({ label: r, value: r })),\n tagOptions: tags.sort().map((t) => ({ label: t, value: t })),\n } as IDockerChartAndTagSelectorState;\n\n if (\n imageId &&\n (!this.state.imagesLoaded || allowAutoSwitchToManualEntry) &&\n (!organizationFound || !repositoryFound || !tagFound)\n ) {\n newState.defineManually = true;\n\n const missingFields: string[] = [];\n if (!organizationFound) {\n missingFields.push('organization');\n }\n if (!repositoryFound) {\n missingFields.push('image');\n }\n if (!tagFound) {\n missingFields.push('tag');\n }\n newState.missingFields = missingFields;\n newState.switchedManualWarning = `Could not find ${missingFields.join(' or ')}, switched to manual entry`;\n } else if (!imageId || !imageId.includes('${')) {\n this.synchronizeChanges(\n this.state.defineManually\n ? DockerImageUtils.splitImageId(imageId)\n : { organization, repository, tag, digest: this.props.digest },\n registry,\n );\n }\n\n this.setState(newState);\n }\n\n private initializeImages(props: IDockerChartAndTagSelectorProps) {\n if (this.state.imagesLoading) {\n return;\n }\n\n const { showRegistry, account, registry } = props;\n\n const imageConfig: IFindImageParams = {\n provider: 'dockerRegistry',\n account: showRegistry ? account : registry,\n };\n\n this.setState({ imagesLoading: true });\n DockerChartImageReader.findImages(imageConfig)\n .then((images: IDockerImage[]) => {\n this.images = images;\n this.registryMap = this.getRegistryMap(this.images);\n this.accountMap = this.getAccountMap(this.images);\n this.newAccounts = this.accounts || Object.keys(this.accountMap);\n\n this.organizationMap = this.getOrganizationMap(this.images);\n this.repositoryMap = this.getRepositoryMap(this.images);\n this.organizations = this.getOrganizationsList(this.accountMap);\n this.updateThings(props, true);\n })\n .finally(() => {\n if (!this.unmounted) {\n this.setState({ imagesLoading: false });\n }\n });\n }\n\n public handleRefreshImages = (): void => {\n this.refreshImages(this.props);\n };\n\n public refreshImages(props: IDockerChartAndTagSelectorProps): void {\n this.initializeImages(props);\n }\n\n private initializeAccounts(props: IDockerChartAndTagSelectorProps) {\n let { account } = props;\n AccountService.listAccounts('dockerRegistry').then((allAccounts: IAccount[]) => {\n const accounts = allAccounts.map((a: IAccount) => a.name);\n if (this.props.showRegistry && !account) {\n account = accounts[0];\n }\n this.accounts = accounts;\n this.refreshImages({ ...props, ...{ account } });\n });\n }\n\n private isNew(): boolean {\n const { account, organization, registry, repository, tag } = this.props;\n return !account && !organization && !registry && !repository && !tag;\n }\n\n public componentDidMount() {\n if (!this.props.deferInitialization && (this.props.registry || this.isNew())) {\n this.initializeAccounts(this.props);\n }\n }\n\n private valueChanged(name: string, value: string) {\n const changes = { [name]: value };\n if (imageFields.some((n) => n === name)) {\n // values are parts of the image\n const { organization, repository, tag, digest } = this.props;\n const imageParts = { ...{ organization, repository, tag, digest }, ...changes };\n const imageId = DockerImageUtils.generateImageId(imageParts);\n changes.imageId = imageId;\n }\n this.props.onChange && this.props.onChange(changes);\n }\n\n private lookupTypeChanged = (o: Option<IDockerLookupType>) => {\n const newType = o.value;\n const oldType = this.state.lookupType;\n const oldValue = this.props[oldType];\n const cachedValue = this.cachedValues[newType];\n\n this.valueChanged(oldType, undefined);\n if (this.cachedValues[newType]) {\n this.valueChanged(newType, cachedValue);\n }\n this.setState({ lookupType: newType });\n this.cachedValues[oldType] = oldValue;\n };\n\n private showManualInput = (defineManually: boolean) => {\n if (!defineManually) {\n const newFields = DockerImageUtils.splitImageId(this.props.imageId || '');\n this.props.onChange(newFields);\n if (this.state.switchedManualWarning) {\n this.setState({ switchedManualWarning: undefined, missingFields: undefined });\n }\n }\n this.setState({ defineManually });\n };\n\n public render() {\n const {\n account,\n allowManualDefinition,\n digest,\n imageId,\n organization,\n repository,\n showDigest,\n showRegistry,\n specifyTagByRegex,\n tag,\n } = this.props;\n const {\n accountOptions,\n switchedManualWarning,\n missingFields,\n imagesLoading,\n lookupType,\n organizationOptions,\n repositoryOptions,\n defineManually,\n tagOptions,\n } = this.state;\n\n const parsedImageId = DockerImageUtils.splitImageId(imageId);\n\n const manualInputToggle = (\n <div className=\"sp-formItem groupHeader\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Define Image ID</div>\n\n <div className=\"sp-formActions sp-formActions--mobile\">\n <span className=\"action\" />\n </div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <Select\n value={defineManually}\n disabled={imagesLoading || !allowManualDefinition}\n onChange={(o: Option<boolean>) => this.showManualInput(o.value)}\n options={defineOptions}\n clearable={false}\n />\n </span>\n </div>\n </div>\n </div>\n );\n\n const warning = switchedManualWarning ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\" />\n <div className=\"sp-formItem__right\">\n <ValidationMessage\n type=\"warning\"\n message={\n <>\n {switchedManualWarning}\n {(missingFields || []).map((f) => (\n <div key={f}>\n <HelpField expand={true} id={`pipeline.config.docker.trigger.missing.${f}`} />\n </div>\n ))}\n </>\n }\n />\n </div>\n </div>\n ) : null;\n\n if (defineManually) {\n return (\n <div className=\"sp-formGroup\">\n {manualInputToggle}\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Image ID</div>\n <div className=\"sp-formActions sp-formActions--mobile\">\n <span className=\"action\" />\n </div>\n </div>\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <input\n className=\"form-control input-sm\"\n value={imageId || ''}\n onChange={(e) => this.valueChanged('imageId', e.target.value)}\n />\n </span>\n </div>\n </div>\n </div>\n {warning}\n </div>\n );\n }\n\n const Registry = showRegistry ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Registry Name</div>\n </div>\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <Select\n value={account}\n disabled={imagesLoading}\n onChange={(o: Option<string>) => this.valueChanged('account', o ? o.value : '')}\n options={accountOptions}\n isLoading={imagesLoading}\n />\n </span>\n <span className=\"sp-formActions sp-formActions--web\">\n <span className=\"action\">\n <Tooltip value={imagesLoading ? 'Images refreshing' : 'Refresh images list'}>\n <i\n className={`fa icon-button-refresh-arrows ${imagesLoading ? 'fa-spin' : ''}`}\n onClick={this.handleRefreshImages}\n />\n </Tooltip>\n </span>\n </span>\n </div>\n </div>\n </div>\n ) : null;\n\n const Organization = (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Organization</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n {organization.includes('${') ? (\n <input\n disabled={imagesLoading}\n className=\"form-control input-sm\"\n value={organization || ''}\n onChange={(e) => this.valueChanged('organization', e.target.value)}\n />\n ) : (\n <Select\n value={organization || ''}\n disabled={imagesLoading}\n onChange={(o: Option<string>) => this.valueChanged('organization', (o && o.value) || '')}\n placeholder=\"No organization\"\n options={organizationOptions}\n isLoading={imagesLoading}\n />\n )}\n </span>\n </div>\n </div>\n </div>\n );\n\n const Image = (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Image</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n {repository.includes('${') ? (\n <input\n className=\"form-control input-sm\"\n disabled={imagesLoading}\n value={repository || ''}\n onChange={(e) => this.valueChanged('repository', e.target.value)}\n />\n ) : (\n <Select\n value={repository || ''}\n disabled={imagesLoading}\n onChange={(o: Option<string>) => this.valueChanged('repository', (o && o.value) || '')}\n options={repositoryOptions}\n required={true}\n isLoading={imagesLoading}\n />\n )}\n </span>\n </div>\n </div>\n </div>\n );\n\n const Tag =\n lookupType === 'tag' ? (\n specifyTagByRegex ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Tag</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <input\n type=\"text\"\n className=\"form-control input-sm\"\n value={tag || ''}\n disabled={imagesLoading || !repository}\n onChange={(e) => this.valueChanged('tag', e.target.value)}\n />\n </span>\n </div>\n <HelpField id=\"pipeline.config.docker.trigger.tag\" expand={true} />\n </div>\n </div>\n ) : (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Tag</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n {tag && tag.includes('${') ? (\n <input\n className=\"form-control input-sm\"\n disabled={imagesLoading}\n value={tag || ''}\n onChange={(e) => this.valueChanged('tag', e.target.value)}\n required={true}\n />\n ) : (\n <>\n <Select\n value={tag || ''}\n disabled={imagesLoading || !repository}\n isLoading={imagesLoading}\n onChange={(o: Option<string>) => this.valueChanged('tag', o ? o.value : undefined)}\n options={tagOptions}\n placeholder=\"No tag\"\n required={true}\n />\n <HelpField id=\"pipeline.config.docker.trigger.tag.additionalInfo\" expand={true} />\n </>\n )}\n </span>\n </div>\n </div>\n </div>\n )\n ) : null;\n\n const Digest =\n lookupType === 'digest' ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">\n Digest <HelpField id=\"pipeline.config.docker.trigger.digest\" />\n </div>\n </div>\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <input\n className=\"form-control input-sm\"\n placeholder=\"sha256:abc123\"\n value={digest || parsedImageId.digest || ''}\n onChange={(e) => this.valueChanged('digest', e.target.value)}\n required={true}\n />\n </span>\n </div>\n </div>\n </div>\n ) : null;\n\n const LookupTypeSelector = showDigest ? (\n <div className=\"sp-formItem\">\n <div className=\"sp-formItem__left\">\n <div className=\"sp-formLabel\">Type</div>\n </div>\n\n <div className=\"sp-formItem__right\">\n <div className=\"sp-form\">\n <span className=\"field\">\n <Select\n clearable={false}\n value={lookupType}\n options={[\n { value: 'digest', label: 'Digest' },\n { value: 'tag', label: 'Tag' },\n ]}\n onChange={this.lookupTypeChanged}\n />\n </span>\n </div>\n </div>\n </div>\n ) : null;\n\n return (\n <div className=\"sp-formGroup\">\n {manualInputToggle}\n {Registry}\n {Organization}\n {Image}\n {LookupTypeSelector}\n {Digest}\n {Tag}\n </div>\n );\n }\n}\n","import type { FormikProps } from 'formik';\nimport React from 'react';\n\nimport type { IDockerTrigger } from '@spinnaker/core';\nimport type { IDockerChartAndTagChanges } from '../../image/DockerChartAndTagSelector';\nimport { DockerChartAndTagSelector } from '../../image/DockerChartAndTagSelector';\n\nexport interface IDockerTriggerConfigProps {\n formik: FormikProps<IDockerTrigger>;\n triggerUpdated: (trigger: IDockerTrigger) => void;\n}\n\nexport function DockerHelmOciTriggerConfig(props: IDockerTriggerConfigProps) {\n const { formik } = props;\n const trigger = formik.values;\n\n const dockerChanged = (changes: IDockerChartAndTagChanges) => {\n // Trigger doesn't use imageId.\n const { imageId, ...rest } = changes;\n props.triggerUpdated(rest as IDockerTrigger);\n };\n\n return (\n <div className=\"form-horizontal\">\n <DockerChartAndTagSelector\n allowManualDefinition={false}\n specifyTagByRegex={true}\n account={trigger.account}\n organization={trigger.organization}\n registry={trigger.registry}\n repository={trigger.repository}\n tag={trigger.tag}\n showRegistry={true}\n onChange={dockerChanged}\n showDigest={false}\n />\n </div>\n );\n}\n","import type { FormikProps } from 'formik';\nimport React from 'react';\n\nimport type { IDockerTrigger } from '@spinnaker/core';\n\nimport type { IDockerImageAndTagChanges } from '../../image';\nimport { DockerImageAndTagSelector } from '../../image';\n\nexport interface IDockerTriggerConfigProps {\n formik: FormikProps<IDockerTrigger>;\n triggerUpdated: (trigger: IDockerTrigger) => void;\n}\n\nexport function DockerTriggerConfig(props: IDockerTriggerConfigProps) {\n const { formik } = props;\n const trigger = formik.values;\n\n const dockerChanged = (changes: IDockerImageAndTagChanges) => {\n // Trigger doesn't use imageId.\n const { imageId, ...rest } = changes;\n props.triggerUpdated(rest as IDockerTrigger);\n };\n\n return (\n <div className=\"form-horizontal\">\n <DockerImageAndTagSelector\n allowManualDefinition={false}\n specifyTagByRegex={true}\n account={trigger.account}\n organization={trigger.organization}\n registry={trigger.registry}\n repository={trigger.repository}\n tag={trigger.tag}\n showRegistry={true}\n onChange={dockerChanged}\n showDigest={false}\n />\n </div>\n );\n}\n","import { get } from 'lodash';\nimport { $q } from 'ngimport';\nimport React from 'react';\nimport type { Option } from 'react-select';\nimport type { Subscription } from 'rxjs';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\n\nimport type { IDockerTrigger, IPipelineCommand, ITriggerTemplateComponentProps } from '@spinnaker/core';\nimport { HelpField, Spinner, TetheredSelect } from '@spinnaker/core';\n\nimport type { IDockerLookupType } from '../../image';\nimport { DockerChartImageReader } from '../../image';\nimport { DockerImageReader } from '../../image';\n\nconst lookupTypeOptions = [\n { value: 'digest', label: 'Digest' },\n { value: 'tag', label: 'Tag' },\n];\n\nexport interface IDockerTriggerTemplateState {\n digest: string;\n tags: string[];\n tagsLoading: boolean;\n loadError: boolean;\n lookupType: string;\n selectedTag: string;\n}\n\nexport class DockerTriggerTemplate extends React.Component<\n ITriggerTemplateComponentProps,\n IDockerTriggerTemplateState\n> {\n private queryStream = new Subject();\n private subscription: Subscription;\n\n public static formatLabel(trigger: IDockerTrigger): PromiseLike<string> {\n return $q.when(`(Docker Registry) ${trigger.account ? trigger.account + ':' : ''} ${trigger.repository || ''}`);\n }\n\n public constructor(props: ITriggerTemplateComponentProps) {\n super(props);\n this.state = {\n digest: '',\n tags: [],\n tagsLoading: true,\n loadError: false,\n lookupType: 'tag',\n selectedTag: '',\n };\n }\n\n private handleQuery = () => {\n const trigger = this.props.command.trigger as IDockerTrigger;\n if (trigger.type === 'helm/oci') {\n return observableFrom(\n DockerChartImageReader.findTags({\n provider: 'dockerRegistry', // Use helmOci provider for Helm OCI triggers\n account: trigger.account,\n repository: trigger.repository,\n }),\n );\n } else {\n return observableFrom(\n DockerImageReader.findTags({\n provider: 'dockerRegistry',\n account: trigger.account,\n repository: trigger.repository,\n }),\n );\n }\n };\n\n private lookupTypeChanged = (o: Option<IDockerLookupType>) => {\n const newType = o.value;\n this.updateArtifact(this.props.command, newType === 'tag' ? this.state.selectedTag : this.state.digest);\n this.setState({ lookupType: newType });\n };\n\n private updateArtifact(command: IPipelineCommand, tagOrDigest: string) {\n this.props.updateCommand('extraFields.tag', tagOrDigest);\n const trigger = command.trigger as IDockerTrigger;\n if (trigger && trigger.repository) {\n let imageName = '';\n if (trigger.registry) {\n imageName += trigger.registry + '/';\n }\n imageName += trigger.repository;\n\n let imageReference = '';\n if (this.state.lookupType === 'digest') {\n imageReference = `${imageName}@${tagOrDigest}`;\n } else {\n imageReference = `${imageName}:${tagOrDigest}`;\n }\n // Use 'helm/image' artifact type for helm/oci triggers, otherwise use 'docker/image'\n const artifactType = trigger.type === 'docker' ? 'docker/image' : 'helm/image';\n\n this.props.updateCommand('extraFields.artifacts', [\n {\n type: artifactType,\n name: imageName,\n version: tagOrDigest,\n reference: imageReference,\n },\n ]);\n }\n }\n\n private updateSelectedTag = (tag: string) => {\n this.updateArtifact(this.props.command, tag);\n this.setState({ selectedTag: tag });\n this.props.command.triggerInvalid = false;\n };\n\n private updateDigest = (digest: string) => {\n this.updateArtifact(this.props.command, digest);\n this.setState({ digest });\n };\n\n private tagLoadSuccess = (tags: string[]) => {\n const { command } = this.props;\n const trigger = command.trigger as IDockerTrigger;\n const newState = {} as IDockerTriggerTemplateState;\n newState.tags = tags || [];\n // default to what is supplied by the trigger if possible\n const defaultSelection = newState.tags.find((t) => t === trigger.tag);\n if (defaultSelection) {\n newState.selectedTag = defaultSelection;\n this.updateSelectedTag(defaultSelection);\n }\n newState.tagsLoading = false;\n this.setState(newState);\n };\n\n private tagLoadFailure = () => {\n this.setState({\n tagsLoading: false,\n loadError: true,\n });\n };\n\n private initialize = () => {\n const { command } = this.props;\n this.props.updateCommand('triggerInvalid', true);\n\n // These fields will be added to the trigger when the form is submitted\n this.props.updateCommand('extraFields', {\n tag: get(command, 'extraFields.tag', ''),\n artifacts: get(command, 'extraFields.artifacts', ''),\n });\n\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n\n // cancel search stream if trigger has changed to some other type\n if (command.trigger.type !== 'docker' && command.trigger.type !== 'helm/oci') {\n return;\n }\n\n this.subscription = this.queryStream\n .pipe(debounceTime(250), switchMap(this.handleQuery))\n .subscribe(this.tagLoadSuccess, this.tagLoadFailure);\n\n this.searchTags();\n };\n\n public componentDidMount() {\n this.initialize();\n }\n\n public componentWillUnmount() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n private searchTags = (query = '') => {\n this.setState({ tags: [`<span>Finding tags${query && ` matching ${query}`}...</span>`] });\n this.queryStream.next();\n };\n\n public render() {\n const { digest, tags, tagsLoading, loadError, selectedTag, lookupType } = this.state;\n\n const options = tags.map((tag) => {\n return { value: tag } as Option<string>;\n });\n\n return (\n <>\n <div className=\"form-group\">\n <div className=\"sm-label-right col-md-4\">Type</div>\n <div className=\"col-md-3\">\n <TetheredSelect\n clearable={false}\n value={lookupType}\n options={lookupTypeOptions}\n onChange={this.lookupTypeChanged}\n />\n </div>\n </div>\n {lookupType === 'tag' && (\n <div className=\"form-group\">\n <label className=\"col-md-4 sm-label-right\">Tag</label>\n {tagsLoading && (\n <div className=\"col-md-6\">\n <div className=\"form-control-static text-center\">\n <Spinner size=\"small\" />\n </div>\n </div>\n )}\n {loadError && <div className=\"col-md-6\">Error loading tags!</div>}\n {!tagsLoading && (\n <div className=\"col-md-6\">\n {tags.length === 0 && (\n <div>\n <p className=\"form-control-static\">No tags found</p>\n </div>\n )}\n {tags.length > 0 && (\n <TetheredSelect\n options={options}\n optionRenderer={(o) => <span>{o.value}</span>}\n clearable={false}\n value={selectedTag}\n valueRenderer={(o) => (\n <span>\n <strong>{o.value}</strong>\n </span>\n )}\n onChange={(o: Option<string>) => this.updateSelectedTag(o.value)}\n placeholder=\"Search tags...\"\n />\n )}\n </div>\n )}\n </div>\n )}\n {lookupType === 'digest' && (\n <div className=\"form-group\">\n <label className=\"col-md-4 sm-label-right\">\n Digest <HelpField id=\"pipeline.config.docker.trigger.digest\" />\n </label>\n <div className=\"col-md-6\">\n <input\n value={digest}\n onChange={(e) => this.updateDigest(e.target.value)}\n className=\"form-control input-sm\"\n required={true}\n />\n </div>\n </div>\n )}\n </>\n );\n }\n}\n","import React from 'react';\n\nimport type { IDockerTrigger, IExecutionTriggerStatusComponentProps } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\n\nimport { DockerHelmOciTriggerConfig } from './DockerHelmOciTriggerConfig';\nimport { DockerTriggerConfig } from './DockerTriggerConfig';\nimport { DockerTriggerTemplate } from './DockerTriggerTemplate';\n\nconst DockerTriggerExecutionStatus = (props: IExecutionTriggerStatusComponentProps) => {\n const trigger = props.trigger as IDockerTrigger;\n return (\n <li>\n {trigger.repository}:{trigger.tag}\n </li>\n );\n};\n\nRegistry.pipeline.registerTrigger({\n label: 'Docker Registry',\n description: 'Executes the pipeline on an image update',\n key: 'docker',\n component: DockerTriggerConfig,\n manualExecutionComponent: DockerTriggerTemplate,\n executionStatusComponent: DockerTriggerExecutionStatus,\n executionTriggerLabel: () => 'Docker Registry',\n validators: [\n {\n type: 'requiredField',\n fieldName: 'account',\n message: '<strong>Registry</strong> is a required field for Docker Registry triggers.',\n },\n {\n type: 'requiredField',\n fieldName: 'repository',\n message: '<strong>Image</strong> is a required field for Docker Registry triggers.',\n },\n {\n type: 'serviceAccountAccess',\n preventSave: true,\n message: `You do not have access to the service account configured in this pipeline's Docker Registry trigger.\n You will not be able to save your edits to this pipeline.`,\n },\n ],\n});\n\nRegistry.pipeline.registerTrigger({\n label: 'Helm Docker Registry',\n description: 'Executes the pipeline on an helm/image update',\n key: 'helm/oci',\n component: DockerHelmOciTriggerConfig,\n manualExecutionComponent: DockerTriggerTemplate,\n executionStatusComponent: DockerTriggerExecutionStatus,\n executionTriggerLabel: () => 'Helm Docker Registry',\n validators: [\n {\n type: 'requiredField',\n fieldName: 'account',\n message: '<strong>Registry</strong> is a required field for Docker Registry triggers.',\n },\n {\n type: 'requiredField',\n fieldName: 'repository',\n message: '<strong>Image</strong> is a required field for Docker Registry triggers.',\n },\n {\n type: 'serviceAccountAccess',\n preventSave: true,\n message: `You do not have access to the service account configured in this pipeline's Docker Registry trigger.\n You will not be able to save your edits to this pipeline.`,\n },\n ],\n});\n","import { module } from 'angular';\n\nimport { DOCKER_PIPELINE_STAGES_BAKE_DOCKERBAKESTAGE } from './pipeline/stages/bake/dockerBakeStage';\nimport './pipeline/trigger/DockerTrigger';\n\nexport const DOCKER_MODULE = 'spinnaker.docker';\nmodule(DOCKER_MODULE, [DOCKER_PIPELINE_STAGES_BAKE_DOCKERBAKESTAGE]);\n"],"names":["imageFields","defineOptions","observableFrom"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { FormikProps } from 'formik';
|
|
3
|
+
import type { IDockerTrigger } from '@spinnaker/core';
|
|
4
|
+
export interface IDockerTriggerConfigProps {
|
|
5
|
+
formik: FormikProps<IDockerTrigger>;
|
|
6
|
+
triggerUpdated: (trigger: IDockerTrigger) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function DockerHelmOciTriggerConfig(props: IDockerTriggerConfigProps): JSX.Element;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spinnaker/docker",
|
|
3
3
|
"license": "Apache-2.0",
|
|
4
|
-
"version": "2025.0
|
|
4
|
+
"version": "2025.1.0",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
7
7
|
"publishConfig": {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@types/react": "16.14.10",
|
|
36
36
|
"@types/react-select": "1.3.4",
|
|
37
37
|
"shx": "0.3.3",
|
|
38
|
-
"typescript": "
|
|
38
|
+
"typescript": "5.0.4"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "ed6c0f8929f68fcb6295c4d56c4bfbdec8d21ce6"
|
|
41
41
|
}
|