Update dependency cloudposse/atmos to v1.88.0 #9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.70.0
->1.88.0
Release Notes
cloudposse/atmos (cloudposse/atmos)
v1.88.0
Compare Source
Update the `Go` YAML lib from `gopkg.in/yaml.v2` to `gopkg.in/yaml.v3`. Support YAML v1.2 (latest version) @aknysh (#690)
what
Go
YAML lib fromgopkg.in/yaml.v2
togopkg.in/yaml.v3
yaml_utils
file (which importsgopkg.in/yaml.v3
) to control all YAML marshaling and un-marshaling from one placewhy
gopkg.in/yaml.v3
The main differences between
gopkg.in/yaml.v3
andgopkg.in/yaml.v2
include enhancements in functionality, bug fixes, and improvements in performance. Here's a summary of key distinctions:1. Better Conformance to YAML 1.2 Specification:
2. Node API Changes:
Node
API, which provides more control and flexibility over parsing and encoding YAML documents. This API is more comprehensive and allows for detailed inspection and manipulation of YAML content.3. Error Handling:
4. Support for Line and Column Numbers:
5. Performance:
6. Deprecation of Legacy Functions:
7. Anchors and Aliases:
8. API Changes and Compatibility:
YAML v1.2
YAML v1.1 and YAML v1.2 differ in several key aspects, particularly in terms of specification, syntax, and data type handling. Here's a breakdown of the most significant differences:
1. Specification and Goals:
2. Boolean Values:
y
,n
,yes
,no
,on
,off
,true
, andfalse
. This flexibility could sometimes lead to unexpected interpretations.true
andfalse
, aligning with JSON. This reduces ambiguity and ensures consistency.3. Integers with Leading Zeros:
012
would be interpreted as10
in decimal.4. Null Values:
null
,~
, and empty values (e.g., an empty string).null
(or an empty value), aligning with JSON's null representation.5. Tag Handling:
!!
syntax for tags (e.g.,!!str
for a string). The tag system is more complex and includes non-standard tags that can be confusing.6. Floating-Point Numbers:
.inf
,-.inf
, and.nan
with a dot notation.Infinity
,-Infinity
, andNaN
, which are the standard representations in JSON.7. Direct JSON Compatibility:
8. Indentation and Line Breaks:
9. Miscellaneous Syntax Changes:
10. Core Schema vs. JSON Schema:
Summary:
references
v1.87.1
Compare Source
Support `atmos terraform apply --from-plan` with additional flags @duncanaf (#684)
what
atmos terraform apply
to make sure the plan-file arg is placed after any flags specified by the userwhy
--parallelism=1
), or it crashes.atmos terraform apply
accepts aplan-file
arg, or generates one when--from-plan
is used. When this happens, it currently puts the plan-file arg first, before any additional flags specified by the user.atmos terraform apply --from-plan -- -parallelism=1
. In this example, atmos tries to callterraform apply <planfile> --paralellism=1
and terraform crashes withError: Too many command line arguments
v1.87.0
Compare Source
Update/improve Atmos UX @aknysh (#679)
what & why
atmos.yaml
CLI config file is not found, and if's it found, but points to an Atmos stacks directory that does not existWhen executing
atmos
command to show the terminal UI, do not evaluate theGo
templates in Atmos stack manifests to make the command faster since the TUI just shows the names of the components and stacks and does not need the components' configurationsFix/restore the TUI borders for the commands
atmos
andatmos workflow
around the selected columns. TheBorderStyle
functionality was changed in the latest releases of the charmbracelet/lipgloss library, preventing the borders around the selected column from showingAnnounce Cloud Posse's Refarch Docs @osterman (#680)
what
Add atmos pro stack locking @mcalhoun (#678)
what
atmos pro lock
andatmos pro unlock
commandsv1.86.2
Compare Source
Improve logging for the template function `atmos.Component`. Generate backend config and provider override files in `atmos.Component` function @aknysh (#674)
what
atmos.Component
atmos.Component
functionwhy
Add more debugging information and fix issues with the initial implementation of the
atmos.Component
function when the backend config filebackend.tf.json
(if enabled inatmos.yaml
) and provider overrides fileproviders_override.tf.json
(if configured in theproviders
section) were not generated, which prevented the functionatmos.Component
from returning the outputs of the component when executing in GitHub actionsWhen the environment variable
ATMOS_LOGS_LEVEL
is set toTrace
, the template functionatmos.Component
will log the execution flow and the results of template evaluation - useful for debuggingbump http context timeout for upload to atmos pro @mcalhoun (#656)
what
Increase the maximum http timeout when uploading to atmos pro
why
There are cases when there are a large number of stacks and a large number of workflows that this call can exceed 10 seconds
v1.86.1
Compare Source
Improve logging for the template function `atmos.Component` @aknysh (#672)
what
atmos.Component
Golang
to the latest version1.23
why
When the environment variable
ATMOS_LOGS_LEVEL
is set toTrace
, the template functionsatmos.Component
andatmos.GomplateDatasource
will log the execution flow and the results of template evaluation - useful for debuggingThis PR adds more debugging information and shows the results of the
atmos.Component
execution, and shows if the result was found in the cache:add install instructions for atmos on windows/scoop @dennisroche (#649)
what
add option/documentation for installing
atmos
using scoop.sh on windows.scoop
manifests will check GitHub releases and automatically update. no additional maintenance required for anyone 🥳.why
needed an easy way for my team to install
atmos
references
Fix docker build `ATMOS_VERSION` support `v*` tags @goruha (#671)
what
v
forATMOS_VERSION
on docker buildwhy
v
.The tag passed as
ATMOS_VERSION
docker build argumentreferences
v1.86.0
Compare Source
Add `--process-templates` flag to `atmos describe stacks` and `atmos describe component` commands. Update docs @aknysh (#669)
what
atmos.Component
andatmos.GomplateDatasource
--process-templates
flag toatmos describe stacks
andatmos describe component
commandswhy
When the environment variable
ATMOS_LOGS_LEVEL
is set toTrace
, the template functionsatmos.Component
andatmos.GomplateDatasource
will log the execution flow and the results of template evaluation - useful for debuggingEnable/disable processing of
Go
templates in Atmos stacks manifests when executing the commandsFor
atmos describe component <component> -s <stack>
command, use the--process-templates
flag to see the component configuration before and after the templates are processed. If the flag is not provided, it's set totrue
by defaultFor
atmos describe stacks
command, use the--process-templates
flag to see the stack configurations before and after the templates are processed. If the flag is not provided, it's set totrue
by defaultProcess
Go
templates in stack manifests and show the final valuesatmos describe stacks
Process
Go
templates in stack manifests and show the final valuesatmos describe stacks --process-templates=true
Do not process
Go
templates in stack manifests and show the template tokens in the outputatmos describe stacks --process-templates=false
fix: Atmos Affected GitHub Action Documentation @milldr (#661)
what
why
references
Updated Documentation for GHA Versions @milldr (#657)
what
why
references
v1.85.0
Compare Source
Update `atmos describe affected` and `atmos terraform` commands @aknysh (#654)
what
atmos describe affected
commandatmos terraform
commandwhy
The
atmos describe affected
command had an issue with calculating theincluded_in_dependents
field for all combination of the affected components with their dependencies. Now it's correctly calculated for all affectedIn
atmos describe affected
command, if the Git configcore.untrackedCache
is enabled, it breaks the command execution. We disable this option if it is setThe
atmos terraform
command now respects theTF_WORKSPACE
environment variable. If the environment variable is set by the caller, Atmos will not calculate and set a Terraform workspace for the component in the stack, but instead will let Terraform use the workspace provided in theTF_WORKSPACE
environment variableAllow Gomplate, Sprig and Atmos template functions in imports in Atmos stack manifests. All functions are allowed now in Atmos stacks manifests and in the import templates
v1.84.0
Compare Source
Add Atmos Pro integration to `atmos.yaml`. Add caching to `atmos.Component` template function. Implement `atmos.GomplateDatasource` template function @aknysh (#647)
what
atmos.yaml
atmos.Component
template functionatmos.GomplateDatasource
template functionwhy
Add Atmos Pro integration to
atmos.yaml
. This is in addition to the functionality added in Add --upload flag to atmos describe affected command. If the Atmos Pro configuration is present in theintegrations.pro
section inatmos.yaml
, it will be added in theconfig
section when executing theatmos describe affected --upload=true
command for further processing on the serverAdd caching to
atmos.Component
template functionAtmos caches (in memory) the results of
atmos.Component
template function execution. If you call the function for the same component in a stack more than once, the first call will produce the result and cache it, and all the consecutive calls will just use the cached data. This is useful when you use theatmos.Component
function for the same component in a stack in multiple places in Atmos stack manifests. It will speed up the function execution and stack processing.For example:
In the example, the
test2
Atmos component uses the outputs (remote state) of thetest
Atmos component from the same stack. The template function{{ atmos.Component "test" .stack }}
is executed three times (once for each tag).After the first execution, Atmos caches the result in memory (all the component sections, including the
outputs
), and reuses it in the next two calls to the function. The caching makes the stack processing about three times faster in this particular example. In a production environment where many components are used, the speedup can be even more significant.Implement
atmos.GomplateDatasource
template functionThe
atmos.GomplateDatasource
template function wraps the Gomplate Datasources and caches the results, allowing executing the same datasource many times without calling the external endpoint multiple times. It speeds up the datasource execution and stack processing, and can eliminate other issues with calling an external endpoint, e.g. timeouts and rate limiting.Usage
{{ (atmos.GomplateDatasource "<alias>").<attribute> }}
Caching the result of
atmos.GomplateDatasource
functionAtmos caches (in memory) the results of
atmos.GomplateDatasource
template function execution. If you execute the function for the same datasource alias more than once, the first execution will call the external endpoint, produce the result and cache it. All the consecutive calls will just use the cached data. This is useful when you use theatmos.GomplateDatasource
function for the same datasource alias in multiple places in Atmos stack manifests. It will speed up the function execution and stack processing.For example:
In the example, we define a
gomplate
datasourceip
and specify an external endpoint in theurl
parameter.We use the Gomplate
datasource
function in the tagtest1
, and theatmos.GomplateDatasource
wrapper for the same datasource aliasip
in the other tags. Theatmos.GomplateDatasource
wrapper will call the same external endpoint, but will cache the result and reuse it between the datasource invocations.When processing the component
test
from the above example, Atmos does the following:Executes the
{{ (datasource "ip").ip }}
template. It calls the external endpoint using the HTTP protocol and assign theip
attribute from the result to the tagtest1
Executes the
{{ (atmos.GomplateDatasource "ip").ip }}
template. It calls the external endpoint again, caches the result in memory, and assigns theip
attribute from the result to the tagtest2
Executes the
{{ (atmos.GomplateDatasource "ip").ip }}
two more times for the tagstest3
andtest4
. It detects that the result for the same datasource aliasip
is already presend in the memory cache and reuses it without calling the external endpoint two more timesThe datasource result caching makes the stack processing much faster and significantly reduces the load on external endpoints, preventing such issues as timeouts and rate limiting.
v1.83.1
Compare Source
Auto completion for zsh devcontainer @osterman (#639)
what
why
demo
Add docker image @osterman (#627)
what
why
Introduce License Check @osterman (#638)
what
Check for approved licenses
why
Avoid accidentally introducing code that is non-permissively licensed
Fix Codespace url @osterman (#637)
what
main
branchwhy
reorg
branchReorganize Documentation For a Better Learning Journey @osterman (#612)
what
why
Note
Job Summary Size Limitation aborts the job [BUG] actions/dependency-review-action#786
🚀 Enhancements
Don't copy unix sockets in `atmos describe affected` command @aknysh (#640)
what
atmos describe affected
commandexamples/quick-start
toexamples/quick-start-advanced
)why
atmos describe affected
command, the following error will be thrown:open .git/fsmonitor--daemon.ipc: operation not supported on socket
v1.83.0
Compare Source
Update `atmos describe affected` command @aknysh (#635)
what
atmos describe affected
command--upload=true
flag is passed, includedependents
for alldependents
(even an empty list), and include thesettings
section for all the dependent componentswhy
atmos describe affected --upload=true
commandv1.82.0
Compare Source
Add `--upload` flag to `atmos describe affected` command @aknysh (#631)
what
--upload
flag toatmos describe affected
commandwhy
If the
--upload=true
command-line flag is passed, Atmos will upload the affected components and stacks to a specified HTTP endpoint.The endpoint can process the affected components and their dependencies in a CI/CD pipeline (e.g. execute
terraform apply
on all the affected components in the stacks and all the dependencies).Atmos will perform an HTTP POST request to the URL
${ATMOS_PRO_BASE_URL}/${ATMOS_PRO_ENDPOINT}
, where the base URL is defined by theATMOS_PRO_BASE_URL
environment variable, and the URL path is defined by theATMOS_PRO_ENDPOINT
environment variable.An Authorization header
Authorization: Bearer $ATMOS_PRO_TOKEN
will be added to the HTTP request (if theATMOS_PRO_TOKEN
environment variable is set) to provide credentials to authenticate with the server.NOTE: If the
--upload=true
command-line flag is passed, the--include-dependencies
and--include-settings
flags are automatically set totrue
, so the affected components will be uploaded with their dependencies and settings (if they are configured in Atmos stack manifests).The payload of the HTTP POST request will be a JSON object with the following schema:
where:
base_sha
- the Git commit SHA of the base branch against which the changes in the current commit are comparedhead_sha
- the SHA of the current Git commitrepo_url
- the URL of the current repositoryrepo_host
- the host of the current repositoryrepo_name
- the name of the current repositoryrepo_owner
- the owner of the current repositorystacks
- a list of affected components and stacks with their dependenciesv1.81.0
Compare Source
Introduce Atmos `Go` template functions. Add `atmos.Component` function to read values from other Atmos components including outputs (remote state) @aknysh (#628)
what
Go
template functionsatmos.Component
template function to read values from other Atmos components including outputs (remote state)atmos.Component
functionwhy
Atmos now supports custom
Go
template functions similar to Sprig and GomplateIn
Go
templates in Atmos stack manifests, you can use the following functions and datasources:text/template
functionsdescription
The
atmos.Component
template function allows you to read any Atmos section or any attribute from a section for an Atmos component in a stack, and use it inGo
templates in Atmos component configurations.Usage
{{ (atmos.Component "<component>" "<stack>").<section>.<attribute> }}
Arguments
component
- Atmos component namestack
- Atmos stack namesection
- Atmos section name. Any section returned by the CLI commandatmos describe component
can be used. A specialoutputs
section is also supported to get the outputs (remote state) of Terraform/OpenTofu components.NOTE: Using the
outputs
section in theatmos.Component
command is an alternative way to read the outputs (remote state) of a component in a stack directly in Atmos stack manifests instead of using theremote-state
module and configuring Terraform/OpenTofu components to use theremote-state
module as described in Component Remote Stateattribute
- attribute name (field) from thesection
.attribute
is optional, you can use thesection
itself if it's a simple type (e.g.string
). Any number of attributes can be chained using the dot (.
) notation. For example, if the first two attributes are maps, you can chain them and get a field from the last map:{{ (atmos.Component "<component>" "<stack>").<section>.<attribute1>.<attribute2>.<field1> }}
Specifying Atmos
stack
stack
is the second argument of theatmos.Component
function, and it can be specified in a few different ways:Hardcoded stack name. Use it if you want to get an output from a component from a different (well-known and static) stack. For example, you have a
tgw
component in a stackplat-ue2-dev
that requires thevpc_id
output from thevpc
component from the stackplat-ue2-prod
:Use the
.stack
(or.atmos_stack
) template identifier to specify the same stack as the current component (for which theatmos.Component
function is executed):For example, you have a
tgw
component that requires thevpc_id
output from thevpc
component in the same stack:Use the
printf
template function to construct stack names using static strings and dynamic identifiers:For example, you have a
tgw
component deployed in the stackplat-ue2-dev
. Thetgw
component requires thevpc_id
output from thevpc
component from the same environment (ue2
) and same stage (dev
), but from a different tenantnet
(instead ofplat
):NOTE: By using the
printf "%s-%s-%s"
function, you are constructing stack names using the stack context variables/identifiers. For more information on Atmos stack names and how to define them, refer tostacks.name_pattern
andstacks.name_template
sections inatmos.yaml
CLI config fileExamples
The following configurations show different ways of using the
atmos.Component
template function to read values from different Atmos sections directly in Atmos stack manifests, including the outputs of other (already provisioned) components.[docs] Integration GHA fix version compatibility table @goruha (#626)
what
why
v1.80.0
Compare Source
Add `--include-settings` flag to `atmos describe affected` command @aknysh (#624)
what
--include-settings
flag toatmos describe affected
commandwhy
--include-settings=true
flag is passed,atmos describe affected
will include thesettings
section for each affected component in the stack. Thesettings
sections is a free-form map used to pass configuration information to Atmos Integrations. Having thesettings
section in the output will allow the integrations to parse it and detect settings for the corresponding integrationFix goreleaser @goruha (#623)
what
atmos
specific goreleaserwhy
v1.79.0
Compare Source
Fix an issue with the `component_info` output from the `atmos describe component` command. Add `assume_role` property to Atmos JSON Schema S3 backend @aknysh (#621)
what
component_info
output from theatmos describe component
commandassume_role
property to Atmos JSON Schema S3 backendwhy
The issue with the
component_info
output from theatmos describe component
command was introduced in the previous PRs (different order of execution when evaluationGo
templates in Atmos stack manifests)Support the recommended
assume_role
property in S3 backends. Assuming an IAM Role can be configured in two ways. The preferred way is to use the argumentassume_role
, the other, which is deprecated, is with arguments at the top level (e.g.role_arn
)references
Update github actions documentation @goruha (#606)
what
why
references
Fix tests @goruha (#619)
what
why
master
renamed tomain
Go auto release workflows @goruha (#586)
What
cloudposse/.github/.github/workflows/shared-go-auto-release.yml@main
.goreleaser.yml
. Now will use https://github.com/cloudposse/.github/blob/main/.github/goreleaser.ymlauto-release.yaml
. Now will use https://github.com/cloudposse/.github/blob/main/.github/auto-release.yml and https://github.com/cloudposse/.github/blob/main/.github/auto-release-hotfix.ymlWhy
v1.78.0
Compare Source
Update `atmos validate stacks` command @aknysh (#611)
what
atmos vendor pull
commandatmos validate stacks
command--include-dependents
flag toatmos describe affected
commandwhy
When executing
atmos vendor pull
, Atmos creates a temp directory to clone the remote repo into.Atmos uses
go-getter
to download the sources into the temp directory. When cloning from the root of a repo w/o using modules (sub-paths),go-getter
does the following:git init
For more details, refer to
Don't check for duplicate abstract components in the same stack from different stack manifests. Abstract components are never provisioned and serve as blueprints for real components. This is an update (follow up) to the previous PRs:
The
--include-dependents
flag allows including dependencies for the affected componentsIf the command-line flag
--include-dependents=true
is passed to theatmos describe affected
command, and there are other components that depend on the affected components in the stack, the command will include adependents
property (list) for each affected component. Thedependents
property is hierarchical - each component in the list will also contain adependents
property if that component has dependent components as well.For example, suppose that we have the following configuration for the Atmos components
component-1
,component-2
andcomponent-3
in the stackplat-ue2-dev
:In the above configuration,
component-3
depends oncomponent-2
, whereascomponent-2
depends oncomponent-1
.If all the components are affected (modified) in the current working branch, the
atmos describe affected --include-dependents=true
command will produce the following result:The
component-1
component does not depend on any other component, and therefore it has theincluded_in_dependents
attribute set tofalse
. Thecomponent-2
andcomponent-3
components depend on other components and are included in thedependents
property of the other components, and hence theincluded_in_dependents
attribute is set totrue
.When processing the above output, you might decide to not plan/apply the
component-2
andcomponent-3
components since they are in thedependents
property of thecomponent-1
component. Instead, you might just triggercomponent-1
and thencomponent-2
andcomponent-3
in the order of dependencies.v1.77.0
Compare Source
Update `atmos validate stacks` command @aknysh (#611)
what
atmos validate stacks
commandwhy
When checking for misconfiguration and duplication of components in stacks, throw errors only if the duplicate component configurations in the same stack are different (this will allow importing the base default/abstract components into many stack manifest files)
The
atmos validate stacks
command check the followingAll YAML manifest files for YAML errors and inconsistencies
All imports: if they are configured correctly, have valid data types, and point to existing manifest files
Schema: if all sections in all YAML manifest files are correctly configured and have valid data types
Misconfiguration and duplication of components in stacks. If the same Atmos component in the same Atmos stack is defined in more than one stack manifest file, and the component configurations are different, an error message will be displayed similar to the following:
notes
v1.76.0
Compare Source
Add Atmos manifest lists merge strategies @aknysh (#609)
what
Settings
section in CLI Configurationwhy
Allow using the following list merge strategies in Atmos stack manifests:
replace
- Most recent list imported wins (the default behavior).append
- The sequence of lists is appended in the same order as imports.merge
- The items in the destination list are deep-merged with the items in the source list. The items in the source list take precedence. The items are processed starting from the first up to the length of the source list (the remaining items are not processed). If the source and destination lists have the same length, all items in the destination lists are deep-merged with all items in the source list.The list merging strategies are configured in
atmos.yaml
CLI config file in thesettings.list_merge_strategy
sectionv1.75.0
Compare Source
Improve `atmos validate stacks` and `atmos describe affected` commands @aknysh (#608)
what
atmos validate stacks
andatmos describe affected
commandsatmos validate stacks
alias
: Multiple Provider Configuration in Atmos Manifestswhy
atmos validate stacks
now detects if the same component in the same stack are defined in more than one Atmos stack manifest files. If such a misconfiguration is detected, the following error is shown:atmos describe affected
now has better error messages and also executesatmos validate stacks
before detecting the affected components and stacks. This prevents the issue when the same component in the same stack is defined in more than one stack manifest file, and the command used one file from the current local branch and the other file from the target branch, resulting in drift in affected components and stacks. Since this is a stack misconfiguration and is not permitted,atmos describe affected
will display the error and exitalias
: Multiple Provider Configuration in Atmos ManifestsAtmos allows you to define multiple configurations for the same provider using a list of provider blocks and the
alias
meta-argument.The generated
providers_override.tf.json
file will have a list of provider configurations, and Terraform will use and override the providers as long as the aliased providers are defined in the Terraform component.For example:
Use Darker Theme, Add File Component @osterman (#607)
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 becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.