From 1d08e1ba5cf6e86262c006a07544f799ab84fc3f Mon Sep 17 00:00:00 2001 From: milldr Date: Tue, 6 May 2025 17:01:17 -0400 Subject: [PATCH 1/9] added screengrabs --- .github/workflows/screengrabs.yaml | 65 ++ .../docs-generate/terraform/README.md | 653 ++++++++++++++++++ 2 files changed, 718 insertions(+) create mode 100644 .github/workflows/screengrabs.yaml create mode 100644 tests/fixtures/scenarios/docs-generate/terraform/README.md diff --git a/.github/workflows/screengrabs.yaml b/.github/workflows/screengrabs.yaml new file mode 100644 index 000000000..a2d3061ed --- /dev/null +++ b/.github/workflows/screengrabs.yaml @@ -0,0 +1,65 @@ +name: Screengrab +description: Generate screengrabs for Atmos documentation +on: + workflow_dispatch: + +env: + TERM: "xterm-256color" + COLORTERM: "truecolor" + LANG: "en_US.UTF-8" + ATMOS_LOGS_LEVEL: "Info" + +jobs: + screengrabs: + needs: [prepare] + runs-on: ubuntu-latest + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y aha util-linux make jq bat + sudo ln -s /usr/bin/batcat /usr/bin/bat + + - name: Set Git Preferences for windows + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Atmos + uses: jaxxstorm/action-install-gh-release@v2.1.0 + with: + repo: cloudposse/atmos + tag: ${{ needs.prepare.outputs.version }} + chmod: 0755 + extension-matching: disable + rename-to: atmos + + - uses: hashicorp/setup-terraform@v3 + with: + terraform_version: ${{ env.TERRAFORM_VERSION }} + terraform_wrapper: false + + - name: Run make build-all install + run: | + make -C demo/screengrabs build-all install + git add -A + git status + + - name: Create or update PR + uses: peter-evans/create-pull-request@v7 + with: + token: ${{ secrets.GITHUB_TOKEN }} + branch: "chore/update-build-screengrabs-for-${{ needs.prepare.outputs.version }}" + title: "Update screengrabs for ${{ needs.prepare.outputs.version }}" + delete-branch: true + sign-commits: true + commit-message: | + chore: update screengrabs for ${{ needs.prepare.outputs.version }} + body: | + This PR updates the screengrabs for Atmos version ${{ needs.prepare.outputs.version }}. + base: main + labels: "no-release" + diff --git a/tests/fixtures/scenarios/docs-generate/terraform/README.md b/tests/fixtures/scenarios/docs-generate/terraform/README.md new file mode 100644 index 000000000..07c431ca5 --- /dev/null +++ b/tests/fixtures/scenarios/docs-generate/terraform/README.md @@ -0,0 +1,653 @@ +My Example Atmos Terraform Module + +Test Terraform. + + +Extra info: Testing Terraform Docs integration + + + +## Terraform Docs +## Requirements + +The following requirements are needed by this module: + +- [terraform](#requirement\_terraform) (>= 1.0.0) + +- [aws](#requirement\_aws) (>= 4.9.0) + +## Providers + +The following providers are used by this module: + +- [aws](#provider\_aws) (>= 4.9.0) + +## Modules + +The following Modules are called: + +### [endpoint\_security\_groups](#module\_endpoint\_security\_groups) + +Source: cloudposse/security-group/aws + +Version: 2.2.0 + +### [subnets](#module\_subnets) + +Source: cloudposse/dynamic-subnets/aws + +Version: 2.3.0 + +### [this](#module\_this) + +Source: cloudposse/label/null + +Version: 0.25.0 + +### [utils](#module\_utils) + +Source: cloudposse/utils/aws + +Version: 1.4.0 + +### [vpc](#module\_vpc) + +Source: cloudposse/vpc/aws + +Version: 2.1.1 + +### [vpc\_endpoints](#module\_vpc\_endpoints) + +Source: cloudposse/vpc/aws//modules/vpc-endpoints + +Version: 2.1.0 + +### [vpc\_flow\_logs\_bucket](#module\_vpc\_flow\_logs\_bucket) + +Source: cloudposse/stack-config/yaml//modules/remote-state + +Version: 1.5.0 + +## Resources + +The following resources are used by this module: + +- [aws_flow_log.default](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/flow_log) (resource) +- [aws_shield_protection.nat_eip_shield_protection](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/shield_protection) (resource) +- [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) (data source) +- [aws_eip.eip](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eip) (data source) + +## Required Inputs + +The following input variables are required: + +### [region](#input\_region) + +Description: AWS Region + +Type: `string` + +### [subnet\_type\_tag\_key](#input\_subnet\_type\_tag\_key) + +Description: Key for subnet type tag to provide information about the type of subnets, e.g. `cpco/subnet/type=private` or `cpcp/subnet/type=public` + +Type: `string` + +## Optional Inputs + +The following input variables are optional (have default values): + +### [additional\_tag\_map](#input\_additional\_tag\_map) + +Description: Additional key-value pairs to add to each map in `tags_as_list_of_maps`. Not added to `tags` or `id`. +This is for some rare cases where resources want additional configuration of tags +and therefore take a list of maps with tag key, value, and additional configuration. + +Type: `map(string)` + +Default: `{}` + +### [assign\_generated\_ipv6\_cidr\_block](#input\_assign\_generated\_ipv6\_cidr\_block) + +Description: When `true`, assign AWS generated IPv6 CIDR block to the VPC. Conflicts with `ipv6_ipam_pool_id`. + +Type: `bool` + +Default: `false` + +### [attributes](#input\_attributes) + +Description: ID element. Additional attributes (e.g. `workers` or `cluster`) to add to `id`, +in the order they appear in the list. New attributes are appended to the +end of the list. The elements of the list are joined by the `delimiter` +and treated as a single ID element. + +Type: `list(string)` + +Default: `[]` + +### [availability\_zone\_ids](#input\_availability\_zone\_ids) + +Description: List of Availability Zones IDs where subnets will be created. Overrides `availability_zones`. +Can be the full name, e.g. `use1-az1`, or just the part after the AZ ID region code, e.g. `-az1`, +to allow reusable values across regions. Consider contention for resources and spot pricing in each AZ when selecting. +Useful in some regions when using only some AZs and you want to use the same ones across multiple accounts. + +Type: `list(string)` + +Default: `[]` + +### [availability\_zones](#input\_availability\_zones) + +Description: List of Availability Zones (AZs) where subnets will be created. Ignored when `availability_zone_ids` is set. +Can be the full name, e.g. `us-east-1a`, or just the part after the region, e.g. `a` to allow reusable values across regions. +The order of zones in the list ***must be stable*** or else Terraform will continually make changes. +If no AZs are specified, then `max_subnet_count` AZs will be selected in alphabetical order. +If `max_subnet_count > 0` and `length(var.availability_zones) > max_subnet_count`, the list +will be truncated. We recommend setting `availability_zones` and `max_subnet_count` explicitly as constant +(not computed) values for predictability, consistency, and stability. + +Type: `list(string)` + +Default: `[]` + +### [context](#input\_context) + +Description: Single object for setting entire context at once. +See description of individual variables for details. +Leave string and numeric variables as `null` to use default value. +Individual variable settings (non-null) override settings in context object, +except for attributes, tags, and additional\_tag\_map, which are merged. + +Type: `any` + +Default: + +```json +{ + "additional_tag_map": {}, + "attributes": [], + "delimiter": null, + "descriptor_formats": {}, + "enabled": true, + "environment": null, + "id_length_limit": null, + "label_key_case": null, + "label_order": [], + "label_value_case": null, + "labels_as_tags": [ + "unset" + ], + "name": null, + "namespace": null, + "regex_replace_chars": null, + "stage": null, + "tags": {}, + "tenant": null +} +``` + +### [delimiter](#input\_delimiter) + +Description: Delimiter to be used between ID elements. +Defaults to `-` (hyphen). Set to `""` to use no delimiter at all. + +Type: `string` + +Default: `null` + +### [descriptor\_formats](#input\_descriptor\_formats) + +Description: Describe additional descriptors to be output in the `descriptors` output map. +Map of maps. Keys are names of descriptors. Values are maps of the form +`{ + format = string + labels = list(string) +}` +(Type is `any` so the map values can later be enhanced to provide additional options.) +`format` is a Terraform format string to be passed to the `format()` function. +`labels` is a list of labels, in order, to pass to `format()` function. +Label values will be normalized before being passed to `format()` so they will be +identical to how they appear in `id`. +Default is `{}` (`descriptors` output will be empty). + +Type: `any` + +Default: `{}` + +### [enabled](#input\_enabled) + +Description: Set to false to prevent the module from creating any resources + +Type: `bool` + +Default: `null` + +### [environment](#input\_environment) + +Description: ID element. Usually used for region e.g. 'uw2', 'us-west-2', OR role 'prod', 'staging', 'dev', 'UAT' + +Type: `string` + +Default: `null` + +### [gateway\_vpc\_endpoints](#input\_gateway\_vpc\_endpoints) + +Description: A list of Gateway VPC Endpoints to provision into the VPC. Only valid values are "dynamodb" and "s3". + +Type: `set(string)` + +Default: `[]` + +### [id\_length\_limit](#input\_id\_length\_limit) + +Description: Limit `id` to this many characters (minimum 6). +Set to `0` for unlimited length. +Set to `null` for keep the existing setting, which defaults to `0`. +Does not affect `id_full`. + +Type: `number` + +Default: `null` + +### [interface\_vpc\_endpoints](#input\_interface\_vpc\_endpoints) + +Description: A list of Interface VPC Endpoints to provision into the VPC. + +Type: `set(string)` + +Default: `[]` + +### [ipv4\_additional\_cidr\_block\_associations](#input\_ipv4\_additional\_cidr\_block\_associations) + +Description: IPv4 CIDR blocks to assign to the VPC. +`ipv4_cidr_block` can be set explicitly, or set to `null` with the CIDR block derived from `ipv4_ipam_pool_id` using `ipv4_netmask_length`. +Map keys must be known at `plan` time, and are only used to track changes. + +Type: + +```hcl +map(object({ + ipv4_cidr_block = string + ipv4_ipam_pool_id = string + ipv4_netmask_length = number + })) +``` + +Default: `{}` + +### [ipv4\_cidr\_block\_association\_timeouts](#input\_ipv4\_cidr\_block\_association\_timeouts) + +Description: Timeouts (in `go` duration format) for creating and destroying IPv4 CIDR block associations + +Type: + +```hcl +object({ + create = string + delete = string + }) +``` + +Default: `null` + +### [ipv4\_cidrs](#input\_ipv4\_cidrs) + +Description: Lists of CIDRs to assign to subnets. Order of CIDRs in the lists must not change over time. +Lists may contain more CIDRs than needed. + +Type: + +```hcl +list(object({ + private = list(string) + public = list(string) + })) +``` + +Default: `[]` + +### [ipv4\_primary\_cidr\_block](#input\_ipv4\_primary\_cidr\_block) + +Description: The primary IPv4 CIDR block for the VPC. +Either `ipv4_primary_cidr_block` or `ipv4_primary_cidr_block_association` must be set, but not both. + +Type: `string` + +Default: `null` + +### [ipv4\_primary\_cidr\_block\_association](#input\_ipv4\_primary\_cidr\_block\_association) + +Description: Configuration of the VPC's primary IPv4 CIDR block via IPAM. Conflicts with `ipv4_primary_cidr_block`. +One of `ipv4_primary_cidr_block` or `ipv4_primary_cidr_block_association` must be set. +Additional CIDR blocks can be set via `ipv4_additional_cidr_block_associations`. + +Type: + +```hcl +object({ + ipv4_ipam_pool_id = string + ipv4_netmask_length = number + }) +``` + +Default: `null` + +### [label\_key\_case](#input\_label\_key\_case) + +Description: Controls the letter case of the `tags` keys (label names) for tags generated by this module. +Does not affect keys of tags passed in via the `tags` input. +Possible values: `lower`, `title`, `upper`. +Default value: `title`. + +Type: `string` + +Default: `null` + +### [label\_order](#input\_label\_order) + +Description: The order in which the labels (ID elements) appear in the `id`. +Defaults to ["namespace", "environment", "stage", "name", "attributes"]. +You can omit any of the 6 labels ("tenant" is the 6th), but at least one must be present. + +Type: `list(string)` + +Default: `null` + +### [label\_value\_case](#input\_label\_value\_case) + +Description: Controls the letter case of ID elements (labels) as included in `id`, +set as tag values, and output by this module individually. +Does not affect values of tags passed in via the `tags` input. +Possible values: `lower`, `title`, `upper` and `none` (no transformation). +Set this to `title` and set `delimiter` to `""` to yield Pascal Case IDs. +Default value: `lower`. + +Type: `string` + +Default: `null` + +### [labels\_as\_tags](#input\_labels\_as\_tags) + +Description: Set of labels (ID elements) to include as tags in the `tags` output. +Default is to include all labels. +Tags with empty values will not be included in the `tags` output. +Set to `[]` to suppress all generated tags. +**Notes:** + The value of the `name` tag, if included, will be the `id`, not the `name`. + Unlike other `null-label` inputs, the initial setting of `labels_as_tags` cannot be + changed in later chained modules. Attempts to change it will be silently ignored. + +Type: `set(string)` + +Default: + +```json +[ + "default" +] +``` + +### [map\_public\_ip\_on\_launch](#input\_map\_public\_ip\_on\_launch) + +Description: Instances launched into a public subnet should be assigned a public IP address + +Type: `bool` + +Default: `true` + +### [max\_subnet\_count](#input\_max\_subnet\_count) + +Description: Sets the maximum amount of subnets to deploy. 0 will deploy a subnet for every provided availability zone (in `region_availability_zones` variable) within the region + +Type: `number` + +Default: `0` + +### [name](#input\_name) + +Description: ID element. Usually the component or solution name, e.g. 'app' or 'jenkins'. +This is the only ID element not also included as a `tag`. +The "name" tag is set to the full `id` string. There is no tag with the value of the `name` input. + +Type: `string` + +Default: `null` + +### [namespace](#input\_namespace) + +Description: ID element. Usually an abbreviation of your organization name, e.g. 'eg' or 'cp', to help ensure generated IDs are globally unique + +Type: `string` + +Default: `null` + +### [nat\_eip\_aws\_shield\_protection\_enabled](#input\_nat\_eip\_aws\_shield\_protection\_enabled) + +Description: Enable or disable AWS Shield Advanced protection for NAT EIPs. If set to 'true', a subscription to AWS Shield Advanced must exist in this account. + +Type: `bool` + +Default: `false` + +### [nat\_gateway\_enabled](#input\_nat\_gateway\_enabled) + +Description: Flag to enable/disable NAT gateways + +Type: `bool` + +Default: `true` + +### [nat\_instance\_ami\_id](#input\_nat\_instance\_ami\_id) + +Description: A list optionally containing the ID of the AMI to use for the NAT instance. +If the list is empty (the default), the latest official AWS NAT instance AMI +will be used. NOTE: The Official NAT instance AMI is being phased out and +does not support NAT64. Use of a NAT gateway is recommended instead. + +Type: `list(string)` + +Default: `[]` + +### [nat\_instance\_enabled](#input\_nat\_instance\_enabled) + +Description: Flag to enable/disable NAT instances + +Type: `bool` + +Default: `false` + +### [nat\_instance\_type](#input\_nat\_instance\_type) + +Description: NAT Instance type + +Type: `string` + +Default: `"t3.micro"` + +### [public\_subnets\_enabled](#input\_public\_subnets\_enabled) + +Description: If false, do not create public subnets. +Since NAT gateways and instances must be created in public subnets, these will also not be created when `false`. + +Type: `bool` + +Default: `true` + +### [regex\_replace\_chars](#input\_regex\_replace\_chars) + +Description: Terraform regular expression (regex) string. +Characters matching the regex will be removed from the ID elements. +If not set, `"/[^a-zA-Z0-9-]/"` is used to remove all characters other than hyphens, letters and digits. + +Type: `string` + +Default: `null` + +### [stage](#input\_stage) + +Description: ID element. Usually used to indicate role, e.g. 'prod', 'staging', 'source', 'build', 'test', 'deploy', 'release' + +Type: `string` + +Default: `null` + +### [tags](#input\_tags) + +Description: Additional tags (e.g. `{'BusinessUnit': 'XYZ'}`). +Neither the tag keys nor the tag values will be modified by this module. + +Type: `map(string)` + +Default: `{}` + +### [tenant](#input\_tenant) + +Description: ID element \_(Rarely used, not included by default)\_. A customer identifier, indicating who this instance of a resource is for + +Type: `string` + +Default: `null` + +### [vpc\_flow\_logs\_bucket\_environment\_name](#input\_vpc\_flow\_logs\_bucket\_environment\_name) + +Description: The name of the environment where the VPC Flow Logs bucket is provisioned + +Type: `string` + +Default: `""` + +### [vpc\_flow\_logs\_bucket\_stage\_name](#input\_vpc\_flow\_logs\_bucket\_stage\_name) + +Description: The stage (account) name where the VPC Flow Logs bucket is provisioned + +Type: `string` + +Default: `""` + +### [vpc\_flow\_logs\_bucket\_tenant\_name](#input\_vpc\_flow\_logs\_bucket\_tenant\_name) + +Description: The name of the tenant where the VPC Flow Logs bucket is provisioned. + +If the `tenant` label is not used, leave this as `null`. + +Type: `string` + +Default: `null` + +### [vpc\_flow\_logs\_enabled](#input\_vpc\_flow\_logs\_enabled) + +Description: Enable or disable the VPC Flow Logs + +Type: `bool` + +Default: `true` + +### [vpc\_flow\_logs\_log\_destination\_type](#input\_vpc\_flow\_logs\_log\_destination\_type) + +Description: The type of the logging destination. Valid values: `cloud-watch-logs`, `s3` + +Type: `string` + +Default: `"s3"` + +### [vpc\_flow\_logs\_traffic\_type](#input\_vpc\_flow\_logs\_traffic\_type) + +Description: The type of traffic to capture. Valid values: `ACCEPT`, `REJECT`, `ALL` + +Type: `string` + +Default: `"ALL"` + +## Outputs + +The following outputs are exported: + +### [availability\_zones](#output\_availability\_zones) + +Description: List of Availability Zones where subnets were created + +### [az\_private\_subnets\_map](#output\_az\_private\_subnets\_map) + +Description: Map of AZ names to list of private subnet IDs in the AZs + +### [az\_public\_subnets\_map](#output\_az\_public\_subnets\_map) + +Description: Map of AZ names to list of public subnet IDs in the AZs + +### [interface\_vpc\_endpoints](#output\_interface\_vpc\_endpoints) + +Description: List of Interface VPC Endpoints in this VPC. + +### [max\_subnet\_count](#output\_max\_subnet\_count) + +Description: Maximum allowed number of subnets before all subnet CIDRs need to be recomputed + +### [nat\_eip\_protections](#output\_nat\_eip\_protections) + +Description: List of AWS Shield Advanced Protections for NAT Elastic IPs. + +### [nat\_gateway\_ids](#output\_nat\_gateway\_ids) + +Description: NAT Gateway IDs + +### [nat\_gateway\_public\_ips](#output\_nat\_gateway\_public\_ips) + +Description: NAT Gateway public IPs + +### [nat\_instance\_ids](#output\_nat\_instance\_ids) + +Description: NAT Instance IDs + +### [private\_route\_table\_ids](#output\_private\_route\_table\_ids) + +Description: Private subnet route table IDs + +### [private\_subnet\_cidrs](#output\_private\_subnet\_cidrs) + +Description: Private subnet CIDRs + +### [private\_subnet\_ids](#output\_private\_subnet\_ids) + +Description: Private subnet IDs + +### [public\_route\_table\_ids](#output\_public\_route\_table\_ids) + +Description: Public subnet route table IDs + +### [public\_subnet\_cidrs](#output\_public\_subnet\_cidrs) + +Description: Public subnet CIDRs + +### [public\_subnet\_ids](#output\_public\_subnet\_ids) + +Description: Public subnet IDs + +### [route\_tables](#output\_route\_tables) + +Description: Route tables info map + +### [subnets](#output\_subnets) + +Description: Subnets info map + +### [vpc](#output\_vpc) + +Description: VPC info map + +### [vpc\_cidr](#output\_vpc\_cidr) + +Description: VPC CIDR + +### [vpc\_default\_network\_acl\_id](#output\_vpc\_default\_network\_acl\_id) + +Description: The ID of the network ACL created by default on VPC creation + +### [vpc\_default\_security\_group\_id](#output\_vpc\_default\_security\_group\_id) + +Description: The ID of the security group created by default on VPC creation + +### [vpc\_id](#output\_vpc\_id) + +Description: VPC ID + From 653c8fb79726ba9f0f3bfe79804cf8418045fcbf Mon Sep 17 00:00:00 2001 From: milldr Date: Tue, 6 May 2025 17:01:30 -0400 Subject: [PATCH 2/9] added screengrabs --- .../docs-generate/terraform/README.md | 653 ------------------ 1 file changed, 653 deletions(-) delete mode 100644 tests/fixtures/scenarios/docs-generate/terraform/README.md diff --git a/tests/fixtures/scenarios/docs-generate/terraform/README.md b/tests/fixtures/scenarios/docs-generate/terraform/README.md deleted file mode 100644 index 07c431ca5..000000000 --- a/tests/fixtures/scenarios/docs-generate/terraform/README.md +++ /dev/null @@ -1,653 +0,0 @@ -My Example Atmos Terraform Module - -Test Terraform. - - -Extra info: Testing Terraform Docs integration - - - -## Terraform Docs -## Requirements - -The following requirements are needed by this module: - -- [terraform](#requirement\_terraform) (>= 1.0.0) - -- [aws](#requirement\_aws) (>= 4.9.0) - -## Providers - -The following providers are used by this module: - -- [aws](#provider\_aws) (>= 4.9.0) - -## Modules - -The following Modules are called: - -### [endpoint\_security\_groups](#module\_endpoint\_security\_groups) - -Source: cloudposse/security-group/aws - -Version: 2.2.0 - -### [subnets](#module\_subnets) - -Source: cloudposse/dynamic-subnets/aws - -Version: 2.3.0 - -### [this](#module\_this) - -Source: cloudposse/label/null - -Version: 0.25.0 - -### [utils](#module\_utils) - -Source: cloudposse/utils/aws - -Version: 1.4.0 - -### [vpc](#module\_vpc) - -Source: cloudposse/vpc/aws - -Version: 2.1.1 - -### [vpc\_endpoints](#module\_vpc\_endpoints) - -Source: cloudposse/vpc/aws//modules/vpc-endpoints - -Version: 2.1.0 - -### [vpc\_flow\_logs\_bucket](#module\_vpc\_flow\_logs\_bucket) - -Source: cloudposse/stack-config/yaml//modules/remote-state - -Version: 1.5.0 - -## Resources - -The following resources are used by this module: - -- [aws_flow_log.default](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/flow_log) (resource) -- [aws_shield_protection.nat_eip_shield_protection](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/shield_protection) (resource) -- [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) (data source) -- [aws_eip.eip](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eip) (data source) - -## Required Inputs - -The following input variables are required: - -### [region](#input\_region) - -Description: AWS Region - -Type: `string` - -### [subnet\_type\_tag\_key](#input\_subnet\_type\_tag\_key) - -Description: Key for subnet type tag to provide information about the type of subnets, e.g. `cpco/subnet/type=private` or `cpcp/subnet/type=public` - -Type: `string` - -## Optional Inputs - -The following input variables are optional (have default values): - -### [additional\_tag\_map](#input\_additional\_tag\_map) - -Description: Additional key-value pairs to add to each map in `tags_as_list_of_maps`. Not added to `tags` or `id`. -This is for some rare cases where resources want additional configuration of tags -and therefore take a list of maps with tag key, value, and additional configuration. - -Type: `map(string)` - -Default: `{}` - -### [assign\_generated\_ipv6\_cidr\_block](#input\_assign\_generated\_ipv6\_cidr\_block) - -Description: When `true`, assign AWS generated IPv6 CIDR block to the VPC. Conflicts with `ipv6_ipam_pool_id`. - -Type: `bool` - -Default: `false` - -### [attributes](#input\_attributes) - -Description: ID element. Additional attributes (e.g. `workers` or `cluster`) to add to `id`, -in the order they appear in the list. New attributes are appended to the -end of the list. The elements of the list are joined by the `delimiter` -and treated as a single ID element. - -Type: `list(string)` - -Default: `[]` - -### [availability\_zone\_ids](#input\_availability\_zone\_ids) - -Description: List of Availability Zones IDs where subnets will be created. Overrides `availability_zones`. -Can be the full name, e.g. `use1-az1`, or just the part after the AZ ID region code, e.g. `-az1`, -to allow reusable values across regions. Consider contention for resources and spot pricing in each AZ when selecting. -Useful in some regions when using only some AZs and you want to use the same ones across multiple accounts. - -Type: `list(string)` - -Default: `[]` - -### [availability\_zones](#input\_availability\_zones) - -Description: List of Availability Zones (AZs) where subnets will be created. Ignored when `availability_zone_ids` is set. -Can be the full name, e.g. `us-east-1a`, or just the part after the region, e.g. `a` to allow reusable values across regions. -The order of zones in the list ***must be stable*** or else Terraform will continually make changes. -If no AZs are specified, then `max_subnet_count` AZs will be selected in alphabetical order. -If `max_subnet_count > 0` and `length(var.availability_zones) > max_subnet_count`, the list -will be truncated. We recommend setting `availability_zones` and `max_subnet_count` explicitly as constant -(not computed) values for predictability, consistency, and stability. - -Type: `list(string)` - -Default: `[]` - -### [context](#input\_context) - -Description: Single object for setting entire context at once. -See description of individual variables for details. -Leave string and numeric variables as `null` to use default value. -Individual variable settings (non-null) override settings in context object, -except for attributes, tags, and additional\_tag\_map, which are merged. - -Type: `any` - -Default: - -```json -{ - "additional_tag_map": {}, - "attributes": [], - "delimiter": null, - "descriptor_formats": {}, - "enabled": true, - "environment": null, - "id_length_limit": null, - "label_key_case": null, - "label_order": [], - "label_value_case": null, - "labels_as_tags": [ - "unset" - ], - "name": null, - "namespace": null, - "regex_replace_chars": null, - "stage": null, - "tags": {}, - "tenant": null -} -``` - -### [delimiter](#input\_delimiter) - -Description: Delimiter to be used between ID elements. -Defaults to `-` (hyphen). Set to `""` to use no delimiter at all. - -Type: `string` - -Default: `null` - -### [descriptor\_formats](#input\_descriptor\_formats) - -Description: Describe additional descriptors to be output in the `descriptors` output map. -Map of maps. Keys are names of descriptors. Values are maps of the form -`{ - format = string - labels = list(string) -}` -(Type is `any` so the map values can later be enhanced to provide additional options.) -`format` is a Terraform format string to be passed to the `format()` function. -`labels` is a list of labels, in order, to pass to `format()` function. -Label values will be normalized before being passed to `format()` so they will be -identical to how they appear in `id`. -Default is `{}` (`descriptors` output will be empty). - -Type: `any` - -Default: `{}` - -### [enabled](#input\_enabled) - -Description: Set to false to prevent the module from creating any resources - -Type: `bool` - -Default: `null` - -### [environment](#input\_environment) - -Description: ID element. Usually used for region e.g. 'uw2', 'us-west-2', OR role 'prod', 'staging', 'dev', 'UAT' - -Type: `string` - -Default: `null` - -### [gateway\_vpc\_endpoints](#input\_gateway\_vpc\_endpoints) - -Description: A list of Gateway VPC Endpoints to provision into the VPC. Only valid values are "dynamodb" and "s3". - -Type: `set(string)` - -Default: `[]` - -### [id\_length\_limit](#input\_id\_length\_limit) - -Description: Limit `id` to this many characters (minimum 6). -Set to `0` for unlimited length. -Set to `null` for keep the existing setting, which defaults to `0`. -Does not affect `id_full`. - -Type: `number` - -Default: `null` - -### [interface\_vpc\_endpoints](#input\_interface\_vpc\_endpoints) - -Description: A list of Interface VPC Endpoints to provision into the VPC. - -Type: `set(string)` - -Default: `[]` - -### [ipv4\_additional\_cidr\_block\_associations](#input\_ipv4\_additional\_cidr\_block\_associations) - -Description: IPv4 CIDR blocks to assign to the VPC. -`ipv4_cidr_block` can be set explicitly, or set to `null` with the CIDR block derived from `ipv4_ipam_pool_id` using `ipv4_netmask_length`. -Map keys must be known at `plan` time, and are only used to track changes. - -Type: - -```hcl -map(object({ - ipv4_cidr_block = string - ipv4_ipam_pool_id = string - ipv4_netmask_length = number - })) -``` - -Default: `{}` - -### [ipv4\_cidr\_block\_association\_timeouts](#input\_ipv4\_cidr\_block\_association\_timeouts) - -Description: Timeouts (in `go` duration format) for creating and destroying IPv4 CIDR block associations - -Type: - -```hcl -object({ - create = string - delete = string - }) -``` - -Default: `null` - -### [ipv4\_cidrs](#input\_ipv4\_cidrs) - -Description: Lists of CIDRs to assign to subnets. Order of CIDRs in the lists must not change over time. -Lists may contain more CIDRs than needed. - -Type: - -```hcl -list(object({ - private = list(string) - public = list(string) - })) -``` - -Default: `[]` - -### [ipv4\_primary\_cidr\_block](#input\_ipv4\_primary\_cidr\_block) - -Description: The primary IPv4 CIDR block for the VPC. -Either `ipv4_primary_cidr_block` or `ipv4_primary_cidr_block_association` must be set, but not both. - -Type: `string` - -Default: `null` - -### [ipv4\_primary\_cidr\_block\_association](#input\_ipv4\_primary\_cidr\_block\_association) - -Description: Configuration of the VPC's primary IPv4 CIDR block via IPAM. Conflicts with `ipv4_primary_cidr_block`. -One of `ipv4_primary_cidr_block` or `ipv4_primary_cidr_block_association` must be set. -Additional CIDR blocks can be set via `ipv4_additional_cidr_block_associations`. - -Type: - -```hcl -object({ - ipv4_ipam_pool_id = string - ipv4_netmask_length = number - }) -``` - -Default: `null` - -### [label\_key\_case](#input\_label\_key\_case) - -Description: Controls the letter case of the `tags` keys (label names) for tags generated by this module. -Does not affect keys of tags passed in via the `tags` input. -Possible values: `lower`, `title`, `upper`. -Default value: `title`. - -Type: `string` - -Default: `null` - -### [label\_order](#input\_label\_order) - -Description: The order in which the labels (ID elements) appear in the `id`. -Defaults to ["namespace", "environment", "stage", "name", "attributes"]. -You can omit any of the 6 labels ("tenant" is the 6th), but at least one must be present. - -Type: `list(string)` - -Default: `null` - -### [label\_value\_case](#input\_label\_value\_case) - -Description: Controls the letter case of ID elements (labels) as included in `id`, -set as tag values, and output by this module individually. -Does not affect values of tags passed in via the `tags` input. -Possible values: `lower`, `title`, `upper` and `none` (no transformation). -Set this to `title` and set `delimiter` to `""` to yield Pascal Case IDs. -Default value: `lower`. - -Type: `string` - -Default: `null` - -### [labels\_as\_tags](#input\_labels\_as\_tags) - -Description: Set of labels (ID elements) to include as tags in the `tags` output. -Default is to include all labels. -Tags with empty values will not be included in the `tags` output. -Set to `[]` to suppress all generated tags. -**Notes:** - The value of the `name` tag, if included, will be the `id`, not the `name`. - Unlike other `null-label` inputs, the initial setting of `labels_as_tags` cannot be - changed in later chained modules. Attempts to change it will be silently ignored. - -Type: `set(string)` - -Default: - -```json -[ - "default" -] -``` - -### [map\_public\_ip\_on\_launch](#input\_map\_public\_ip\_on\_launch) - -Description: Instances launched into a public subnet should be assigned a public IP address - -Type: `bool` - -Default: `true` - -### [max\_subnet\_count](#input\_max\_subnet\_count) - -Description: Sets the maximum amount of subnets to deploy. 0 will deploy a subnet for every provided availability zone (in `region_availability_zones` variable) within the region - -Type: `number` - -Default: `0` - -### [name](#input\_name) - -Description: ID element. Usually the component or solution name, e.g. 'app' or 'jenkins'. -This is the only ID element not also included as a `tag`. -The "name" tag is set to the full `id` string. There is no tag with the value of the `name` input. - -Type: `string` - -Default: `null` - -### [namespace](#input\_namespace) - -Description: ID element. Usually an abbreviation of your organization name, e.g. 'eg' or 'cp', to help ensure generated IDs are globally unique - -Type: `string` - -Default: `null` - -### [nat\_eip\_aws\_shield\_protection\_enabled](#input\_nat\_eip\_aws\_shield\_protection\_enabled) - -Description: Enable or disable AWS Shield Advanced protection for NAT EIPs. If set to 'true', a subscription to AWS Shield Advanced must exist in this account. - -Type: `bool` - -Default: `false` - -### [nat\_gateway\_enabled](#input\_nat\_gateway\_enabled) - -Description: Flag to enable/disable NAT gateways - -Type: `bool` - -Default: `true` - -### [nat\_instance\_ami\_id](#input\_nat\_instance\_ami\_id) - -Description: A list optionally containing the ID of the AMI to use for the NAT instance. -If the list is empty (the default), the latest official AWS NAT instance AMI -will be used. NOTE: The Official NAT instance AMI is being phased out and -does not support NAT64. Use of a NAT gateway is recommended instead. - -Type: `list(string)` - -Default: `[]` - -### [nat\_instance\_enabled](#input\_nat\_instance\_enabled) - -Description: Flag to enable/disable NAT instances - -Type: `bool` - -Default: `false` - -### [nat\_instance\_type](#input\_nat\_instance\_type) - -Description: NAT Instance type - -Type: `string` - -Default: `"t3.micro"` - -### [public\_subnets\_enabled](#input\_public\_subnets\_enabled) - -Description: If false, do not create public subnets. -Since NAT gateways and instances must be created in public subnets, these will also not be created when `false`. - -Type: `bool` - -Default: `true` - -### [regex\_replace\_chars](#input\_regex\_replace\_chars) - -Description: Terraform regular expression (regex) string. -Characters matching the regex will be removed from the ID elements. -If not set, `"/[^a-zA-Z0-9-]/"` is used to remove all characters other than hyphens, letters and digits. - -Type: `string` - -Default: `null` - -### [stage](#input\_stage) - -Description: ID element. Usually used to indicate role, e.g. 'prod', 'staging', 'source', 'build', 'test', 'deploy', 'release' - -Type: `string` - -Default: `null` - -### [tags](#input\_tags) - -Description: Additional tags (e.g. `{'BusinessUnit': 'XYZ'}`). -Neither the tag keys nor the tag values will be modified by this module. - -Type: `map(string)` - -Default: `{}` - -### [tenant](#input\_tenant) - -Description: ID element \_(Rarely used, not included by default)\_. A customer identifier, indicating who this instance of a resource is for - -Type: `string` - -Default: `null` - -### [vpc\_flow\_logs\_bucket\_environment\_name](#input\_vpc\_flow\_logs\_bucket\_environment\_name) - -Description: The name of the environment where the VPC Flow Logs bucket is provisioned - -Type: `string` - -Default: `""` - -### [vpc\_flow\_logs\_bucket\_stage\_name](#input\_vpc\_flow\_logs\_bucket\_stage\_name) - -Description: The stage (account) name where the VPC Flow Logs bucket is provisioned - -Type: `string` - -Default: `""` - -### [vpc\_flow\_logs\_bucket\_tenant\_name](#input\_vpc\_flow\_logs\_bucket\_tenant\_name) - -Description: The name of the tenant where the VPC Flow Logs bucket is provisioned. - -If the `tenant` label is not used, leave this as `null`. - -Type: `string` - -Default: `null` - -### [vpc\_flow\_logs\_enabled](#input\_vpc\_flow\_logs\_enabled) - -Description: Enable or disable the VPC Flow Logs - -Type: `bool` - -Default: `true` - -### [vpc\_flow\_logs\_log\_destination\_type](#input\_vpc\_flow\_logs\_log\_destination\_type) - -Description: The type of the logging destination. Valid values: `cloud-watch-logs`, `s3` - -Type: `string` - -Default: `"s3"` - -### [vpc\_flow\_logs\_traffic\_type](#input\_vpc\_flow\_logs\_traffic\_type) - -Description: The type of traffic to capture. Valid values: `ACCEPT`, `REJECT`, `ALL` - -Type: `string` - -Default: `"ALL"` - -## Outputs - -The following outputs are exported: - -### [availability\_zones](#output\_availability\_zones) - -Description: List of Availability Zones where subnets were created - -### [az\_private\_subnets\_map](#output\_az\_private\_subnets\_map) - -Description: Map of AZ names to list of private subnet IDs in the AZs - -### [az\_public\_subnets\_map](#output\_az\_public\_subnets\_map) - -Description: Map of AZ names to list of public subnet IDs in the AZs - -### [interface\_vpc\_endpoints](#output\_interface\_vpc\_endpoints) - -Description: List of Interface VPC Endpoints in this VPC. - -### [max\_subnet\_count](#output\_max\_subnet\_count) - -Description: Maximum allowed number of subnets before all subnet CIDRs need to be recomputed - -### [nat\_eip\_protections](#output\_nat\_eip\_protections) - -Description: List of AWS Shield Advanced Protections for NAT Elastic IPs. - -### [nat\_gateway\_ids](#output\_nat\_gateway\_ids) - -Description: NAT Gateway IDs - -### [nat\_gateway\_public\_ips](#output\_nat\_gateway\_public\_ips) - -Description: NAT Gateway public IPs - -### [nat\_instance\_ids](#output\_nat\_instance\_ids) - -Description: NAT Instance IDs - -### [private\_route\_table\_ids](#output\_private\_route\_table\_ids) - -Description: Private subnet route table IDs - -### [private\_subnet\_cidrs](#output\_private\_subnet\_cidrs) - -Description: Private subnet CIDRs - -### [private\_subnet\_ids](#output\_private\_subnet\_ids) - -Description: Private subnet IDs - -### [public\_route\_table\_ids](#output\_public\_route\_table\_ids) - -Description: Public subnet route table IDs - -### [public\_subnet\_cidrs](#output\_public\_subnet\_cidrs) - -Description: Public subnet CIDRs - -### [public\_subnet\_ids](#output\_public\_subnet\_ids) - -Description: Public subnet IDs - -### [route\_tables](#output\_route\_tables) - -Description: Route tables info map - -### [subnets](#output\_subnets) - -Description: Subnets info map - -### [vpc](#output\_vpc) - -Description: VPC info map - -### [vpc\_cidr](#output\_vpc\_cidr) - -Description: VPC CIDR - -### [vpc\_default\_network\_acl\_id](#output\_vpc\_default\_network\_acl\_id) - -Description: The ID of the network ACL created by default on VPC creation - -### [vpc\_default\_security\_group\_id](#output\_vpc\_default\_security\_group\_id) - -Description: The ID of the security group created by default on VPC creation - -### [vpc\_id](#output\_vpc\_id) - -Description: VPC ID - From 781b2ad02aac9d817744823d46b471214293ff12 Mon Sep 17 00:00:00 2001 From: milldr Date: Tue, 6 May 2025 17:05:26 -0400 Subject: [PATCH 3/9] added screengrabs --- .github/workflows/screengrabs.yaml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/screengrabs.yaml b/.github/workflows/screengrabs.yaml index a2d3061ed..096f31505 100644 --- a/.github/workflows/screengrabs.yaml +++ b/.github/workflows/screengrabs.yaml @@ -10,6 +10,20 @@ env: ATMOS_LOGS_LEVEL: "Info" jobs: + prepare: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Get Atmos version + id: get-version + run: | + VERSION=$(curl -s https://api.github.com/repos/cloudposse/atmos/releases/latest | jq -r .tag_name) + echo "version=$VERSION" >> $GITHUB_OUTPUT + + outputs: + version: ${{ steps.get-version.outputs.version }} + screengrabs: needs: [prepare] runs-on: ubuntu-latest From 8a6d1ccacba3153dcfcb66726ba0f81c52b27e04 Mon Sep 17 00:00:00 2001 From: milldr Date: Tue, 6 May 2025 19:23:42 -0400 Subject: [PATCH 4/9] address pr feedback --- .github/workflows/screengrabs.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/screengrabs.yaml b/.github/workflows/screengrabs.yaml index 096f31505..445bf2f74 100644 --- a/.github/workflows/screengrabs.yaml +++ b/.github/workflows/screengrabs.yaml @@ -1,8 +1,12 @@ name: Screengrab -description: Generate screengrabs for Atmos documentation + on: workflow_dispatch: +permissions: + contents: write + pull-requests: write + env: TERM: "xterm-256color" COLORTERM: "truecolor" @@ -53,7 +57,6 @@ jobs: - uses: hashicorp/setup-terraform@v3 with: - terraform_version: ${{ env.TERRAFORM_VERSION }} terraform_wrapper: false - name: Run make build-all install From 78d7f7544cd5fb1999a262b2d918815b20ae80d7 Mon Sep 17 00:00:00 2001 From: milldr Date: Wed, 7 May 2025 16:23:24 -0400 Subject: [PATCH 5/9] checkout screengrabs from regen-screengrabs branch --- demo/screengrabs/Makefile | 4 +- demo/screengrabs/build-all.sh | 97 ++++++++++++------- demo/screengrabs/scripts/demo-stacks/.demo.rc | 2 +- 3 files changed, 64 insertions(+), 39 deletions(-) diff --git a/demo/screengrabs/Makefile b/demo/screengrabs/Makefile index 0293048af..2362737df 100644 --- a/demo/screengrabs/Makefile +++ b/demo/screengrabs/Makefile @@ -1,8 +1,8 @@ -INSTALL_PATH ?= ../../website/src/components/screengrabs +INSTALL_PATH ?= ../../website/src/components/Screengrabs all: build-all install # Write to /website/static/screengrab/ -install: +install: @echo "Installing screengrabs to $(INSTALL_PATH)" @mkdir -p $(INSTALL_PATH) @cp -a artifacts/* $(INSTALL_PATH) diff --git a/demo/screengrabs/build-all.sh b/demo/screengrabs/build-all.sh index a54a222b4..a97f6ecf3 100755 --- a/demo/screengrabs/build-all.sh +++ b/demo/screengrabs/build-all.sh @@ -2,61 +2,86 @@ set -e export TERM=xterm-256color +# Ensure that the output is not paginated +export LESS=-X + +# Determine the correct sed syntax based on the operating system +if [ "$(uname)" = "Darwin" ]; then + SED="$SED" # macOS requires '' for in-place editing +else + SED="sed -i" # Linux does not require '' +fi + function record() { - local demo=$1 + local demo=$1 local command=$2 - local extension="${command##*.}" # if any... - local demo_path=../../examples/$demo + local extension="${command##*.}" # if any... + local demo_path=../../examples/$demo local output_base_file=artifacts/$(echo "$command" | sed -E 's/ -/-/g' | sed -E 's/ +/-/g' | sed 's/---/--/g' | sed 's/scripts\///' | sed 's/\.sh$//') - local output_html=${output_base_file}.html - local output_ansi=${output_base_file}.ansi - local output_dir=$(dirname $output_base_file) + local output_html=${output_base_file}.html + local output_ansi=${output_base_file}.ansi + local output_dir=$(dirname $output_base_file) echo "Screengrabbing $command → $output_html" - mkdir -p "$output_dir" - rm -f $output_ansi - if [ "${extension}" == "sh" ]; then - script -q $output_ansi command $command > /dev/null - else - script -q $output_ansi bash -c "cd $demo_path && ($command)" > /dev/null - fi - postprocess_ansi $output_ansi - aha --no-header < $output_ansi > $output_html - postprocess_html $output_html - rm -f $output_ansi + mkdir -p "$output_dir" + rm -f $output_ansi + if [ "$(uname)" = "Darwin" ]; then + # macOS-specific syntax + if [ "${extension}" == "sh" ]; then + script -q $output_ansi command $command > /dev/null + else + script -q $output_ansi bash -c "cd $demo_path && ($command)" > /dev/null + fi + else + # Linux-specific syntax + if [ "${extension}" = "sh" ]; then + script -q -a $output_ansi -c "$command" > /dev/null + else + script -q -a $output_ansi -c "cd $demo_path && ($command)" > /dev/null + fi + fi + postprocess_ansi $output_ansi + aha --no-header < $output_ansi > $output_html + postprocess_html $output_html + rm -f $output_ansi if [ -n "$CI" ]; then sed -i -e '1,1d' -e '$d' $output_html fi } postprocess_ansi() { - local file=$1 - # Remove noise and clean up the output - sed -i '' '/- Finding latest version of/d' $file - sed -i '' '/- Installed hashicorp/d' $file - sed -i '' '/- Installing hashicorp/d' $file - sed -i '' '/Terraform has created a lock file/d' $file - sed -i '' '/Include this file in your version control repository/d' $file - sed -i '' '/guarantee to make the same selections by default when/d' $file - sed -i '' '/you run "terraform init" in the future/d' $file - sed -i '' 's/Resource actions are indicated with the following symbols.*//' $file - sed -i '' 's/^ *EOT/\n/g' $file - sed -i '' 's/ *<" - exit 1 + echo "Usage: $0 " + exit 1 fi demo=$(basename $manifest .txt) diff --git a/demo/screengrabs/scripts/demo-stacks/.demo.rc b/demo/screengrabs/scripts/demo-stacks/.demo.rc index 9a962c21f..0c9aa6eb8 100644 --- a/demo/screengrabs/scripts/demo-stacks/.demo.rc +++ b/demo/screengrabs/scripts/demo-stacks/.demo.rc @@ -11,7 +11,7 @@ demo_name=$(basename $(pwd)) shopt -s expand_aliases alias tree='tree -CF --gitignore -I ".git" -I "terraform.tfstate*" -I "*.tfvars.json" -I "cache*.txt"' -alias bat='bat --force-colorization --style header,numbers --theme="GitHub"' +alias bat='bat --force-colorization --style header,numbers --theme="GitHub" --paging=never' alias cat='bat' function clean() { From b70752778c2a5545747f27f9d68b98c58a8b9c01 Mon Sep 17 00:00:00 2001 From: Dan Miller Date: Thu, 8 May 2025 17:50:14 -0400 Subject: [PATCH 6/9] Update screengrabs.yaml Co-authored-by: Erik Osterman (CEO @ Cloud Posse) --- .github/workflows/screengrabs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/screengrabs.yaml b/.github/workflows/screengrabs.yaml index 445bf2f74..b2c34e597 100644 --- a/.github/workflows/screengrabs.yaml +++ b/.github/workflows/screengrabs.yaml @@ -28,7 +28,7 @@ jobs: outputs: version: ${{ steps.get-version.outputs.version }} - screengrabs: + build: needs: [prepare] runs-on: ubuntu-latest steps: From 0b05132af0e81cfc75a3e98301da89e3361fb794 Mon Sep 17 00:00:00 2001 From: Dan Miller Date: Thu, 8 May 2025 17:50:21 -0400 Subject: [PATCH 7/9] Update screengrabs.yaml Co-authored-by: Erik Osterman (CEO @ Cloud Posse) --- .github/workflows/screengrabs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/screengrabs.yaml b/.github/workflows/screengrabs.yaml index b2c34e597..fa9aba610 100644 --- a/.github/workflows/screengrabs.yaml +++ b/.github/workflows/screengrabs.yaml @@ -1,4 +1,4 @@ -name: Screengrab +name: Screengrabs on: workflow_dispatch: From 2b57f7d32917c2e80811800eda5a5bc96d42f892 Mon Sep 17 00:00:00 2001 From: Dan Miller Date: Thu, 8 May 2025 17:50:29 -0400 Subject: [PATCH 8/9] Update screengrabs.yaml Co-authored-by: Erik Osterman (CEO @ Cloud Posse) --- .github/workflows/screengrabs.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/screengrabs.yaml b/.github/workflows/screengrabs.yaml index fa9aba610..52c60b687 100644 --- a/.github/workflows/screengrabs.yaml +++ b/.github/workflows/screengrabs.yaml @@ -2,6 +2,10 @@ name: Screengrabs on: workflow_dispatch: + pull_request: + types: [labeled, opened, synchronize] + paths: + - ".github/workflows/screengrabs.yml" permissions: contents: write From d9becc453fd97dc9b6b6f97c6cd574dd287042a9 Mon Sep 17 00:00:00 2001 From: "Erik Osterman (CEO @ Cloud Posse)" Date: Fri, 9 May 2025 16:23:43 -0500 Subject: [PATCH 9/9] Update .github/workflows/screengrabs.yaml --- .github/workflows/screengrabs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/screengrabs.yaml b/.github/workflows/screengrabs.yaml index 52c60b687..27d90896e 100644 --- a/.github/workflows/screengrabs.yaml +++ b/.github/workflows/screengrabs.yaml @@ -5,7 +5,7 @@ on: pull_request: types: [labeled, opened, synchronize] paths: - - ".github/workflows/screengrabs.yml" + - ".github/workflows/screengrabs.yaml" permissions: contents: write