private jobForAssetPublish()

in src/pipeline.ts [244:283]


  private jobForAssetPublish(node: AGraphNode, assets: StackAsset[], options: Context): Job {
    const installSuffix = this.cdkCliVersion ? `@${this.cdkCliVersion}` : '';
    const cdkoutDir = options.assemblyDir;

    // create one file and make one step
    const relativeToAssembly = (p: string) => path.posix.join(cdkoutDir, path.relative(path.resolve(cdkoutDir), p));
    const fileContents: string[] = ['set -x'].concat(assets.map((asset) => {
      return `npx cdk-assets --path "${relativeToAssembly(asset.assetManifestPath)}" --verbose publish "${asset.assetSelector}"`;
    }));

    const publishStepFile = path.join(cdkoutDir, `publish-${node.uniqueId}-step.sh`);
    mkdirSync(path.dirname(publishStepFile), { recursive: true });
    writeFileSync(publishStepFile, fileContents.join('\n'), { encoding: 'utf-8' });

    const publishStep: github.JobStep = {
      name: `Publish ${node.uniqueId}`,
      run: `/bin/bash ./cdk.out/${path.relative(cdkoutDir, publishStepFile)}`,
    };

    return {
      id: node.uniqueId,
      definition: {
        name: `Publish Assets ${node.uniqueId}`,
        needs: this.renderDependencies(node),
        permissions: {
          contents: github.JobPermission.READ,
        },
        runsOn: RUNS_ON,
        steps: [
          ...this.stepsToDownloadAssembly(cdkoutDir),
          {
            name: 'Install',
            run: `npm install --no-save cdk-assets${installSuffix}`,
          },
          ...this.stepsToConfigureAws({ region: 'us-west-2' }),
          publishStep,
        ],
      },
    };
  }