equinor / equinor/fusion-framework
Auto-enable debug mode in GitHub Actions
- 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
Assessment
This issue has not been assessed yet.