Skip to content

Conversation

@sanjuyadav24
Copy link
Contributor

Context

This PR adds complete Node.js 24 support to the Azure Pipelines Tasks build system, enabling task authors to build and deploy tasks that run on Node.js 24.

AB#2328151


Description

This PR implements comprehensive Node.js 24 support across the Azure Pipelines Tasks build system through the following changes:

1. BuildConfigGen Program Updates (BuildConfigGen/Program.cs)

  • Added two new build configurations:
    • Node24: New standalone config for Node 24 tasks (does not merge to base)
    • Node24_overwrite: Config for migrating existing tasks to Node 24 (merges to base)
  • Configuration details:
    • Node package version: ^24.10.0
    • Node handler: Node24
    • Preprocessor variable: NODE24
    • TypeScript version: ^5.7.2
    • Config mapping keys: Node24-265 and Node24-265-overwrite

Risk Assessment: Low

Added two additional build configs but these are not used by any tasks


Change Behind Feature Flag: No


Tech Design / Approach

NA


Documentation Changes Required: No


Unit Tests Added or Updated: No


Additional Testing Performed

Manual via building task locally and uploading in private org


Logging Added/Updated: No


Telemetry Added/Updated: No


Rollback Scenario and Process: NA


Dependency Impact Assessed and Regression Tested: Yes


@sanjuyadav24
Copy link
Contributor Author

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

.concat(fs.existsSync(genTaskPathLocal) ? fs.readdirSync(genTaskPathLocal).map(taskName => path.join(genTaskPathLocal, taskName)) : []);

const invalidPaths = paths.filter(taskPath => test('-d', taskPath) && !test('-f', path.join(taskPath, 'task.json')) && !taskPath.includes('_buildConfigs'));
const invalidPaths = paths.filter(taskPath => test('-d', taskPath) && !test('-f', path.join(taskPath, 'task.json')) && !taskPath.includes('_buildConfigs') && !taskPath.endsWith('Common'));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please tell the purpose of excluding this !taskPath.endsWith('Common') here.

}

private static void WriteNodePackageJson(string taskOutputNode, string nodeVersion, bool shouldUpdateTypescript, bool shouldUpdateTaskLib)
private static void WriteNodePackageJson(string taskOutputNode, string nodeVersion, bool shouldUpdateTypescript, string? typescriptVersion, bool shouldUpdateTaskLib)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be a good practice if we keep optional parameter at the end of function definition.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants