@spinnaker/cloudrun 0.0.0-2026.2-0 → 0.0.0-2026.2-2

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.
@@ -7,6 +7,11 @@ export interface IStageManifest {
7
7
  name: string;
8
8
  };
9
9
  }
10
+ export interface IStoredManifestReference {
11
+ type: string;
12
+ reference: string;
13
+ }
14
+ export declare function isStoredManifestReference(manifest: unknown): manifest is IStoredManifestReference;
10
15
  export interface IManifestParams {
11
16
  account: string;
12
17
  location: string;
@@ -17,6 +17,7 @@ export declare class DeployStatus extends React.Component<IExecutionDetailsSecti
17
17
  componentDidUpdate(_prevProps: IExecutionDetailsSectionProps, prevState: IDeployStatusState): void;
18
18
  private subscribeToManifestUpdates;
19
19
  private unsubscribeAll;
20
+ private get storedManifestRefs();
20
21
  private stageManifestToIManifest;
21
22
  render(): JSX.Element;
22
23
  }
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "url": "https://github.com/spinnaker/spinnaker.git"
6
6
  },
7
7
  "license": "Apache-2.0",
8
- "version": "0.0.0-2026.2-0",
8
+ "version": "0.0.0-2026.2-2",
9
9
  "module": "dist/index.js",
10
10
  "typings": "dist/index.d.ts",
11
11
  "publishConfig": {
@@ -57,5 +57,5 @@
57
57
  "shx": "0.3.3",
58
58
  "typescript": "4.3.5"
59
59
  },
60
- "gitHead": "e206b48fedf14bbfbaeae79c88bc0304966206aa"
60
+ "gitHead": "a4affe721ec80ca8978291e2accce065ea0d227a"
61
61
  }
@@ -10,6 +10,23 @@ export interface IStageManifest {
10
10
  };
11
11
  }
12
12
 
13
+ // A manifest that the artifact-store entity storage feature has replaced with a
14
+ // reference, rather than expanding it back into a real manifest before deck ever
15
+ // sees it (e.g. gate isn't configured to expand these on read).
16
+ export interface IStoredManifestReference {
17
+ type: string;
18
+ reference: string;
19
+ }
20
+
21
+ export function isStoredManifestReference(manifest: unknown): manifest is IStoredManifestReference {
22
+ return (
23
+ !!manifest &&
24
+ typeof manifest === 'object' &&
25
+ (manifest as IStoredManifestReference).type === 'remote/map/base64' &&
26
+ typeof (manifest as IStoredManifestReference).reference === 'string'
27
+ );
28
+ }
29
+
13
30
  export interface IManifestParams {
14
31
  account: string;
15
32
  location: string;
@@ -2,11 +2,11 @@ import { get } from 'lodash';
2
2
  import React from 'react';
3
3
 
4
4
  import type { IExecutionDetailsSectionProps, IManifest } from '@spinnaker/core';
5
- import { ExecutionDetailsSection, StageFailureMessage } from '@spinnaker/core';
5
+ import { ExecutionDetailsSection, ManifestYaml, StageFailureMessage } from '@spinnaker/core';
6
6
 
7
7
  import { ManifestStatus } from './ManifestStatus';
8
- import type { IStageManifest } from '../../../../manifest/manifest.service';
9
- import { CloudrunManifestService } from '../../../../manifest/manifest.service';
8
+ import type { IStageManifest, IStoredManifestReference } from '../../../../manifest/manifest.service';
9
+ import { CloudrunManifestService, isStoredManifestReference } from '../../../../manifest/manifest.service';
10
10
 
11
11
  export interface IManifestSubscription {
12
12
  id: string;
@@ -36,7 +36,9 @@ export class DeployStatus extends React.Component<IExecutionDetailsSectionProps,
36
36
  }
37
37
 
38
38
  public componentDidUpdate(_prevProps: IExecutionDetailsSectionProps, prevState: IDeployStatusState) {
39
- const manifests: IStageManifest[] = get(this.props.stage, ['context', 'outputs.manifests'], []).filter((m) => !!m);
39
+ const manifests: IStageManifest[] = get(this.props.stage, ['context', 'outputs.manifests'], [])
40
+ .filter((m) => !!m)
41
+ .filter((m) => !isStoredManifestReference(m));
40
42
  const manifestIds = manifests.map((m) => CloudrunManifestService.manifestIdentifier(m)).sort();
41
43
  if (prevState.manifestIds.join('') !== manifestIds.join('')) {
42
44
  this.unsubscribeAll();
@@ -69,6 +71,16 @@ export class DeployStatus extends React.Component<IExecutionDetailsSectionProps,
69
71
  this.state.subscriptions.forEach(({ unsubscribe }) => unsubscribe());
70
72
  }
71
73
 
74
+ // Manifests the artifact-store entity storage feature replaced with a reference instead
75
+ // of expanding them before deck saw them. We can't determine their kind/name/namespace
76
+ // (and so can't subscribe to live status for them) without fetching the content, so we
77
+ // let the user load them on demand instead, same as a baked manifest's YAML.
78
+ private get storedManifestRefs(): IStoredManifestReference[] {
79
+ return get(this.props.stage, ['context', 'outputs.manifests'], [])
80
+ .filter((m: unknown) => !!m)
81
+ .filter(isStoredManifestReference);
82
+ }
83
+
72
84
  private stageManifestToIManifest(manifest: IStageManifest, account: string): IManifest {
73
85
  return {
74
86
  name: get(manifest, 'metadata.name', ''),
@@ -102,6 +114,23 @@ export class DeployStatus extends React.Component<IExecutionDetailsSectionProps,
102
114
  </div>
103
115
  </div>
104
116
  )}
117
+ {!!this.storedManifestRefs.length && (
118
+ <div className="row">
119
+ <div className="col-md-12">
120
+ <div className="well alert alert-info">
121
+ {this.storedManifestRefs.map((ref, i) => (
122
+ <div key={i}>
123
+ <ManifestYaml
124
+ linkName="Load Manifest Details"
125
+ modalTitle="Manifest"
126
+ manifestUri={ref.reference.replace(/^ref?:\/\//, '')}
127
+ />
128
+ </div>
129
+ ))}
130
+ </div>
131
+ </div>
132
+ </div>
133
+ )}
105
134
  </ExecutionDetailsSection>
106
135
  );
107
136
  }