private createUpgrade()

in projenrc/upgrade-dependencies.ts [240:299]


  private createUpgrade(task: Task, gh: github.GitHub, branch?: string): Upgrade {
    const runsOn = this.options.workflowOptions?.runsOn ?? ['ubuntu-latest'];

    const with_ = {
      ...(branch ? { ref: branch } : {}),
      ...(gh.downloadLfs ? { lfs: true } : {}),
    };

    const steps: github.workflows.JobStep[] = [
      {
        name: 'Checkout',
        uses: 'actions/checkout@v3',
        with: Object.keys(with_).length > 0 ? with_ : undefined,
      },
      ...this._project.renderWorkflowSetup({ mutable: false }),
      ...(branch && branch !== 'main'
        ? [
            {
              env: {
                // Important: this ensures `yarn projen` runs `yarn install` and not `yarn install:ci` so it can update
                // the yarn.lock file.
                CI: 'false',
              },
              name: 'Back-port projenrc changes from main',
              run: 'git fetch origin main && git checkout FETCH_HEAD -- README.md && yarn projen',
            },
          ]
        : []),
      {
        name: 'Upgrade dependencies',
        run: this._project.runTaskCommand(task),
      },
    ];

    steps.push(...this.postBuildSteps);
    steps.push(
      ...github.WorkflowActions.uploadGitPatch({
        stepId: CREATE_PATCH_STEP_ID,
        outputName: PATCH_CREATED_OUTPUT,
      }),
    );

    return {
      job: {
        name: 'Upgrade',
        container: this.containerOptions,
        permissions: this.permissions,
        runsOn: runsOn ?? ['ubuntu-latest'],
        steps: steps,
        outputs: {
          [PATCH_CREATED_OUTPUT]: {
            stepId: CREATE_PATCH_STEP_ID,
            outputName: PATCH_CREATED_OUTPUT,
          },
        },
      },
      jobId: 'upgrade',
      ref: branch,
    };
  }