terramate-io / terramate

Terramate CLI is an open-source Infrastructure as Code (IaC) Orchestration and Code Generation tool for Terraform, OpenTofu and Terragrunt.
https://terramate.io
Mozilla Public License 2.0
3.12k stars 85 forks source link

feat: add triggers of type ignore-change. #1734

Closed i4ki closed 4 weeks ago

i4ki commented 1 month ago

What this PR does / why we need it:

Introduce the ignore-change trigger. This kind of trigger can be used when a set of changes would trigger stacks when should not, then the user can now force them to not trigger as changed in the same PR.

Usage example:

$ terramate list --changed
my-stack
$ terramate experimental trigger --ignore-change my-stack
Created trigger for stack "/my-stack"

$ terramate list --changed
$ 

As you can see, after the trigger file is created with --ignore-change the stack is not listed as changed anymore. The same is true for the other features supporting --changed.

Which issue(s) this PR fixes:

Fixes none

Special notes for your reviewer:

Does this PR introduce a user-facing change?

yes, adds a new feature.
github-actions[bot] commented 1 month ago
metric: time/op
CloudReadLines-4: old 1.15ms ± 7%: new 1.06ms ± 3%: delta: -7.98%
CloudReadLine-4: old 7.25ms ± 2%: new 7.18ms ± 2%: delta: -1.02%
ListFiles-4: old 55.6µs ± 1%: new 55.2µs ± 1%: delta: -0.64%
Generate-4: old 2.89s ± 3%: new 2.77s ± 3%: delta: -4.12%
GenerateRegex-4: old 1.89s ± 2%: new 1.89s ± 2%: delta: 0.00%
TokensForExpressionComplex-4: old 1.29ms ± 1%: new 1.29ms ± 1%: delta: 0.00%
TokensForExpressionPlainStringNoNewline-4: old 834ns ± 1%: new 840ns ± 1%: delta: 0.72%
TokensForExpressionStringWith100Newlines-4: old 22.8µs ± 1%: new 23.0µs ± 1%: delta: 0.79%
TokensForExpressionObjectWith100KeysWithNumberValues-4: old 1.48ms ± 1%: new 1.48ms ± 1%: delta: 0.00%
TokensForExpression-4: old 1.29ms ± 1%: new 1.30ms ± 2%: delta: 0.00%
PartialEvalComplex-4: old 617µs ± 1%: new 616µs ± 2%: delta: 0.00%
PartialEvalSmallString-4: old 3.73µs ± 1%: new 3.75µs ± 1%: delta: 0.32%
PartialEvalHugeString-4: old 1.90ms ± 0%: new 1.90ms ± 0%: delta: 0.00%
PartialEvalHugeInterpolatedString-4: old 5.27ms ± 2%: new 5.29ms ± 1%: delta: 0.00%
PartialEvalObject-4: old 26.1µs ± 2%: new 25.9µs ± 1%: delta: -1.13%
TmAllTrueLiteralList-4: old 6.47ms ± 1%: new 6.41ms ± 1%: delta: -0.96%
TmAllTrueFuncall-4: old 166µs ± 0%: new 165µs ± 0%: delta: -0.41%
TmAnyTrueLiteralList-4: old 151ms ± 1%: new 151ms ± 1%: delta: 0.00%
TmAnyTrueFuncall-4: old 166µs ± 1%: new 166µs ± 0%: delta: 0.00%
TmTernary-4: old 2.92µs ± 1%: new 2.93µs ± 1%: delta: 0.00%
TmTry-4: old 53.0µs ± 1%: new 53.5µs ± 0%: delta: 0.82%
metric: alloc/op
CloudReadLines-4: old 3.12MB ± 0%: new 3.12MB ± 0%: delta: 0.00%
CloudReadLine-4: old 3.37MB ± 0%: new 3.37MB ± 0%: delta: 0.00%
ListFiles-4: old 22.0kB ± 0%: new 22.0kB ± 0%: delta: 0.00%
Generate-4: old 2.32GB ± 0%: new 2.32GB ± 0%: delta: 0.00%
GenerateRegex-4: old 956MB ± 0%: new 956MB ± 0%: delta: 0.00%
TokensForExpressionComplex-4: old 404kB ± 0%: new 404kB ± 0%: delta: -0.00%
TokensForExpressionPlainStringNoNewline-4: old 512B ± 0%: new 512B ± 0%: delta: 0.00%
TokensForExpressionStringWith100Newlines-4: old 12.4kB ± 0%: new 12.4kB ± 0%: delta: 0.00%
TokensForExpressionObjectWith100KeysWithNumberValues-4: old 394kB ± 0%: new 394kB ± 0%: delta: 0.00%
TokensForExpression-4: old 404kB ± 0%: new 404kB ± 0%: delta: 0.00%
PartialEvalComplex-4: old 408kB ± 0%: new 408kB ± 0%: delta: 0.00%
PartialEvalSmallString-4: old 1.74kB ± 0%: new 1.74kB ± 0%: delta: 0.00%
PartialEvalHugeString-4: old 166kB ± 0%: new 166kB ± 0%: delta: 0.00%
PartialEvalHugeInterpolatedString-4: old 4.38MB ± 0%: new 4.38MB ± 0%: delta: 0.00%
PartialEvalObject-4: old 21.9kB ± 0%: new 21.9kB ± 0%: delta: 0.00%
TmAllTrueLiteralList-4: old 1.74MB ± 0%: new 1.74MB ± 0%: delta: 0.00%
TmAllTrueFuncall-4: old 45.5kB ± 0%: new 45.5kB ± 0%: delta: 0.00%
TmAnyTrueLiteralList-4: old 37.9MB ± 0%: new 37.9MB ± 0%: delta: 0.00%
TmAnyTrueFuncall-4: old 45.6kB ± 0%: new 45.6kB ± 0%: delta: 0.00%
TmTernary-4: old 1.20kB ± 0%: new 1.20kB ± 0%: delta: 0.00%
TmTry-4: old 11.2kB ± 0%: new 11.2kB ± 0%: delta: 0.00%
metric: allocs/op
CloudReadLines-4: old 5.54k ± 0%: new 5.54k ± 0%: delta: 0.00%
CloudReadLine-4: old 60.0k ± 0%: new 60.0k ± 0%: delta: 0.00%
ListFiles-4: old 321 ± 0%: new 321 ± 0%: delta: 0.00%
Generate-4: old 25.9M ± 0%: new 25.9M ± 0%: delta: 0.00%
GenerateRegex-4: old 18.6M ± 0%: new 18.6M ± 0%: delta: 0.00%
TokensForExpressionComplex-4: old 4.84k ± 0%: new 4.84k ± 0%: delta: 0.00%
TokensForExpressionPlainStringNoNewline-4: old 20.0 ± 0%: new 20.0 ± 0%: delta: 0.00%
TokensForExpressionStringWith100Newlines-4: old 227 ± 0%: new 227 ± 0%: delta: 0.00%
TokensForExpressionObjectWith100KeysWithNumberValues-4: old 3.19k ± 0%: new 3.19k ± 0%: delta: 0.00%
TokensForExpression-4: old 4.84k ± 0%: new 4.84k ± 0%: delta: 0.00%
PartialEvalComplex-4: old 3.65k ± 0%: new 3.65k ± 0%: delta: 0.00%
PartialEvalSmallString-4: old 23.0 ± 0%: new 23.0 ± 0%: delta: 0.00%
PartialEvalHugeString-4: old 35.0 ± 0%: new 35.0 ± 0%: delta: 0.00%
PartialEvalHugeInterpolatedString-4: old 23.1k ± 0%: new 23.1k ± 0%: delta: 0.00%
PartialEvalObject-4: old 153 ± 0%: new 153 ± 0%: delta: 0.00%
TmAllTrueLiteralList-4: old 13.6k ± 0%: new 13.6k ± 0%: delta: 0.00%
TmAllTrueFuncall-4: old 460 ± 0%: new 460 ± 0%: delta: 0.00%
TmAnyTrueLiteralList-4: old 252k ± 0%: new 252k ± 0%: delta: 0.00%
TmAnyTrueFuncall-4: old 462 ± 0%: new 462 ± 0%: delta: 0.00%
TmTernary-4: old 28.0 ± 0%: new 28.0 ± 0%: delta: 0.00%
TmTry-4: old 147 ± 0%: new 147 ± 0%: delta: 0.00%