equinor / equinor/fusion-framework

Auto-enable debug mode in GitHub Actions

Open
#3,398 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
10
Forks
10
Avg merge
19h 40m
Merged PRs (30d)
150

Description

## Summary

This issue requests automatically enabling debug mode in the Fusion Framework CLI when running in GitHub Actions debug mode.

**Azure Devops**: [AB#65053](https://statoil-proview.visualstudio.com/3dadd756-da44-4bb3-8874-330932214dff/_workitems/edit/65053)

## Current State Analysis

**Current Behavior:**
- CLI requires manual `--debug` flag to enable debug logging
- No automatic detection of GitHub Actions debug mode
- Debug mode is handled per-command via `ConsoleLogger` with `debug: options.debug`

**Current Code Locations:**
- All CLI commands accept `--debug` flag individually
- `packages/cli/src/bin/utils/ConsoleLogger.ts` - Debug logging implementation
- `packages/cli/src/lib/utils/resolve-annotations.ts` - GitHub Actions environment detection

**Existing GitHub Actions Integration:**
- CLI already detects GitHub Actions environment via `process.env.GITHUB_ACTIONS`
- Has comprehensive GitHub Actions annotation resolution
- Used for release annotations but not for debug mode

## Suggested Improvements

**Proposed Solution:**
- Auto-detect GitHub Actions debug mode via `RUNNER_DEBUG` environment variable
- Automatically enable debug logging when running in GitHub Actions
- Allow manual override with explicit `--debug` flag

**Implementation Approach:**

This approach creates a dedicated debug options module that provides comprehensive debug functionality with automatic GitHub Actions detection and environment variable support. The implementation includes two main utilities: `createDebugOption()` for Commander.js option creation and `createLoggerWithDebug()` for automatic debug detection and logger creation.

**Step 1: Create dedicated debug options module**
```typescript
// packages/cli/src/cli/options/debug.ts
import { createOption } from 'commander';

export const debugOption = createOption('-d, --debug', 'Enable debug mode for verbose logging')
.env('RUNNER_DEBUG')
.default(false)
.conflicts('quiet');

export function withDebug(commandName: string, options: DebugOptions): ConsoleLogger {
command.addOption(debugOption)
}
```

**Step 2: Update CLI commands to use the new debug utilities**
```typescript
// In each command file (publish.ts, upload.ts, etc.)
import { debugOption, withDebug } from '../options/debug.js';

// Add debug option to command
createCommand('my-comment').addOption(debugOption)

// alternative create with debug
withDebug(createCommand('my-comment'));
```

**Benefits:**
- Automatic debug logging in CI/CD environments
- Better troubleshooting capabilities for GitHub Actions workflows
- Maintains existing manual debug flag functionality
- Environment variable support for CI/CD configuration

## Implementation Details

### Files to Modify
1. **GitHub Actions Debug Detection:**
- `packages/cli/src/bin/utils/ConsoleLogger.ts` (or create utility function)
- All CLI commands that use ConsoleLogger
- Create new `packages/cli/src/cli/options/debug.ts`

### Testing Considerations
- Test GitHub Actions debug mode detection
- Ensure backward compatibility with existing debug flag
- Test error handling and user experience

## Acceptance Criteria
- [ ] Debug mode automatically enabled in GitHub Actions environment
- [ ] Manual `--debug` flag still works and takes precedence
- [ ] All existing functionality remains unchanged
- [ ] Comprehensive test coverage for new features

## Priority
**Medium** - This is a quality-of-life improvement that will significantly improve debugging capabilities, especially in CI/CD environments.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.