From 9491ae7b08a295b5eb96c8bfce0d36d2030bdc89 Mon Sep 17 00:00:00 2001 From: darthsharp <48331467+darthsharp@users.noreply.github.com> Date: Sun, 1 Jun 2025 19:55:48 +0200 Subject: [PATCH 1/4] Add logging for executed Nx commands Log the Nx command being executed to improve traceability and debugging. This helps in understanding the execution flow and identifying potential issues more easily. --- builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts b/builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts index 5bfafd3..15d835c 100644 --- a/builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts +++ b/builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts @@ -18,6 +18,7 @@ export class NxTasks extends BuildTasks { } async executeNxCommand(command: string) { + this.logger.log(`Executing Nx command: ${command}`); return await this.cmdExecutor.executeStream(`npx nx ${command}`); } From 633d95da597edfa6c9b67ce990b99533ac115c66 Mon Sep 17 00:00:00 2001 From: darthsharp <48331467+darthsharp@users.noreply.github.com> Date: Mon, 2 Jun 2025 18:12:14 +0200 Subject: [PATCH 2/4] Refactor CI build tasks and update Playwright config Set `reuseExistingServer` to `false` in Playwright config for consistency. Replaced `runTargetForAffected` with `runTargetsForAll` in CI tasks to target all projects instead of only affected ones. Added support for `runTargetsForAll` in `nx-tasks` and enabled `--dryRun` for release publishing commands. --- apps/angular-tofu-showcase-e2e/playwright.config.ts | 2 +- builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts | 7 ++++++- builds/ci-build/src/the-build.ts | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/angular-tofu-showcase-e2e/playwright.config.ts b/apps/angular-tofu-showcase-e2e/playwright.config.ts index 071f5cd..9767af2 100644 --- a/apps/angular-tofu-showcase-e2e/playwright.config.ts +++ b/apps/angular-tofu-showcase-e2e/playwright.config.ts @@ -26,7 +26,7 @@ export default defineConfig({ webServer: { command: 'npx nx run angular-tofu-showcase:serve', url: 'http://localhost:4200', - reuseExistingServer: !process.env.CI, + reuseExistingServer: false, //!process.env.CI, cwd: workspaceRoot, }, projects: [ diff --git a/builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts b/builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts index 15d835c..b83ba35 100644 --- a/builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts +++ b/builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts @@ -27,6 +27,11 @@ export class NxTasks extends BuildTasks { return this.executeNxCommand(`affected -t ${targets.join(' ')} ${baseArg}`); } + async runTargetsForAll(targets: string[]) { + const baseArg = this.base ? `--base=${this.base}` : ''; + return this.executeNxCommand(`run-many -t ${targets.join(' ')} ${baseArg}`); + } + async setReleaseVersion(version: string) { return this.executeNxCommand( `release version ${version} --stage-changes=false --git-commit=false` @@ -34,11 +39,11 @@ export class NxTasks extends BuildTasks { } async releaseAndPublish(projectName: string, access: string) { - //run angular-tofu:nx-release-publish --access public const args = [ 'run', `${projectName}:nx-release-publish`, `--access ${access}`, + '--dryRun', //'--registry=https://registry.npmjs.org/', ]; return this.executeNxCommand(args.join(' ')); diff --git a/builds/ci-build/src/the-build.ts b/builds/ci-build/src/the-build.ts index 4b48688..591b23a 100644 --- a/builds/ci-build/src/the-build.ts +++ b/builds/ci-build/src/the-build.ts @@ -78,7 +78,7 @@ export class TheBuild extends BuildDefinition { name: 'nxTargets', execute: async (buildContext) => { this.logger.log('GitVersion:', await this.gitVersion.value.getVersion()); - await this.nxTasks.runTargetForAffected(['lint', 'test', 'build', 'e2e']); + await this.nxTasks.runTargetsForAll(['lint', 'test', 'build', 'e2e']); }, dependsOn: [this.setReleaseVersion], }; From 27b6f2174dd2af6075463cf0126797a97fff9c80 Mon Sep 17 00:00:00 2001 From: darthsharp <48331467+darthsharp@users.noreply.github.com> Date: Mon, 2 Jun 2025 18:43:08 +0200 Subject: [PATCH 3/4] Add support for dry-run mode in nx-tasks Included a check for the `dryRun` context to append the `--dry-run` flag when applicable. This ensures safer task execution during development or testing without making actual changes. --- builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts b/builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts index b83ba35..b10b70f 100644 --- a/builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts +++ b/builds/ci-build/src/build-it-lib/tasks/nx-tasks.ts @@ -46,6 +46,11 @@ export class NxTasks extends BuildTasks { '--dryRun', //'--registry=https://registry.npmjs.org/', ]; + + if (this.context.dryRun) { + args.push('--dry-run'); + } + return this.executeNxCommand(args.join(' ')); } } From 148beeb80df1706b99c97cd3e204d5cdc9396e9f Mon Sep 17 00:00:00 2001 From: darthsharp <48331467+darthsharp@users.noreply.github.com> Date: Mon, 2 Jun 2025 18:52:18 +0200 Subject: [PATCH 4/4] Add CI environment detection and logging in build context Introduced a method to determine if the build is running in a CI environment by checking the GITHUB_ACTIONS environment variable. Added logging in the build executor to output whether the build is running on a CI build server. This improves transparency and environment awareness during builds. --- builds/ci-build/src/build-it-lib/runtime/build-context.ts | 6 ++++++ builds/ci-build/src/build-it-lib/runtime/build-executor.ts | 2 ++ 2 files changed, 8 insertions(+) diff --git a/builds/ci-build/src/build-it-lib/runtime/build-context.ts b/builds/ci-build/src/build-it-lib/runtime/build-context.ts index beb4bf2..965eab6 100644 --- a/builds/ci-build/src/build-it-lib/runtime/build-context.ts +++ b/builds/ci-build/src/build-it-lib/runtime/build-context.ts @@ -10,7 +10,13 @@ export class BuildContext { logLevel = LogLevel.Info; + isCI = this.determineCIEnvironment(); + getTasks(ctor: constructor) { container.resolve(ctor); } + + private determineCIEnvironment() { + return process.env.GITHUB_ACTIONS === 'true'; + } } diff --git a/builds/ci-build/src/build-it-lib/runtime/build-executor.ts b/builds/ci-build/src/build-it-lib/runtime/build-executor.ts index 42edb7d..1107e17 100644 --- a/builds/ci-build/src/build-it-lib/runtime/build-executor.ts +++ b/builds/ci-build/src/build-it-lib/runtime/build-executor.ts @@ -47,6 +47,8 @@ export class BuildExecutor { } private async runBuild(buildDefinition: BuildDefinition, targets: string[]) { + this.logger.log('Is running on CI build server:', this.buildContext.isCI); + const buildTargets = this.findBuildTargets(buildDefinition, targets); this.buildContext.targets = buildTargets.map((t) => t.name);