test: add coverage for vendor URI helpers and config error handling @osterman (#1581)
## what - Add test cases for `needsDoubleSlashDot` to cover special URI types (file://, GitHub archives, GitLab archives) - Add test cases for `processConfigImportsAndReapply` to cover malformed YAML error handling - Improves coverage for `vendor_uri_helpers.go` lines 243-245 (special URI type detection) - Improves coverage for `load.go` error paths in config processingwhy
- Identified coverage gaps during code review of #1504
- These edge cases ensure proper handling of URIs that pass
isGitURI()
but are actually archives or special types - Malformed YAML tests ensure error paths are properly covered for config validation
references
- Builds on #1504 (fix: normalize legacy triple-slash vendor URIs for go-getter compatibility)
- Addresses coverage improvement opportunities identified during PR review
fix: normalize legacy triple-slash vendor URIs for go-getter compatibility @osterman (#1504)
## Summary - Fixes vendor pull failures when using triple-slash (`///`) patterns in vendor.yaml URIs - Normalizes legacy URI patterns to be compatible with go-getter v1.7.9+ - Maintains backward compatibility with existing vendor configurationsBackground & Root Cause
This issue was introduced in Atmos v1.189.0 when go-getter was updated from v1.7.8 to v1.7.9 to address security vulnerability CVE-2025-8959. The security fix in go-getter v1.7.9 changed how subdirectory paths are handled in Git URLs, breaking the triple-slash pattern that was previously documented in Atmos examples.
Timeline:
- Atmos v1.180.0 - Last known working version with triple-slash patterns
- Atmos v1.189.0 - go-getter updated to v1.7.9 (commit 4c89983), breaking triple-slash patterns
- Atmos v1.190.0 - Issue reported by users upgrading from v1.180.0
The Problem:
Users following Atmos documentation were using vendor configurations like:
sources:
- component: s3-bucket
source: "github.com/terraform-aws-modules/terraform-aws-s3-bucket.git///?ref={{.Version}}"
included_paths:
- "**/*.tf"
- "**/modules/**"
The triple-slash pattern (///
) was interpreted by go-getter v1.7.9+ as attempting to access a subdirectory path starting with /
, which resulted in:
- Zero files being downloaded
- Empty directories being created
- No error messages (silent failure)
Solution
This PR adds a normalizeVendorURI()
function that detects and converts legacy triple-slash patterns:
repo.git///?ref=v1.0
→repo.git?ref=v1.0
(empty subdirectory)repo.git///path?ref=v1.0
→repo.git//path?ref=v1.0
(with subdirectory)
The normalization is applied transparently to all vendor URIs, ensuring backward compatibility while maintaining the security improvements from go-getter v1.7.9.
Test plan
- Added comprehensive test cases in
internal/exec/vendor_issue_dev3639_test.go
- Test cases verify vendor pull works with glob patterns and triple-slash URIs
- Tests pass with the normalization fix applied
- Verified backward compatibility with existing vendor configurations
Referenences
🤖 Generated with Claude Code
Summary by CodeRabbit
-
New Features
- Vendor pull now normalizes vendor URLs (triple-slash, root vs subpath, Git URL handling).
- CLI now honors base-path, config, and config-path flags earlier for more reliable config resolution.
-
Bug Fixes
- Import logging now sanitizes credentials and query parameters.
- Environment variable handling consistently stringifies values.
- Debug output shows more consistent/normalized URL forms.
-
Documentation
- New Vendor URL Syntax docs, cross-references, and default --logs-level updated to Warning.
-
Tests
- Extensive new unit, integration, and snapshot tests covering vendor pull, URI normalization, sanitization, and path handling.
Add Performance Profiling Heatmap Visualization to Atmos CLI @aknysh (#1576)
## what - Add performance tracking heatmap visualization to Atmos CLI with interactive TUI - Enable developers to identify performance bottlenecks using built-in instrumentation - Provide multiple visualization modes (bar chart, sparklines, table) with navigation support - Add comprehensive performance tracking across 150+ critical functions - Consolidate profiling documentation into unified guide covering both heatmap and pprof approacheswhy
- Makes performance analysis accessible to all developers without specialized profiling tools
- Enables quick identification of slow operations during stack processing
- Provides actionable insights for optimization efforts with P95 latency metrics
- Reduces friction in performance debugging workflow
- Offers flexible profiling approaches for different use cases (quick analysis vs deep profiling)
Performance Heatmap Feature
Atmos now includes built-in performance tracking that shows you exactly which operations are taking the longest time. This feature provides real-time visibility into function execution times with interactive visualization modes.
Quick Start
Run any Atmos command with the --heatmap
flag:
atmos describe stacks --heatmap
Real Performance Analysis Example
Here's actual output from atmos describe stacks --heatmap
:
Bar Chart View (Press 1
in interactive mode):

Performance Output
=== Atmos Performance Summary ===
Elapsed: 69.042791ms Functions: 42 Calls: 5980
Function Count Total Avg Max P95
exec.ProcessYAMLConfigFileWithContext 52 18.305ms 352µs 3.61ms 3.495ms
exec.ValidateStacks 1 9.893ms 9.893ms 9.893ms 9.895ms
utils.processCustomTags 1024 7.919ms 7µs 808µs 13µs
exec.FindStacksMap 2 7.038ms 3.519ms 6.463ms 6.463ms
exec.ProcessYAMLConfigFiles 2 6.857ms 3.428ms 6.286ms 6.287ms
exec.Execute 1 6.43ms 6.43ms 6.43ms 6.431ms
merge.MergeWithOptions 746 4.649ms 6µs 423µs 19µs
utils.GetHighlightedYAML 1 4.171ms 4.171ms 4.171ms 4.171ms
utils.HighlightCodeWithConfig 1 3.787ms 3.787ms 3.787ms 3.787ms
merge.MergeWithContext 356 3.614ms 10µs 423µs 51µs
merge.MergeWithOptionsAndContext 356 3.521ms 9µs 423µs 50µs
exec.ProcessImportSection 52 3.346ms 64µs 872µs 784µs
utils.ConvertToYAML 177 3.287ms 18µs 660µs 71µs
exec.ProcessStackConfig 12 1.69ms 140µs 265µs 192µs
merge.Merge 390 1.478ms 3µs 67µs 19µs
utils.GetGlobMatches 48 1.141ms 23µs 210µs 168µs
utils.JoinPaths 5 1.13ms 226µs 1.128ms 1.128ms
exec.getEmbeddedSchemaPath 1 784µs 784µs 784µs 784µs
config.FindAllStackConfigsInPaths 1 783µs 783µs 783µs 783µs
exec.ProcessYAMLConfigFile 8 750µs 93µs 201µs 201µs
exec.ExecuteDescribeStacks 1 682µs 682µs 682µs 682µs
exec.GetFileContent 52 446µs 8µs 161µs 25µs
utils.SliceContainsString 2456 127µs 0 5µs -
utils.PathMatch 32 57µs 1µs 6µs 1µs
utils.ResolveRelativePath 32 43µs 1µs 36µs -
exec.ProcessCommandLineArgs 1 14µs 14µs 14µs 14µs
utils.EnsureDir 1 12µs 12µs 12µs 12µs
exec.BuildTerraformWorkspace 10 10µs 1µs 9µs 9µs
exec.processSettingsIntegrationsGithub 30 10µs 0 1µs -
exec.createComponentStackMap 2 7µs 3µs 7µs 7µs
utils.IsTemplateFile 52 5µs 0 1µs -
exec.FindComponentsDerivedFromBaseComponents 10 3µs 0 0 -
utils.UniqueStrings 38 3µs 0 0 -
utils.getLexer 1 3µs 3µs 3µs 3µs
utils.GetHighlightSettings 2 2µs 1µs 2µs 2µs
utils.IsDirectory 1 2µs 2µs 2µs 2µs
utils.JoinPath 11 2µs 0 0 -
config.processEnvVars 2 1µs 0 0 -
Visualization Modes
The interactive TUI supports three visualization modes:
- Press
1
: Bar Chart - Color gradient from red (slow) to green (fast) showing relative execution times - Press
2
: Sparklines - Visual trend lines for each function - Press
3
: Table View - Detailed metrics with Count/Total/Avg/Max/P95 (top 50 functions by total time)
Navigation & Controls
↑
/↓
ork
/j
: Navigate through rows (wraparound enabled)1-3
: Switch visualization modesq
/esc
: Exit and return to terminal
CLI Flags
All flag descriptions now match atmos --help
output exactly:
--heatmap
: Show performance heatmap visualization after command execution (includes P95 latency) (default: false)--heatmap-mode
: Heatmap visualization mode: bar, sparkline, table (press 1-3 to switch in TUI) (default: bar)
Comparison with Traditional Profiling
Feature | Performance Heatmap | pprof CPU Profiling |
---|---|---|
Setup | Single flag | Generate profile, run pprof |
Visualization | Interactive TUI | Terminal (file mode) or web browser (server mode) |
Analysis | Post-execution | Real-time (server mode) or post-execution (file mode) |
Filtering | Built-in top N | Manual filtering |
Distribution | P95 latency included | Requires processing |
Use Case | Quick analysis | Deep profiling |
Implementation Details
- Added
defer perf.Track()
instrumentation to 150+ functions across critical paths - Implemented HDR histogram for accurate P95 latency calculations
- Created Bubble Tea TUI with multiple visualization modes and vim-style navigation
- Added snapshot filtering to prevent zero-time function display
- Implemented visual display limits (top 25 for bar/sparkline, top 50 for table view)
- Added package prefix naming convention for clear function identification
- Consolidated profiling documentation into unified
/docs/troubleshoot/profiling.mdx
- Synced all CLI flag descriptions with help text for consistency
Testing
✅ All tests passing with coverage >80%
✅ Comprehensive test suite for heatmap TUI (17 test functions)
✅ GitHub utils tests (11 test functions)
✅ Enhanced pro.go tests (11 additional test functions)
✅ Linter checks passing (0 issues)
✅ Website builds successfully with no broken links
✅ Performance tracking verified with real Atmos workflows
Documentation
- Comprehensive profiling guide:
/docs/troubleshoot/profiling.mdx
- Performance Heatmap section (quick analysis, interactive TUI)
- pprof Profiling section (deep analysis, server/file modes)
- Choosing the Right Tool comparison
- Best practices and troubleshooting
- Developer guidelines: Updated
CLAUDE.md
with mandatory performance tracking patterns - Real performance examples with screenshots and actual command output
- Accurate feature descriptions: Removed misleading claims (sorting, unlimited rows)
- Complete navigation documentation: All keyboard shortcuts documented
Key Documentation Updates
- ✅ Consolidated separate
performance-heatmap.mdx
into unifiedprofiling.mdx
- ✅ Synced all CLI flag descriptions to exactly match
atmos --help
output - ✅ Clarified Table Mode shows top 50 rows (not unlimited)
- ✅ Removed claim about sortable columns (not implemented)
- ✅ Added complete keyboard navigation documentation (↑/↓, k/j)
- ✅ Fixed broken link from
/troubleshoot/logging
to/troubleshoot/debugging
Summary by CodeRabbit
-
New Features
- Added a post-run performance heatmap (bar/sparkline/table) with P95 metrics and interactive TUI when a TTY is available; selectable via new global flags --heatmap and --heatmap-mode.
-
Telemetry
- Global performance tracking enabled across commands to collect timing/latency metrics for heatmap and diagnostics.
-
Documentation
- Consolidated profiling documentation into comprehensive guide covering both heatmap (quick analysis) and pprof (deep profiling) approaches
- Synced all CLI flag descriptions with help text
- Added complete keyboard navigation documentation
- Fixed broken links and removed misleading claims
-
Chores
- Dependency updates (including HDR histogram library and various SDK bumps).
-
Tests
- Extensive tests for heatmap rendering, CLI flags, and performance-tracking behaviors
- Added comprehensive test coverage for terraform_generate_backends, github_utils, and pro features
- All tests passing with >80% coverage
feat: Improve template processing to handle .yaml.tmpl and .yml.tmpl files @osterman (#1544)
## what - Enhance template processing in stack processor to properly handle files with .yaml.tmpl and .yml.tmpl extensions - Add comprehensive file extension detection for template files in component processing - Improve context handling for YAML template rendering with proper error handling - Add support for both .yaml.tmpl and .yml.tmpl file patterns in template execution - Ensure template processing works consistently across all YAML template file types - Add comprehensive test suite for template processing functionalitywhy
- Template files with .yaml.tmpl and .yml.tmpl extensions were not being processed correctly
- Component configurations using these template extensions were failing to render properly
- Users need consistent template processing regardless of YAML file extension preference (.yaml vs .yml)
- Template context was not being handled properly for all YAML template file variations
- Improves developer experience by supporting common YAML template file naming conventions
references
- Enhances template processing capabilities for YAML template files
- Supports both .yaml.tmpl and .yml.tmpl file extension patterns
- Improves consistency in template rendering across different file naming conventions
Summary by CodeRabbit
-
New Features
- Imported files with .yaml.tmpl / .yml.tmpl are automatically detected and processed as templates.
- Utility added to detect template-file extensions.
-
Tests
- Extensive unit and benchmark tests for template rendering, error cases, Sprig functions, import handling, skip behavior, and performance.
- End-to-end tests confirm template detection and processing during stack operations.
-
Chores
- Test invocation adjusted to reduce verbose output.
- Snapshot updated to include a Git-repo warning message.
fix: eliminate all npm vulnerabilities and implement glossary tooltips plugin @osterman (#1559)
## what - **Eliminated ALL 17 security vulnerabilities** (100% resolution) - Reduced npm dependencies from 1573 to 1480 packages (93 fewer dependencies) - Replaced @grnet/docusaurus-terminology with custom glossary tooltips implementation - Created glossary tooltips plugin with React component and CSS stylingwhy
- GitHub Dependabot reported 17 open vulnerabilities in website dependencies
- Initial fix with `npm audit fix` reduced vulnerabilities from 17 to 3
- Remaining 3 high-severity vulnerabilities were in @grnet/docusaurus-terminology (rollup < 2.79.2 XSS)
- No fix available from package maintainer - required custom implementation
- All vulnerabilities were in documentation site only, not affecting core Atmos CLI
Phase 1: npm audit fix (14 vulnerabilities resolved)
Fixed through automatic dependency updates:
- image-size: Updated to 1.2.1+ (high severity)
- @babel/helpers, @babel/runtime, @babel/runtime-corejs3: Updated to 7.26.10+ (3 moderate)
- prismjs: Updated to 1.30.0+ (moderate)
- dompurify: Updated to 3.2.4+ (moderate)
- katex: Updated to 0.16.21+ (moderate)
- estree-util-value-to-estree: Updated to 3.3.3+ (moderate)
- on-headers: Updated to 1.1.0+ (low)
- brace-expansion: Updated to 1.1.12+ (low)
- webpack-dev-server, http-proxy-middleware: Transitive updates (4 moderate)
Phase 2: Glossary tooltips implementation (3 vulnerabilities resolved)
Replaced vulnerable package
Removed @grnet/docusaurus-terminology and all dependencies:
- @grnet/docusaurus-terminology
- @grnet/docusaurus-term-preview
- @grnet/webpack-terms-loader
- @grnet/webpack-glossary-loader
- @grnet/webpack-terms-replace-loader
- @grnet/terminology-store
Custom implementation components
1. Glossary Tooltips Plugin (`website/plugins/glossary-tooltips/`)
- Scans `docs/glossary/` for term files during build
- Extracts frontmatter (id, title, hoverText) from each term markdown file
- Generates `glossary.json` with term metadata
- Custom webpack loader transforms term links into React components
2. Term Component (`website/src/components/Term.tsx`)
- Displays term as link with hover tooltip
- Fetches definitions from glossary.json
- Uses Docusaurus Link for navigation
- No external dependencies
3. CSS Tooltips (`website/src/components/Term.css`)
- Pure CSS tooltips (no JavaScript libraries)
- Responsive design with mobile support
- Dark mode compatible
- Smooth fade-in animation
Backward compatibility
✅ All 26 glossary term files unchanged
✅ All 29 term link references work unchanged
✅ Existing Glossary.tsx component works with new JSON format
✅ No changes needed to documentation content
Final Results
Metric | Before | After | Improvement |
---|---|---|---|
Vulnerabilities | 17 (2 high, 13 moderate, 2 low) | 0 | 100% resolved |
npm Packages | 1,573 | 1,480 | -93 packages |
Build Status | ✅ Passing | ✅ Passing | Maintained |
Glossary Terms | 26 terms | 25 terms indexed | ✅ Working |
Term Links | 29 references | 29 references | ✅ Working |
Testing
- ✅ npm audit shows 0 vulnerabilities
- ✅ Website builds successfully without errors
- ✅ Glossary.json generated with 25 terms (26 files, 1 index)
- ✅ All term links transform correctly
- ✅ No content changes required
Security Impact
- Risk Level: LOW (documentation website only, not core CLI)
- Blast Radius: Documentation site glossary feature
- Fix Status: ✅ Complete - zero vulnerabilities remaining
references
- Resolves all Dependabot security alerts
- Dependabot alerts: https://github.com/cloudposse/atmos/security/dependabot
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
Summary by CodeRabbit
-
New Features
- Glossary terms show hover/focus tooltips across docs with responsive, theme-aware styling.
- Term links reliably navigate to glossary entries and display inline hover summaries.
-
Chores
- Replaced external glossary dependency with an in-repo glossary tooling pipeline that emits a static glossary file.
- Added frontmatter parsing dependency and ignored generated glossary output.
- Added CI validation for codecov configuration and adjusted coverage path settings.
fix: prevent go-getter from processing local file paths @osterman (#1522)
## what - Fixed regression where local file paths in `!include` directives were being incorrectly sent to go-getter - Added proper validation to distinguish between local paths and remote URLs - Improved error messages when local files cannot be foundwhy
- The regression was introduced in PR #1493 which refactored the include processing logic
- When local files couldn't be found, the code was falling back to go-getter which failed with "relative paths require a module with a pwd"
- This particularly affected
describe affected
when run with--repo-path
flag
references
Summary by CodeRabbit
-
Bug Fixes
- Local YAML !include now reliably resolves local files before attempting remote fetch; clearer error messages when includes are missing and fewer false remote detections.
- Adjusted error message wording for certain merge/list error paths.
-
New Features
- Improved cross-platform sandbox copying with layered fallbacks for more reliable file/directory replication and artifact exclusion.
- Tests and harness now support named and isolated sandboxes for more flexible test setups.
-
Tests
- Added comprehensive tests covering include resolution, remote-detection heuristics, missing-file handling, and copy utilities.
-
Chores
- Added a public error identifier for invalid log level.
Add LLM-friendly documentation (llms.txt) @aknysh (#1558)
## what - Add support for `llms.txt` standard using `docusaurus-plugin-llms` - Generate two LLM-friendly documentation files: - [`/llms.txt`](https://atmos.tools/llms.txt) - Compact link list - [`/llms-full.txt`](https://atmos.tools/llms-full.txt) - Full documentation content - Configure plugin to prioritize core documentation sections (introduction, quick-start, install, core-concepts, CLI) - Include blog content in generated fileswhy
- LLMs need structured documentation: The
llms.txt
standard (https://llmstxt.org/) provides a standardized way for LLMs to efficiently understand website documentation - Address context window limitations: Instead of crawling entire websites, LLMs can access curated, structured content optimized for their understanding
- Improve AI assistance: Tools like Claude, ChatGPT, and other AI assistants can provide better answers about Atmos by referencing these files
- Follow emerging standards: Similar to
robots.txt
for search engines,llms.txt
is becoming a standard for AI-friendly documentation - Better developer experience: Users asking AI assistants about Atmos will get more accurate, up-to-date responses
references
- https://llmstxt.org/ - llms.txt standard specification
- https://github.com/rachfop/docusaurus-plugin-llms - Docusaurus plugin used
- Live files will be available at:
Summary by CodeRabbit
- New Features
- Generates machine-readable documentation artifacts during site builds and publishes them with the site.
- Adds a post-build cleanup step to remove or mask import statements in generated artifacts for clearer output.
- Chores
- Adds a new site dependency to support artifact generation.
- Introduces a postbuild script to copy artifacts and run cleanup.
- Updates ignore patterns to exclude generated artifacts from version control.
fix: prevent path duplication when using absolute paths in component configuration @osterman (#1535)
## what- Fixed path duplication bug when using absolute paths in component configurations
- Added
JoinPath
utility function for consistent path joining without filesystem checks - Refactored all path joining logic to use the single
JoinPath
utility, eliminating code duplication - Fixed handling of absolute paths in
metadata.component
field - Added Windows-specific test cases for Windows absolute paths
- Created comprehensive test suite covering 28 edge case scenarios for path handling
why
- GitHub Actions pipelines were failing with duplicated paths:
/home/runner/_work/infrastructure/infrastructure/home/runner/_work/infrastructure/infrastructure/atmos/components/terraform
- When component paths are configured with absolute paths,
filepath.Join()
on Unix systems doesn't handle two absolute paths correctly, causing path duplication - This regression was introduced in PR #1512 (included in v1.192.0) which added the
GetComponentPath
function without proper handling of absolute paths - Code duplication between
atmosConfigAbsolutePaths()
andbuildComponentPath()
could lead to inconsistent behavior
references
- Regression introduced in PR #1512: test: fix test isolation issues and improve sandbox testing
- This PR added
pkg/utils/component_path_utils.go
with theGetComponentPath
function - The function didn't account for components that are already absolute paths
- This PR added
- User impact: Users upgrading from v1.191.0 to v1.192.0 experienced broken GitHub Actions pipelines when using absolute paths in their configurations
Bug Details
The issue occurs when:
atmos.base_path
is set to an absolute path (e.g.,/home/runner/_work/infrastructure/infrastructure
)components.terraform.base_path
or the component itself is also set to an absolute path- On Unix systems,
filepath.Join()
with two absolute paths creates unexpected results
Fix Implementation
pkg/utils/file_utils.go
Added JoinPath
utility function for consistent path handling:
// JoinPath joins two paths handling absolute paths correctly.
// If the second path is absolute, it returns the second path.
// Otherwise, it joins the paths and returns the absolute path.
// This function does NOT check if the path exists on the filesystem.
func JoinPath(basePath string, providedPath string) string {
if filepath.IsAbs(providedPath) {
return providedPath
}
return filepath.Join(basePath, providedPath)
}
Refactored Path Joining
- pkg/config/config.go:
atmosConfigAbsolutePaths()
now usesJoinPath
for all component base paths - pkg/utils/component_path_utils.go:
buildComponentPath()
now usesJoinPath
for consistent behavior - Eliminated duplicate logic that was handling absolute path checks in multiple places
Design Decisions
Why no filesystem checks in JoinPath:
- The original
JoinAbsolutePathWithPath
performsos.Stat
checks which fail in unit tests with mock paths - Path construction logic should be separate from filesystem validation
- This follows the Single Responsibility Principle - path manipulation vs. path validation
- Filesystem checks can be performed by callers when needed, not during path construction
Test Coverage
Created comprehensive test files:
pkg/config/config_path_absolute_test.go
- Tests InitCliConfig absolute path handlingpkg/config/config_path_comprehensive_edge_cases_test.go
- 28 edge case scenarios including Windows pathspkg/utils/component_path_absolute_test.go
- Tests GetComponentPath with absolute pathsinternal/exec/stack_metadata_component_path_test.go
- Tests metadata.component field handlinginternal/exec/terraform_component_path_utils_test.go
- Tests constructTerraformComponentWorkingDir
All tests pass successfully on Linux, macOS, and Windows, confirming the fix resolves the path duplication issue while maintaining backward compatibility with relative path configurations.
🤖 Generated with Claude Code
Summary by CodeRabbit
-
New Features
- Added exported path-joining and absolute-path resolution utilities and new public errors for pager/URL/file handling.
-
Bug Fixes
- Improved path normalization, duplication cleanup, and Windows/UNC/volume handling; more consistent component and sandbox path resolution.
-
Documentation
- Added Windows path guidance to CLI docs and a PRD on path construction vs validation.
-
Tests
- Extensive cross-platform tests for path joining, component resolution, absolute/relative edge cases, and sandbox behavior.
Enhance OPA validation with comprehensive policy execution context @aknysh (#1540)
## what - Enhanced OPA validation policies with comprehensive policy execution context metadata - Added 5 new input sections to OPA policies for fine-grained governance and security enforcement - Implemented comprehensive test suite for all new validation functionality - Extended existing OPA documentation with practical examples and best practiceswhy
- Security & Governance: Enable policy enforcement based on process environment, CLI arguments, and Terraform variables for comprehensive security controls
- Compliance: Allow validation of sensitive operations, environment consistency, and approval workflows through policy-as-code
- Flexibility: Provide detailed context to OPA policies for sophisticated governance scenarios (production deployments, cost controls, naming conventions)
- Transparency: Make command execution context visible to policies for audit and compliance requirements
Enhanced OPA Policy Context
This enhancement provides 5 new input sections to OPA policies:
🔐 process_env
: Process Environment Variables
- Purpose: Access environment variables from the current process for security and compliance
- Use Cases:
- Enforce deployment approvals in production (
DEPLOYMENT_APPROVED
,APPROVED_BY
) - Validate required credentials (
AWS_REGION
,AWS_PROFILE
) - Restrict operations based on environment context
- Enforce deployment approvals in production (
- Example: Block production deployments without proper approval workflow
🚀 cli_args
: Command Line Arguments
- Purpose: List of command line arguments and flags (e.g.,
["terraform", "apply"]
) - Use Cases:
- Block dangerous operations (
terraform apply
with specific conditions) - Enforce command structure and argument validation
- Implement command-specific governance rules
- Block dangerous operations (
- Example: Prevent
terraform apply
when certain variables are set
🛠️ tf_cli_vars
: Terraform CLI Variables
- Purpose: Variables with proper type conversion from command-line
-var
arguments - Use Cases:
- Validate instance types, configurations, and resource limits
- Enforce naming conventions and security policies
- Prevent sensitive data from being passed via CLI
- Example: Restrict instance types and validate JSON configurations
- Type Safety: Automatic JSON parsing for complex objects and arrays
🌍 env_tf_cli_args
: TF_CLI_ARGS Arguments
- Purpose: Parsed arguments from the
TF_CLI_ARGS
environment variable - Use Cases:
- Block dangerous flags (
-auto-approve
,-force
) in production - Enforce plan file usage for apply operations
- Validate parallelism and other execution parameters
- Block dangerous flags (
- Example: Require plan files for production deployments
📊 env_tf_cli_vars
: TF_CLI_ARGS Variables
- Purpose: Variables with type conversion from
TF_CLI_ARGS
environment variable - Use Cases:
- Cross-validate CLI and environment variable consistency
- Enforce cost controls and resource naming conventions
- Validate complex JSON configurations from environment
- Example: Ensure region consistency between CLI args and AWS_REGION
Technical Implementation
New Terraform CLI Utilities (terraform_cli_args_utils.go
)
GetTerraformEnvCliArgs()
: ParsesTF_CLI_ARGS
into argument list with quote handlingGetTerraformEnvCliVars()
: Extracts and type-converts-var
arguments fromTF_CLI_ARGS
- Smart Parsing: Handles quoted strings, JSON values, and multiple
-var
formats - Type Conversion: Automatic conversion of JSON objects, arrays, and numeric values
Enhanced Component Validation (validate_component.go
)
- Process Environment Injection: Adds
process_env
section to component validation context - CLI Context Integration: Incorporates command arguments and Terraform variables
- Backward Compatibility: All existing functionality preserved
Comprehensive Test Coverage
- Unit Tests: 286 test cases for argument parsing and variable extraction
- Integration Tests: 5 end-to-end validation scenarios
- Edge Cases: Quote handling, JSON parsing, malformed arguments, type conversion
- Performance: Benchmark tests for CLI argument processing
Updated Stack Configurations
- Test Components: 3 new validation components for comprehensive testing
- OPA Policy: Enhanced with 10 validation rules covering all new functionality
- Example Scenarios: Real-world governance examples for each context type
Policy Examples from Documentation
Environment-Based Security
# Block operations in production without proper approval
errors[message] {
input.process_env.ENVIRONMENT == "production"
not input.process_env.DEPLOYMENT_APPROVED
message = "Production deployments require DEPLOYMENT_APPROVED environment variable"
}
CLI Variable Validation
# Ensure sensitive variables are not passed via CLI
errors[message] {
sensitive_vars := ["password", "secret", "api_key", "token"]
cli_var := sensitive_vars[_]
input.tf_cli_vars[cli_var]
message = sprintf("Sensitive variable '%s' should not be passed via command line", [cli_var])
}
TF_CLI_ARGS Governance
# Block dangerous flags in production
errors[message] {
dangerous_flags := ["-auto-approve", "-force", "-lock=false"]
flag := dangerous_flags[_]
flag in input.env_tf_cli_args
input.process_env.ENVIRONMENT == "production"
message = sprintf("Flag '%s' is not allowed in production via TF_CLI_ARGS", [flag])
}
Cross-Context Validation
# Validate environment consistency across all sources
errors[message] {
input.env_tf_cli_vars.region != input.process_env.AWS_REGION
message = sprintf("Region mismatch: TF_CLI_ARGS region '%s' != AWS_REGION '%s'", [
input.env_tf_cli_vars.region, input.process_env.AWS_REGION
])
}
Documentation Updates
Enhanced the OPA validation documentation with:
- Policy Execution Context: Comprehensive section explaining all 5 new context types
- Practical Examples: Real-world governance scenarios for each context type
- Best Practices: Guidelines for security, type safety, and error handling
- Combined Validation: Examples showing how to leverage multiple context sources
- Security Patterns: Templates for common governance use cases
Validation Results
All tests passing with comprehensive coverage:
✅ Process Environment: Validates env var injection and security policies
✅ CLI Arguments: Tests command structure and argument validation
✅ TF CLI Variables: Validates type conversion and security restrictions
✅ TF_CLI_ARGS Integration: Tests argument parsing and governance rules
✅ Cross-Context Validation: Ensures consistency across all input sources
Manual validation confirms:
- Environment variable injection working correctly
- CLI argument parsing handling all edge cases
- JSON type conversion functioning properly
- Security policies enforcing governance rules
- Backward compatibility maintained
This enhancement transforms Atmos OPA validation into a comprehensive governance platform, enabling sophisticated policy enforcement across infrastructure operations while maintaining full backward compatibility.
🤖 Generated with Claude Code
Summary by CodeRabbit
- New Features
- TF_CLI_ARGS parsing and TF CLI vars from environment are exposed to validation and available to policies; process environment is also provided to validations.
- Bug Fixes
- Improved OPA validation reliability on Windows with safer fallbacks and clearer errors.
- Documentation
- Expanded docs and policy examples for env-based CLI args/vars and combined-context validation.
- Tests
- Extensive unit, integration, and benchmark coverage for CLI parsing and validation flows.
- Chores
- Linter settings adjusted and dependencies bumped.
fix: Improve test infrastructure and fix critical environment variable bug @osterman (#1543)
## what - Fix AtmosRunner to inherit current working directory in subprocess execution for proper git worktree support - Add cross-platform PATH handling with case-insensitive detection for Windows compatibility - Implement UpdateEnvVar function for proper environment variable management - Fix critical bug in executeCustomCommand where custom environment variables were completely ignored - Create dedicated git-repository-warnings.yaml test file with proper test organization - Add early AtmosRunner initialization to build binaries before directory changes - Improve GOCOVERDIR handling in test environment preparation - Add comprehensive error handling and logging for test executionwhy
- Git worktree environments were failing because subprocess execution didn't inherit working directory
- Windows tests were failing due to hardcoded Unix path assumptions and case-sensitive PATH handling
- Custom commands were silently ignoring all user-defined environment variables, breaking functionality
- Test structure was incorrect with git repository warning tests misplaced in empty-dir scenarios
- AtmosRunner was trying to build binaries after changing to test directories, causing build failures
- Cross-platform compatibility issues were preventing proper test execution on Windows/macOS/Linux
- Missing environment variable handling was causing production bugs in custom command execution
references
fix: merge commands from all sources preserving precedence hierarchy @osterman (#1533)
# Fix: Merge commands from .atmos.d and imports instead of replacing themwhat
- Fixed regression where commands from
.atmos.d/
directories and explicit imports were being replaced instead of merged with local commands - Implemented proper command merging behavior that combines commands from all sources (defaults, .atmos.d, imports, local) with correct precedence
- Added comprehensive test coverage validating all command merging scenarios including CloudPosse's real-world use case
- Created Product Requirements Document capturing implementation details and requirements
why
- Organizations using Atmos need to maintain centralized command definitions that projects can import, extend, and optionally override
- Previous behavior broke workflows where teams define common commands in central repositories (e.g., CloudPosse's
.github
repo) that projects import and customize - The regression prevented command inheritance, forcing teams to either duplicate all commands locally or lose access to centralized commands
- This fix enables:
- Command inheritance from organizational repositories
- Local project customization and overrides
- Multi-level organizational structures with department/team/project command hierarchies
- Modular command libraries using glob patterns
Technical Details
Root Cause
Viper's MergeConfig
function doesn't overwrite arrays - it preserves existing array values. This caused imported commands to be ignored when local commands were present.
Solution
- Modified
pkg/config/load.go
to use temporary Viper instances to extract commands from imported files - Restructured
processConfigImportsAndReapply
to apply correct precedence order: defaults < .atmos.d < imports < local - Updated
mergeCommandArrays
to support name-based override behavior where later commands replace earlier ones with the same name
Command Precedence Order
- Embedded defaults (lowest precedence)
.atmos.d/
directories- Explicit imports (via
import:
field) - Local configuration (highest precedence - wins on duplicates)
Test Coverage
- Basic merging: imported + local = all commands
- Override behavior: local overrides imported with same name
- Deep nesting: 4+ level import chains
- Empty imports: no effect on other commands
- Complex structures: command properties preserved
- Real-world scenario: 10 upstream + 1 local = 11 total commands (CloudPosse use case)
references
- Related to #1447 and #1489 which attempted to address this issue
- Fixes CloudPosse's workflow for centralized command management
- PRD:
docs/prd/command-merging.md
Summary by CodeRabbit
-
New Features
- Deterministic command merging with clear precedence (embedded defaults → imported → local), per-name overrides, order preservation, and final merge ensuring local overrides; deep/nested imports and glob support.
-
Documentation
- New Product Requirements Document describing command merging behavior, use cases, testing, rollout, and success metrics.
-
Tests
- Extensive test coverage for merging semantics, deep import chains, overrides, deduplication, and command-structure preservation.
-
Chores
- More granular import-processing logs and updated CLI sample output reflecting merged commands.
Add Atmos CLI performance profiling with multiple profile types @aknysh (#1534)
## what- Add performance profiling with multiple profile types and environment variables
- Enhanced file-based profiling to support all 8 profile types: cpu, heap, allocs, goroutine, block, mutex, threadcreate, trace
- Added comprehensive environment variable support for all profiler settings
- Added
--profile-type
CLI flag for selecting profile type in file-based profiling - Added mapstructure tags to profiler Config struct for proper environment variable unmarshaling
- Enhanced profiler configuration handling in root command with environment variable integration
- Updated profiling documentation with complete environment variable coverage
- Added comprehensive test coverage for new functionality
- Update docs:
why
- Atmos includes built-in support for performance profiling using Go's standard
pprof
tool. Profiling helps identify performance bottlenecks, memory usage patterns, and CPU hotspots to optimize Atmos operations. - Users need access to different types of profiling data beyond just CPU profiling for comprehensive performance analysis
- Environment variables enable easier CI/CD integration and automated profiling workflows
- The original implementation only supported CPU profiling in file-based mode, limiting debugging capabilities
- Missing mapstructure tags prevented environment variables from being properly loaded
- Documentation was incomplete regarding environment variable usage
references
- Enhanced
pkg/profiler/profiler.go
with multi-profile-type support - Added environment variable binding in
pkg/config/load.go
- Updated CLI flag handling in
cmd/root.go
- Comprehensive test coverage in
pkg/profiler/profiler_test.go
- Updated documentation in
website/docs/troubleshoot/profiling.mdx
andwebsite/docs/cli/global-flags.mdx
Key Features Added
Multiple Profile Types Support:
- CPU Profile: Shows where your program spends CPU time
- Heap Profile: Shows current heap memory allocation patterns
- Allocs Profile: Shows all memory allocations since program start
- Goroutine Profile: Shows active goroutines and their call stacks
- Block Profile: Shows operations that led to blocking on synchronization primitives
- Mutex Profile: Shows lock contention patterns
- Thread Create Profile: Shows stack traces that led to thread creation
- Trace Profile: Shows detailed execution traces for performance analysis
Environment Variables Added:
ATMOS_PROFILER_ENABLED
- Enable/disable pprof HTTP profiling serverATMOS_PROFILER_HOST
- Set host address for profiling serverATMOS_PROFILER_PORT
- Set port for profiling serverATMOS_PROFILE_FILE
- Set file path for file-based profilingATMOS_PROFILE_TYPE
- Set profile type for file-based profiling
CLI Enhancements:
- Added
--profile-type
flag with validation and error handling - Enhanced
--profile-file
to automatically enable profiling - Full backwards compatibility maintained
Configuration Precedence:
- Command-line flags (highest priority)
- Environment variables
- Configuration file (atmos.yaml)
- Default values (lowest priority)
Usage Examples
File-based profiling with different types:
# CPU profiling (default)
$ atmos terraform plan vpc -s prod --profile-file=cpu.prof
👽 Atmos 1.192.0 on darwin/arm64
INFO Profiling started type=cpu file=cpu.prof
INFO Profiling completed type=cpu file=cpu.prof
# Memory heap profiling
$ atmos terraform plan vpc -s prod --profile-file=heap.prof --profile-type=heap
👽 Atmos 1.192.0 on darwin/arm64
INFO Profiling started type=heap file=heap.prof
INFO Profiling completed type=heap file=heap.prof
# Execution trace profiling
$ atmos terraform plan vpc -s prod --profile-file=trace.out --profile-type=trace
👽 Atmos 1.192.0 on darwin/arm64
INFO Profiling started type=trace file=trace.out
INFO Profiling completed type=trace file=trace.out
# Goroutine profiling
$ atmos terraform plan vpc -s prod --profile-file=goroutine.prof --profile-type=goroutine
👽 Atmos 1.192.0 on darwin/arm64
INFO Profiling started type=goroutine file=goroutine.prof
INFO Profiling completed type=goroutine file=goroutine.prof
Environment variable usage:
# File-based profiling via environment variables
$ export ATMOS_PROFILE_FILE=debug.prof
$ export ATMOS_PROFILE_TYPE=goroutine
$ atmos describe stacks
👽 Atmos 1.192.0 on darwin/arm64
INFO Profiling started type=goroutine file=debug.prof
INFO Profiling completed type=goroutine file=debug.prof
# Server-based profiling via environment variables
$ export ATMOS_PROFILER_ENABLED=true
$ export ATMOS_PROFILER_PORT=8080
$ atmos terraform apply vpc -s prod
👽 Atmos 1.192.0 on darwin/arm64
INFO Profiler server available at: url=http://localhost:8080/debug/pprof/
Error handling for invalid profile types:
$ atmos terraform plan vpc -s prod --profile-file=test.prof --profile-type=invalid
👽 Atmos 1.192.0 on darwin/arm64
ERRO Failed to setup profiler error="invalid profile type: unsupported profile type: invalid. Supported types: [cpu heap allocs goroutine block mutex threadcreate trace]"
Server-based profiling:
$ atmos terraform apply vpc -s prod --profiler-enabled --profiler-port=9090
👽 Atmos 1.192.0 on darwin/arm64
INFO Profiler server available at: url=http://localhost:9090/debug/pprof/
Profile Analysis Examples
Analyzing CPU profiles:
# Interactive text mode
$ go tool pprof cpu.prof
(pprof) top
Showing nodes accounting for 230ms, 95.83% of 240ms total
flat flat% sum% cum cum%
80ms 33.33% 33.33% 80ms 33.33% github.com/cloudposse/atmos/internal/exec.processStackConfig
60ms 25.00% 58.33% 60ms 25.00% gopkg.in/yaml.v3.(*Decoder).Decode
40ms 16.67% 75.00% 40ms 16.67% github.com/cloudposse/atmos/pkg/utils.ProcessTmplWithDatasources
# Web interface
$ go tool pprof -http=:8080 cpu.prof
Analyzing trace profiles:
# Use go tool trace for execution traces
$ go tool trace trace.out
# Opens web interface showing timeline view, blocking profiles, etc.
Analyzing memory profiles:
$ go tool pprof heap.prof
(pprof) top
Showing nodes accounting for 512.45MB, 98.23% of 521.63MB total
flat flat% sum% cum cum%
256.12MB 49.11% 49.11% 256.12MB 49.11% github.com/cloudposse/atmos/internal/exec.(*StackProcessor).ProcessYAMLConfigFiles
128.33MB 24.61% 73.72% 128.33MB 24.61% github.com/cloudposse/atmos/pkg/utils.ReadYamlFile
Testing
- Added comprehensive unit tests for all profile types
- Added environment variable integration tests
- Added configuration serialization tests
- Added error handling and validation tests
- All existing tests continue to pass
- 100% backwards compatibility maintained
Files Modified
pkg/profiler/profiler.go
- Enhanced with multi-profile supportpkg/profiler/profiler_test.go
- Added comprehensive test coveragecmd/root.go
- Enhanced CLI flag and environment variable handlingpkg/config/load.go
- Added environment variable bindingswebsite/docs/troubleshoot/profiling.mdx
- Updated documentationwebsite/docs/cli/global-flags.mdx
- Added profiling flag docs
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
Summary by CodeRabbit
-
New Features
- Built-in profiling (pprof) with server- and file-based modes; new config and env options exposed in describe-config; new CLI flags: --profiler-enabled, --profiler-host, --profiler-port, --profile-file, --profile-type.
-
Documentation
- Added profiler guides, troubleshooting and usage docs; updated configuration and global flags pages with examples and security notes.
-
Tests
- Added comprehensive profiler tests and updated CLI help snapshots.
-
Chores
- Dependency upgrades and example Atmos version bumps; minor logging/no-op adjustments.
🤖 Automatic Updates
chore(deps): update helmfile/helmfile-action action to v2.0.5 @[renovate[bot]](https://github.com/apps/renovate) (#1557)
> [!NOTE] > Mend has cancelled [the proposed renaming](https://redirect.github.com/renovatebot/renovate/discussions/37842) of the Renovate GitHub app being renamed to `mend[bot]`. > > This notice will be removed on 2025-10-07.This PR contains the following updates:
Package | Type | Update | Change |
---|---|---|---|
helmfile/helmfile-action | action | patch | v2.0.4 -> v2.0.5
|
Release Notes
helmfile/helmfile-action (helmfile/helmfile-action)
v2.0.5
What's Changed
- build(deps-dev): bump @types/node from 22.13.4 to 22.13.5 by @dependabot[bot] in #446
- build(deps-dev): bump prettier from 3.5.1 to 3.5.2 by @dependabot[bot] in #445
- build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.24.1 to 8.25.0 by @dependabot[bot] in #448
- build(deps-dev): bump @types/node from 22.13.5 to 22.13.9 by @dependabot[bot] in #453
- build(deps-dev): bump typescript from 5.7.3 to 5.8.2 by @dependabot[bot] in #452
- build(deps-dev): bump prettier from 3.5.2 to 3.5.3 by @dependabot[bot] in #450
- build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.26.0 to 8.26.1 by @dependabot[bot] in #457
- build(deps-dev): bump @types/node from 22.13.9 to 22.13.10 by @dependabot[bot] in #454
- build(deps-dev): bump eslint-plugin-github from 5.1.8 to 6.0.0 by @dependabot[bot] in #459
- build(deps-dev): bump @types/node from 22.13.10 to 22.13.14 by @dependabot[bot] in #464
- build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.26.1 to 8.28.0 by @dependabot[bot] in #463
- build(deps-dev): bump @types/node from 22.13.14 to 22.14.0 by @dependabot[bot] in #467
- build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.28.0 to 8.29.0 by @dependabot[bot] in #465
- build(deps-dev): bump typescript from 5.8.2 to 5.8.3 by @dependabot[bot] in #470
- build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.29.0 to 8.29.1 by @dependabot[bot] in #471
- build(deps-dev): bump @types/node from 22.14.0 to 22.14.1 by @dependabot[bot] in #474
- Update action version in README.md by @georg-schwarz in #473
- build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.29.1 to 8.30.1 by @dependabot[bot] in #475
- build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.30.1 to 8.31.0 by @dependabot[bot] in #476
- build(deps-dev): bump @types/node from 22.14.1 to 22.15.1 by @dependabot[bot] in #477
- build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.31.0 to 8.31.1 by @dependabot[bot] in #480
- build(deps-dev): bump @types/node from 22.15.1 to 22.15.3 by @dependabot[bot] in #479
- build: update @babel dependencies to latest versions by @yxxhero in #481
- build(deps-dev): bump @types/node from 22.15.3 to 22.15.14 by @dependabot[bot] in #484
- build(deps-dev): bump @types/node from 22.15.14 to 22.15.17 by @dependabot[bot] in #486
- build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.31.1 to 8.32.0 by @dependabot[bot] in #482
- build(deps-dev): bump @types/node from 22.15.17 to 22.15.18 by @dependabot[bot] in #488
- build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.32.0 to 8.32.1 by @dependabot[bot] in #487
- build(deps-dev): bump @types/node from 22.15.18 to 22.15.21 by @dependabot[bot] in #490
- build(deps-dev): bump eslint-plugin-jest from 28.11.0 to 28.11.1 by @dependabot[bot] in #493
- build(deps-dev): bump @types/node from 22.15.21 to 22.15.23 by @dependabot[bot] in #492
- build(deps-dev): bump @types/node from 22.15.23 to 22.15.26 by @dependabot[bot] in #496
- build(deps-dev): bump eslint-plugin-jest from 28.11.1 to 28.12.0 by @dependabot[bot] in #495
- build(deps-dev): bump eslint-plugin-jest from 28.12.0 to 28.13.0 by @dependabot[bot] in #501
- build(deps-dev): bump @types/node from 22.15.26 to 22.15.30 by @dependabot[bot] in #500
- build(deps-dev): bump jest from 29.7.0 to 30.0.0 by @dependabot[bot] in #502
- build(deps-dev): bump eslint-plugin-jest from 28.13.0 to 28.13.3 by @dependabot[bot] in #505
- build(deps-dev): bump @types/node from 22.15.30 to 24.0.0 by @dependabot[bot] in #504
- build(deps-dev): bump eslint-plugin-jest from 28.13.3 to 28.13.5 by @dependabot[bot] in #507
- build(deps-dev): bump @types/node from 24.0.0 to 24.0.1 by @dependabot[bot] in #506
- build(deps-dev): bump @types/node from 24.0.1 to 24.0.3 by @dependabot[bot] in #509
- build(deps-dev): bump jest from 30.0.0 to 30.0.2 by @dependabot[bot] in #513
- build(deps-dev): bump eslint-plugin-jest from 28.13.5 to 29.0.1 by @dependabot[bot] in #511
- build(deps-dev): update brace-expansion to version 2.0.2 and undici to version 5.29.0 by @yxxhero in #514
- build(deps-dev): bump jest from 30.0.2 to 30.0.4 by @dependabot[bot] in #526
- build(deps-dev): bump @types/node from 24.0.3 to 24.0.10 by @dependabot[bot] in #525
- build(deps-dev): bump @types/node from 24.0.10 to 24.0.13 by @dependabot[bot] in #529
- build(deps-dev): bump prettier from 3.5.3 to 3.6.2 by @dependabot[bot] in #521
- build(deps-dev): bump @types/node from 24.0.13 to 24.0.15 by @dependabot[bot] in #532
- build(deps-dev): bump @types/node from 24.0.15 to 24.1.0 by @dependabot[bot] in #535
- build(deps-dev): bump jest from 30.0.4 to 30.0.5 by @dependabot[bot] in #533
- build(deps): bump actions/checkout from 4 to 5 by @dependabot[bot] in #539
- build(deps-dev): bump @types/node from 24.1.0 to 24.2.1 by @dependabot[bot] in #538
- Add support for pinning helm plugin versions using @version syntax by @Copilot in #542
- Add comprehensive GitHub Copilot instructions for helmfile-action development by @Copilot in #547
- Bump @typescript-eslint/eslint-plugin from 8.32.1 to 8.39.1 and add parser dependency by @Copilot in #545
New Contributors
- @georg-schwarz made their first contribution in #473
- @Copilot made their first contribution in #542
Full Changelog: helmfile/helmfile-action@v2...v2.0.5
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
chore: Configure Renovate @[renovate[bot]](https://github.com/apps/renovate) (#1545)
Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs from Renovate will soon appear from 'Mend'. Learn more [here](https://redirect.github.com/renovatebot/renovate/discussions/37842).Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.
🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.
Detected Package Files
.devcontainer/Dockerfile
(dockerfile)Dockerfile
(dockerfile)demo/screenshots/Dockerfile
(dockerfile).github/actions/pr-sizer/action.yml
(github-actions).github/actions/remove-dependabot-semver-labels/action.yml
(github-actions).github/workflows/autofix.yml
(github-actions).github/workflows/build.yml
(github-actions).github/workflows/codeql.yml
(github-actions).github/workflows/dependabot.yml
(github-actions).github/workflows/feature-release.yml
(github-actions).github/workflows/nightlybuilds.yml
(github-actions).github/workflows/pre-commit.yml
(github-actions).github/workflows/screengrabs.yaml
(github-actions).github/workflows/test.yml
(github-actions).github/workflows/validate-codeowners.yml
(github-actions).github/workflows/vhs.yaml
(github-actions).github/workflows/website-deploy-prod.yml
(github-actions).github/workflows/website-preview-build.yml
(github-actions).github/workflows/website-preview-deploy.yml
(github-actions).github/workflows/website-preview-destroy.yml
(github-actions)go.mod
(gomod)website/package.json
(npm)website/plugins/custom-loaders/package.json
(npm)website/plugins/fetch-latest-release/package.json
(npm)website/.nvmrc
(nvm)
Configuration Summary
Based on the default config's presets, Renovate will:
- Start dependency updates only once this onboarding PR is merged
- Hopefully safe environment variables to allow users to configure.
- Show all Merge Confidence badges for pull requests.
- Enable Renovate Dependency Dashboard creation.
- Use semantic commit type
fix
for dependencies andchore
for all others if semantic commits are in use. - Ignore
node_modules
,bower_components
,vendor
and various test/tests (except for nuget) directories. - Group known monorepo packages together.
- Use curated list of recommended non-monorepo package groupings.
- Show only the Age and Confidence Merge Confidence badges for pull requests.
- Apply crowd-sourced package replacement rules.
- Apply crowd-sourced workarounds for known problems with packages.
🔡 Do you want to change how Renovate upgrades your dependencies? Add your custom config to renovate.json
in this branch. Renovate will update the Pull Request description the next time it runs.
What to Expect
With your current configuration, Renovate will create 51 Pull Requests:
chore(deps): update tj-actions/changed-files digest to a284dc1
renovate/tj-actions-changed-files-digest
main
a284dc1814e3fd07f2e34267fc8f81227ed29fb8
chore(deps): update autofix-ci/action action to v1.3.2
renovate/autofix-ci-action-1.x
main
635ffb0c9798bd160680f18fd73371e355b85f27
chore(deps): update dependency @fortawesome/react-fontawesome to v0.2.6
renovate/font-awesome
main
0.2.6
chore(deps): update dependency @grnet/docusaurus-terminology to v2.0.0-rc.2
renovate/grnet-docusaurus-terminology-2.x-lockfile
main
2.0.0-rc.2
chore(deps): update dependency @mdx-js/react to v3.1.1
renovate/mdx-monorepo
main
3.1.1
chore(deps): update dependency marked to v15.0.12
renovate/marked-15.x-lockfile
main
15.0.12
chore(deps): update dependency posthog-docusaurus to v2.0.4
renovate/posthog-docusaurus-2.x-lockfile
main
2.0.4
chore(deps): update dependency react-player to v2.16.1
renovate/react-player-2.x-lockfile
main
2.16.1
chore(deps): update dependency react-social-media-embed to v2.5.18
renovate/react-social-media-embed-2.x-lockfile
main
2.5.18
chore(deps): update helmfile/helmfile-action action to v2.0.5
renovate/helmfile-helmfile-action-2.x
main
v2.0.5
chore(deps): update tj-actions/changed-files action to v45.0.9
renovate/tj-actions-changed-files-45.x
main
a284dc1814e3fd07f2e34267fc8f81227ed29fb8
chore(deps): update actions/checkout action to v4.3.0
renovate/actions-checkout-4.x
main
08eba0b27e820071cde6df949e0beb9ba4906955
chore(deps): update actions/setup-go action to v5.5.0
renovate/actions-setup-go-5.x
main
d35c59abb061a4a6fb18e82ac0862c26744d6ab5
chore(deps): update dependency docusaurus-plugin-sentry to v2.1.0
renovate/docusaurus-plugin-sentry-2.x-lockfile
main
2.1.0
chore(deps): update dependency posthog-js to v1.268.6
renovate/posthog-js-1.x-lockfile
main
1.268.6
chore(deps): update dependency prettier to v3.6.2
renovate/prettier-3.x-lockfile
main
3.6.2
chore(deps): update dependency react-image-gallery to v1.4.0
renovate/react-image-gallery-1.x-lockfile
main
1.4.0
chore(deps): update docusaurus monorepo to v3.9.1
renovate/docusaurus-monorepo
main
3.9.1
3.9.1
3.9.1
3.9.1
3.9.1
3.9.1
chore(deps): update golang docker tag to v1.25
renovate/golang-1.x
main
1.25
chore(deps): update hadolint/hadolint-action action to v3.3.0
renovate/hadolint-hadolint-action-3.x
main
v3.3.0
chore(deps): update inouno/yaml-ls-check action to v1.5.1
renovate/inouno-yaml-ls-check-1.x
main
v1.5.1
chore(deps): update node.js to v20.19.5
renovate/node-20.x
main
20.19.5
fix(deps): update dependency @excalidraw/excalidraw to ^0.18.0
renovate/excalidraw-excalidraw-0.x
main
^0.18.0
fix(deps): update module github.com/redis/go-redis/v9 to v9.14.0
renovate/github.com-redis-go-redis-v9-9.x
main
v9.14.0
chore(deps): update actions/checkout action to v5
renovate/actions-checkout-5.x
main
v5
08c6903cd8c0fde910a37f88322edcfb5dd907a8
chore(deps): update actions/create-github-app-token action to v2
renovate/actions-create-github-app-token-2.x
main
v2
chore(deps): update actions/download-artifact action to v5
renovate/major-github-artifact-actions
main
v5
chore(deps): update actions/setup-go action to v6
renovate/actions-setup-go-6.x
main
v6
44694675825211faa026b3c33043df3e48a5fa00
chore(deps): update actions/setup-node action to v5
renovate/actions-setup-node-5.x
main
v5
chore(deps): update actions/setup-python action to v6
renovate/actions-setup-python-6.x
main
v6
chore(deps): update aquaproj/aqua-installer action to v4
renovate/aquaproj-aqua-installer-4.x
main
ea518c135a02fc11ff8024364510c181a5c6b342
chore(deps): update aws-actions/configure-aws-credentials action to v5
renovate/aws-actions-configure-aws-credentials-5.x
main
v5
chore(deps): update charmbracelet/vhs-action action to v2
renovate/charmbracelet-vhs-action-2.x
main
v2
chore(deps): update jaxxstorm/action-install-gh-release action to v2
renovate/jaxxstorm-action-install-gh-release-2.x
main
v2.1.0
chore(deps): update node.js to v22
renovate/node-22.x
main
22.20.0
chore(deps): update public.ecr.aws/localstack/localstack docker tag to v4
renovate/public.ecr.aws-localstack-localstack-4.x
main
4.8.1
chore(deps): update stefanzweifel/git-auto-commit-action action to v6
renovate/stefanzweifel-git-auto-commit-action-6.x
main
v6
chore(deps): update tj-actions/changed-files action to v47
renovate/tj-actions-changed-files-47.x
main
24d32ffd492484c1d75e0c0b894501ddb9d30d62
fix(deps): update dependency docusaurus-plugin-image-zoom to v3
renovate/docusaurus-plugin-image-zoom-3.x
main
^3.0.0
fix(deps): update dependency marked to v16
renovate/marked-16.x
main
^16.0.0
fix(deps): update dependency react-player to v3
renovate/react-player-3.x
main
^3.0.0
fix(deps): update font awesome (major)
renovate/major-font-awesome
main
^7.0.0
^7.0.0
^7.0.0
^7.0.0
^3.0.0
fix(deps): update module github.com/alecthomas/chroma to v2
renovate/github.com-alecthomas-chroma-2.x
main
v2.20.0
fix(deps): update module github.com/charmbracelet/lipgloss to v2
renovate/github.com-charmbracelet-lipgloss-2.x
main
a391435c3fa7faa899d5c42deb80829cd7df26c3
fix(deps): update module github.com/google/go-github/v59 to v75
renovate/github.com-google-go-github-v59-75.x
main
v75.0.0
fix(deps): update module github.com/hairyhenderson/gomplate/v3 to v4
renovate/github.com-hairyhenderson-gomplate-v3-4.x
main
v4.3.3
fix(deps): update module github.com/hashicorp/go-getter to v2
renovate/github.com-hashicorp-go-getter-2.x
main
v2.2.3
fix(deps): update module github.com/hashicorp/hcl to v2
renovate/github.com-hashicorp-hcl-2.x
main
v2.24.0
fix(deps): update module github.com/santhosh-tekuri/jsonschema/v5 to v6
renovate/github.com-santhosh-tekuri-jsonschema-v5-6.x
main
v6.0.2
fix(deps): update module gopkg.in/yaml.v2 to v3
renovate/gopkg.in-yaml.v2-3.x
main
v3.0.1
🚸 Branch creation will be limited to maximum 2 per hour, so it doesn't swamp any CI resources or overwhelm the project. See docs for prhourlylimit
for details.
[!WARNING]
Please correct - or verify that you can safely ignore - these dependency lookup failures before you merge this PR.
Failed to look up go package github.com/alicebob/miniredis/v2
Files affected:
go.mod
❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section.
If you need any further assistance then you can also request help here.
This PR was generated by Mend Renovate. View the repository job log.
chore(deps): bump github.com/aws/aws-sdk-go-v2/feature/s3/manager from 1.18.3 to 1.19.9 @[dependabot[bot]](https://github.com/apps/dependabot) (#1536)
Bumps [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) from 1.18.3 to 1.19.9.Commits
54aed73
Release 2025-02-18082781f
Regenerated Clients3ed185b
Update endpoints model03da737
Update API modelc8a8ccb
Bump go version to 1.22 (#3010)8b7c7bf
fix missing AccountIDEndpointMode binding (#3013)90f9d10
Release 2025-02-1740dd351
Regenerated Clients06352df
Update endpoints model833566b
Update API model- Additional commits viewable in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditions
will show all of the ignore conditions of the specified dependency@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/ssm from 1.62.0 to 1.65.1 @[dependabot[bot]](https://github.com/apps/dependabot) (#1539)
Bumps [github.com/aws/aws-sdk-go-v2/service/ssm](https://github.com/aws/aws-sdk-go-v2) from 1.62.0 to 1.65.1.Commits
b737dc9
Release 2024-10-077279a51
Regenerated Clientsa1b1f5a
Update endpoints model4853c41
Update API model99e2be8
Allow empty values on prefix headers (#2816)18e6b6e
remove autoscaling smoke tests (#2817)8200000
remove private metrics collection APIs (#2818)7a76a2a
Release 2024-10-04e35b8be
Regenerated Clients6e95871
Update endpoints model- Additional commits viewable in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditions
will show all of the ignore conditions of the specified dependency@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)