Luke Young
5d47eeb63b
feat: add plan_requirements capability ( #2979 )
...
* Add plan_requirements
* Pass pull request fetcher down to plan runner
* Adding tests
* Replace sliceContainsF with slice.Contains
* Remove policy check for plan
Co-authored-by: Casey Miller <camiller@confluent.io >
Co-authored-by: PePe Amengual <jose.amengual@gmail.com >
Co-authored-by: Casey Miller <47993553+camillsir@users.noreply.github.com >
2023-01-21 00:20:04 -06:00
Ken Kaizu
cb0aadf571
feat: state rm ( #2880 )
...
* feat: state rm
* review feedback
* fix conflict for pegomock generation code
* adopt state command into allow-commands
* fix conflicts
* fix: state rm works on workspace
* notify import/state rm discard plan file
* fix lint
* use repeat instead warning for re-plan
* perl -pi -e 's!\* 🔁 plan file was discarded. to!🚮 A plan file was discarded. Re-plan would be required before applying.\n\n\* 🔁 To!g' server/**/*
* follow main branch
2023-01-18 22:02:18 -06:00
Leandro López
04f1d062d6
Improve plan summary performance ( #2907 )
...
* Add benchmark for *PlanSuccess.Summary
This is for taking a baseline and comparing with future
improvements. I just did a test run and got the following results:
$ go test -bench=. ./server/events/command
goos: darwin
goarch: arm64
pkg: github.com/runatlantis/atlantis/server/events/command
BenchmarkPlanSuccess_Summary/empty_summary,_no_matches-10 82564 12415 ns/op 27352 B/op 114 allocs/op
BenchmarkPlanSuccess_Summary/changes-10 167904 7148 ns/op 14309 B/op 69 allocs/op
BenchmarkPlanSuccess_Summary/no_changes-10 92410 12984 ns/op 27705 B/op 114 allocs/op
BenchmarkPlanSuccess_Summary/changes_outside_Terraform-10 89256 13505 ns/op 27882 B/op 117 allocs/op
BenchmarkPlanSuccess_Summary/changes_and_changes_outside-10 159199 7527 ns/op 14493 B/op 72 allocs/op
PASS
ok github.com/runatlantis/atlantis/server/events/command 7.536s
To have a better comparison I've ran all the benchmarks with 200,000
iterations, and got this:
$ go test -bench=. ./server/events/command -benchtime=200000x
goos: darwin
goarch: arm64
pkg: github.com/runatlantis/atlantis/server/events/command
BenchmarkPlanSuccess_Summary/changes_and_changes_outside-10 200000 7637 ns/op 14487 B/op 72 allocs/op
BenchmarkPlanSuccess_Summary/empty_summary,_no_matches-10 200000 12379 ns/op 27352 B/op 114 allocs/op
BenchmarkPlanSuccess_Summary/changes-10 200000 7134 ns/op 14312 B/op 69 allocs/op
BenchmarkPlanSuccess_Summary/no_changes-10 200000 12960 ns/op 27692 B/op 114 allocs/op
BenchmarkPlanSuccess_Summary/changes_outside_Terraform-10 200000 13731 ns/op 27862 B/op 117 allocs/op
PASS
ok github.com/runatlantis/atlantis/server/events/command 11.837s
Signed-off-by: Leandro López (inkel) <leandro.lopez@grafana.com >
* Compile summary regexps only once
By initializing these regexes at program first run instead of every
time the function is called we gain better resource usage and much
faster results, as shown in this results with 200,000 iterations as in
the previous commit:
$ go test -bench=. ./server/events/command -benchtime=200000x
goos: darwin
goarch: arm64
pkg: github.com/runatlantis/atlantis/server/events/command
BenchmarkPlanSuccess_Summary/empty_summary,_no_matches-10 200000 29.49 ns/op 0 B/op 0 allocs/op
BenchmarkPlanSuccess_Summary/changes-10 200000 450.4 ns/op 0 B/op 0 allocs/op
BenchmarkPlanSuccess_Summary/no_changes-10 200000 357.9 ns/op 0 B/op 0 allocs/op
BenchmarkPlanSuccess_Summary/changes_outside_Terraform-10 200000 824.1 ns/op 193 B/op 3 allocs/op
BenchmarkPlanSuccess_Summary/changes_and_changes_outside-10 200000 754.8 ns/op 177 B/op 3 allocs/op
PASS
ok github.com/runatlantis/atlantis/server/events/command 0.943s
With 200,000 iterations the results were almost immediately and I
couldn't observe the real performance, so I've removed the limitation
and got the following:
$ go test -bench=. ./server/events/command -benchtime=200000x
goos: darwin
goarch: arm64
pkg: github.com/runatlantis/atlantis/server/events/command
BenchmarkPlanSuccess_Summary/empty_summary,_no_matches-10 200000 29.49 ns/op 0 B/op 0 allocs/op
BenchmarkPlanSuccess_Summary/changes-10 200000 450.4 ns/op 0 B/op 0 allocs/op
BenchmarkPlanSuccess_Summary/no_changes-10 200000 357.9 ns/op 0 B/op 0 allocs/op
BenchmarkPlanSuccess_Summary/changes_outside_Terraform-10 200000 824.1 ns/op 193 B/op 3 allocs/op
BenchmarkPlanSuccess_Summary/changes_and_changes_outside-10 200000 754.8 ns/op 177 B/op 3 allocs/op
PASS
ok github.com/runatlantis/atlantis/server/events/command 0.943s
I've also compared the results of running the benchamrks with 200,000
iterations, 10 times each, and these are the results:
$ benchstat orig.txt improv.txt
name old time/op new time/op delta
PlanSuccess_Summary/empty_summary,_no_matches-10 12.6µs ± 2% 0.0µs ± 1% -99.90% (p=0.000 n=10+9)
PlanSuccess_Summary/changes-10 7.19µs ± 0% 0.36µs ± 2% -94.96% (p=0.000 n=8+9)
PlanSuccess_Summary/no_changes-10 13.2µs ± 2% 0.4µs ± 0% -97.27% (p=0.000 n=10+9)
PlanSuccess_Summary/changes_outside_Terraform-10 13.7µs ± 1% 0.8µs ± 0% -94.02% (p=0.000 n=9+9)
PlanSuccess_Summary/changes_and_changes_outside-10 7.71µs ± 5% 0.75µs ± 0% -90.21% (p=0.000 n=10+8)
name old alloc/op new alloc/op delta
PlanSuccess_Summary/empty_summary,_no_matches-10 27.4kB ± 0% 0.0kB -100.00% (p=0.000 n=10+10)
PlanSuccess_Summary/changes-10 14.3kB ± 0% 0.0kB -100.00% (p=0.000 n=9+10)
PlanSuccess_Summary/no_changes-10 27.7kB ± 0% 0.0kB -100.00% (p=0.000 n=10+10)
PlanSuccess_Summary/changes_outside_Terraform-10 27.9kB ± 0% 0.2kB ± 0% -99.31% (p=0.000 n=10+7)
PlanSuccess_Summary/changes_and_changes_outside-10 14.5kB ± 0% 0.2kB ± 0% -98.78% (p=0.000 n=10+8)
name old allocs/op new allocs/op delta
PlanSuccess_Summary/empty_summary,_no_matches-10 114 ± 0% 0 -100.00% (p=0.000 n=10+10)
PlanSuccess_Summary/changes-10 69.0 ± 0% 0.0 -100.00% (p=0.000 n=10+10)
PlanSuccess_Summary/no_changes-10 114 ± 0% 0 -100.00% (p=0.000 n=10+10)
PlanSuccess_Summary/changes_outside_Terraform-10 117 ± 0% 3 ± 0% -97.44% (p=0.000 n=10+10)
PlanSuccess_Summary/changes_and_changes_outside-10 72.0 ± 0% 3.0 ± 0% -95.83% (p=0.000 n=10+10)
Signed-off-by: Leandro López (inkel) <leandro.lopez@grafana.com >
* Remove extra allocation
There's no need for fmt.Sprintf for such a simple use.
Signed-off-by: Leandro López (inkel) <leandro.lopez@grafana.com >
* Add MarkdownRenderer benchmark for diff markdown format
Signed-off-by: Leandro López (inkel) <leandro.lopez@grafana.com >
* Compile markdown diff regexes once
This change doesn't improve performance as dramatically as the summary
regexes do, however, it does reduce the amount of resources used:
$ benchstat markdowndiff.orig.txt markdowndiff.inkel.txt
name old time/op new time/op delta
RenderProjectResultsWithEnableDiffMarkdownFormat/single_successful_plan_with_diff_markdown_formatted/verbose_true-10 727µs ± 0% 717µs ± 2% -1.31% (p=0.002 n=10+10)
RenderProjectResultsWithEnableDiffMarkdownFormat/single_successful_plan_with_diff_markdown_formatted/verbose_false-10 725µs ± 0% 715µs ± 1% -1.33% (p=0.000 n=9+10)
name old alloc/op new alloc/op delta
RenderProjectResultsWithEnableDiffMarkdownFormat/single_successful_plan_with_diff_markdown_formatted/verbose_true-10 171kB ± 0% 153kB ± 0% -10.60% (p=0.000 n=10+10)
RenderProjectResultsWithEnableDiffMarkdownFormat/single_successful_plan_with_diff_markdown_formatted/verbose_false-10 171kB ± 0% 153kB ± 0% -10.60% (p=0.000 n=10+10)
name old allocs/op new allocs/op delta
RenderProjectResultsWithEnableDiffMarkdownFormat/single_successful_plan_with_diff_markdown_formatted/verbose_true-10 364 ± 0% 214 ± 0% -41.29% (p=0.000 n=10+9)
RenderProjectResultsWithEnableDiffMarkdownFormat/single_successful_plan_with_diff_markdown_formatted/verbose_false-10 358 ± 0% 207 ± 0% -42.05% (p=0.000 n=10+10)
Signed-off-by: Leandro López (inkel) <leandro.lopez@grafana.com >
Signed-off-by: Leandro López (inkel) <leandro.lopez@grafana.com >
2023-01-04 12:28:51 -08:00
Ken Kaizu
f09a9d4c01
feat: --allow-commands restricts available atlantis commands ( #2877 )
...
* feat: --allow-command configuration restricts available atlantis commands
* add version and approve_policies into allow commands defaults
* allow-commands accept all keyword which allows all commands
* remove redundant nest
* more detail abount allow-commands all keyword
* Update server/events/comment_parser.go
2022-12-27 22:52:39 -06:00
Ken Kaizu
4e0d4ecc40
feat: atlantis import ( #2783 )
...
* feat: atlantis import
* feat: atlantis import
* regenerate mock comment builder
* remove duplicate err check
* instrumented import command runner/builder
* atlantis import subcommand accept args before hyphen
* fix link checker
* docs: review feedback
* fix atlantis import options order
* Update runatlantis.io/docs/using-atlantis.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/using-atlantis.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/using-atlantis.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/using-atlantis.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/using-atlantis.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/command-requirements.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/command-requirements.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/command-requirements.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update server/events/comment_parser.go
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update server/events/comment_parser.go
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/command-requirements.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/command-requirements.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/command-requirements.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/server-side-repo-config.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/command-requirements.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/command-requirements.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/command-requirements.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/command-requirements.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update runatlantis.io/docs/command-requirements.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update server/events/command_requirement_handler.go
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* Update server/events/command_requirement_handler_test.go
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
* fix test import usage
* fix e2e expected txt
* fix doc link
* docs: workflow import stage/step
* docs fixup
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
2022-12-22 18:37:29 -06:00
Fabiano Soares Honorato
9a38e35493
bugfix: Initialize metrics with empty tags ( #2847 )
...
* Initialize metrics with empty tags
* Better name for Project tags
* No need for dedicated set scope tags on metrics
2022-12-21 12:36:44 -06:00
Ken Kaizu
08e9c5a17e
feat: customize atlantis.yaml file name in server side config ( #2798 )
...
* feat: customize atlantis.yaml file name in server side config
* Update server/events/vcs/bitbucketcloud/client.go
* Update server/events/vcs/bitbucketserver/client.go
* Update server/events/vcs/not_configured_vcs_client.go
* Update server/events/vcs/azuredevops_client.go
* docs: repo_config_file multiple atlantis servers usecase example
* docs: multiple atlantis server usage which show how to call one atlantis server
* Update runatlantis.io/docs/server-side-repo-config.md
* Apply suggestions from code review
* Update runatlantis.io/docs/server-side-repo-config.md
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
2022-12-18 23:02:38 -06:00
Ken Kaizu
4d957836ad
Enable or disable repo_locking per repo in repos.yaml and atlantis.yaml ( #2700 )
...
* disable repo locking repos.yaml and atlantis.yaml with allow override
* rename disable_repo_locking into repo_locking
* add both enable/disable repo_locking test
Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com >
2022-12-09 16:13:31 -06:00
Alberto Rojas
949ee3fa5f
metrics: Add Metrics tags to multiple Scopes ( #2687 )
...
* metrics: Add Metrics tags to multiple Scopes
* metrics: Fix base_repo and pr_number
* metrics: Refactor SetScope to SetScopeTags
* metrics: Add SetGitScopeTags function
* metrics: docs reword project_context SetScopeTags description
* metrics: test Add TestNewScope_PrometheusTaggingCapabilities
2022-11-19 08:31:46 -06:00
nitrocode
b760e8c869
Bump testing-env and go-cty@v1.12.1 ( #2686 )
...
* Bump github.com/zclconf/go-cty@v1.12 .1
* Bump github.com/zclconf/go-cty@v1.11 .1
* Bump github.com/zclconf/go-cty@v1.12 .1
* Bump testing-env to latest
* Set conftest to 0.35.0
* conftest to 0.45.0, run docker tests locally
* set gha test.yml to latest testing-env image
* Update Makefile target descs, rm sudo
* Use testing-env:2022.11.17
* Add sudo back in for gha workflow
* Set conftest to 0.35.0
* test gha: rm setup
* Rename "Version" to "Conftest" for version regex
* Use cases and language import
* Use io instead of ioutil
2022-11-17 16:57:04 -06:00
Tyler Lubeck
9ab3fd2416
Add tags to project metrics ( #2623 )
...
* Add tags to project metrics
This adds a few tags that I've found useful for our monitoring of a
many-project terraform repository. There are likely more tags that can
be added in other areas, but I figured I'd start small and get feedback
before increasing the blast radius
* Add labels, handle nils, alphabetize
* Move //nolint to line of assignment
2022-10-27 20:04:06 -05:00
Andrey Vydrin
569031ab23
feat: add execution order group ( #2178 )
...
* feat: add execution order group
to apply/plan by order
* fix: use official golanci-lint script
2022-06-29 12:01:54 -07:00
Rui Chen
b1fb97047b
links(github): replace help.github.com with docs.github.com links ( #2227 )
...
* links(github): replace help.github.com with docs.github.com links
* fix another link
Signed-off-by: Rui Chen <rui@chenrui.dev >
2022-04-29 17:35:42 -04:00
Sarvar Muminov
90e92e3a13
chore: move CommandContext and CommandResult to models ( #193 ) ( #2093 )
...
* Moved CommandContext and CommandResult to models (#193 )
* Moved CommandContext and CommandResult to models
* move from models to command
rename CommandContext -> Context
rename CommandResult -> Result
* moved command related helpers into command package
* move ProjectCommandContext and ProjectResult to command/project package
* move project command context and project result
* revert unrelated code
* move tests
* fix left over
* fix linting
* fix tests
* remove unused import
* fix project context dependencies
* fix depenedecies
* fix typo
2022-03-21 10:36:13 -07:00