runatlantis / atlantis

Terraform Pull Request Automation
https://www.runatlantis.io
Other
7.77k stars 1.05k forks source link

Atlantis 1.0.0 Release #2496

Open nitrocode opened 2 years ago

nitrocode commented 2 years ago

Community Note


Describe the user story

It would be nice to legitimize Atlantis for production by putting together a list of necessary items to create a 1.0 release.

This was also mentioned in the Atlantis slack community on Aug 9 2021 by @nishkrishnan

Atlantis was initially intended to be interfaced solely through PR actions due to a number of reasons such as:

  • Getting persistence for free with Github PRs.
  • Getting an audit trail for free with PR search/history
  • The benefits of markdown templating in comments
  • Ease of project bootstrapping

However, as Atlantis is more widely adopted by the community we want to provide some direction for the project and hopefully expand the capabilities of the platform. Atlantis 1.0 is the goal we are setting for ourselves to move towards an API driven platform that’s integrated with version control but NOT entirely dependent on it. This provides the building blocks for things like integrating with other services (ie. deploy pipelines), enables usage of a standard release process (ie. post-merge to default branch) and ultimately allows us to build a richer experience since we’re not limited by VCS provider functionality (ie. real-time feedback and better formatting).

This is a large endeavor and we don’t expect to release 1.0 until we are confidant that the platform is stable. As for how we intend to do this, we plan on tackling this incrementally through a couple projects in the short-term that will bring us closer to this vision:

  • Real-time feedback/streaming of terraform outputs
  • Supporting multiple entrypoints into the system (events and api)
  • Decoupling VCS specific logic from the core components of the platform What can the community do to help?

Keep this vision in mind when contributing features/bug fixes as we want to make sure we are moving forwards not backwards. In addition to that stay tuned for more technical specifics on the next steps.

Describe the solution you'd like

Come up with a list of items that need to be complete for a 1.0 release

Future release

Describe the drawbacks of your solution

None that I can think of

Describe alternatives you've considered

None

jamengual commented 2 years ago

I think atlantis has been in production for years, I believe the 1.0.0 release is just a number, not an actual representation of where atlantis is.

What do you think is missing?

stasostrovskyi commented 2 years ago

As mentioned in Slack, I personally think that making atlantis, hmm, cloud-native would be a such missing thing for version 1.0. By cloud-native here I mean having a separate repository and plan storage, and locking db (which is already implemented) so that Atlantis can be horizontally scaled in Kubernetes or otherwise usable with Google Cloud Run or similar tools from other cloud providers.

jamengual commented 2 years ago

locking db as you mentioned was merged yesterday and that will enable autoscaling. the next nonissue but improvement is to maybe use the locking table to find out IF there is already a lock/clone of the repo get the location and use it from shared storage instead of doing a clone again BUT even without that Atlantis will do what is supposed to.

I guess I'm trying to understand what cloud-native means?, because Atlantis needs to be cloud provider agnostic BUT that does not mean that they could be an implementation that uses S3/blob storage to save the clones etc.

I think we will hear back soon from people using the external locking and enabling things like EFS for the AtlantiData dir and we will see how that behaves, my guess is that it might work just fine.

stasostrovskyi commented 2 years ago

Oh, I missed the part that it's possible to use EFS or similar. We will try it with google filestore and see how it works!

snorlaX-sleeps commented 2 years ago

For a v1 release Atlantis should be able to run parallel plans for different workspaces that are in separate directories. This was previously tested / deployed in a nightly build via this PR but was pulled due to an issue with Terragrunt (not 100%) on the reasoning. We are still using this several month old nightly build as we have multiple repos containing n directories, each with between 1 and 7 workspaces and not having these run in parallel makes Atlantis unusable as part of the developer workflow (takes far too long)

snorlaX-sleeps commented 2 years ago

enabling things like EFS for the AtlantiData dir

@jamengual - we attempted to use EFS in AWS but it was far too slow. EFS is not very good at handling lots of small file reads / writes (e.g terraform init)

jamengual commented 2 years ago

you need to test in the next tier of EFS:

Q. How much throughput can a file system support?

Bursting throughput mode, which is the default throughput mode for Amazon EFS file systems, scales the throughput available to a file system as that file system grows. Because file-based workloads are typically spiky - requiring high levels of throughput at certain periods of time and lower levels of throughput otherwise - Amazon EFS is designed to "burst" which allows high throughput levels for periods of time. Also, because many workloads are read-heavy, read operations are metered at a 1:3 ratio to other NFS operations (such as write). All file systems deliver a consistent baseline performance of 50 MB/second per TB of EFS Standard or EFS One Zone storage, while all file systems (regardless of size) can burst to 100 MB/second, and file systems with more than 1 TB of EFS Standard or EFS One Zone storage can burst to 100 MB/second per TB. Since read operations are metered at a 1:3 ratio, you can drive up to 300 MiB/second per TiB of read throughput. As you add data to your file system, the maximum throughput available to the file system scales linearly and automatically with your storage in the Amazon EFS Standard storage class. If you need more throughput than you can achieve with the amount of data you have stored, you can configure Provisioned Throughput to the specific amount your workload requires.

https://aws.amazon.com/efs/faq/

create a dummy 1 TB file to jump to the next tier.

On Thu, Sep 22, 2022 at 10:49 AM snorlaX-sleeps @.***> wrote:

enabling things like EFS for the AtlantiData dir

@jamengual https://github.com/jamengual - we attempted to use EFS in AWS but it was far too slow. EFS is not very good at handling lots of small file reads / writes (e.g terraform init)

— Reply to this email directly, view it on GitHub https://github.com/runatlantis/atlantis/issues/2496#issuecomment-1255358139, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAQ3ERG2L6BK2VJI4CAW64DV7SLZ3ANCNFSM6AAAAAAQGGHRHQ . You are receiving this because you were mentioned.Message ID: @.***>

snorlaX-sleeps commented 2 years ago

create a dummy 1 TB file to jump to the next tier.

Could do! But a 50Gb EBS is a fair bit cheaper than a 1TB EFS (or so it was when we were originally deploying Atlantis). I suppose we could share the EFS across all our installations instead

pauloconnor commented 2 years ago

Off topic from V1.0, but I used EFS with provisioned IOPS of a reasonably high number, and the performance was still garbage. Looking at clones taking 2+ minutes compared to ~10 seconds to an EBS volume. I wonder if it'd be possible to split up the atlantis directory so that the plan files are stored on EBS, and the git check out is stored on ebs or instance storage

For a v1 release Atlantis should be able to run parallel plans for different workspaces that are in separate directories. This was previously tested / deployed in a nightly build via this https://github.com/runatlantis/atlantis/pull/2131 but was pulled due to an issue with Terragrunt (not 100%) on the reasoning.

Curiously, we're using multiple plans in different directories, and it runs quite quickly, excusing EFS issues mentioned above

snorlaX-sleeps commented 2 years ago

Curiously, we're using multiple plans in different directories, and it runs quite quickly, excusing EFS issues mentioned above

@pauloconnor - Yes, it will run plans in parallel in different directories if the workspace names are different. In my work we use a common format for workspace names across all our products and these are the same in each directory. Unless something has materially changed (not mentioned in docs / releases last time I checked) it can't run workspaces with the same name in parallel, which is why we are using the old nightly build

pauloconnor commented 2 years ago

Yes, it will run plans in parallel in different directories if the workspace names are different.

We don't use different workspace names - just default. Parallel plan has worked for several months for us. This was the PR that enabled it to work

snorlaX-sleeps commented 2 years ago

Yes, it will run plans in parallel in different directories if the workspace names are different.

We don't use different workspace names - just default. Parallel plan has worked for several months for us. This was the PR that enabled it to work

Apologies @pauloconnor - I realised I linked the wrong PR we were using for the workspaces, it was this: https://github.com/runatlantis/atlantis/pull/2180 Updating previous comment for anyone reading this later on.

So yes, different directories can run in parallel, but if they use workspaces with the same name they don't run in parallel When you use the linked PR, you can have any 16 workspaces planning or applying at the same time

pauloconnor commented 2 years ago

So yes, different directories can run in parallel, but if they use workspaces with the same name they don't run in parallel When you use the linked PR, you can have any 16 workspaces planning or applying at the same time

That's completely different to what I've observed on my Atlantis node - using multiple different directories with the same workspace name which all have changes, each directory will spin up a Terraform process in parallel. I have seen more than 16 concurrent tasks running

snorlaX-sleeps commented 2 years ago

So yes, different directories can run in parallel, but if they use workspaces with the same name they don't run in parallel When you use the linked PR, you can have any 16 workspaces planning or applying at the same time

That's completely different to what I've observed on my Atlantis node - using multiple different directories with the same workspace name which all have changes, each directory will spin up a Terraform process in parallel. I have seen more than 16 concurrent tasks running

Ok, thanks - wanted to confirm my linking of the wrong PR didn't make a difference. I will try this out on Monday

joshuasimon-taulia commented 2 years ago

running atlantis:v0.20.1, parallel_plan: true works for me without locking issues, but i get the below error when trying to run atlantis apply -d environments/myorg-preprd/preprd. all environments use the default workspace

atlantis-0 atlantis {"level":"info","ts":"2022-10-11T20:30:50.743Z","caller":"models/shell_command_runner.go:156","msg":"successfully ran \"/usr/local/bin/terraform0.13.7 plan -input=false -refresh -out \\\"/atlantis-data/repos/myorg/terraform/423/default/environments/myorg-preprd/preprd/default.tfplan\\\"\" in \"/atlantis-data/repos/myorg/terraform/423/default/environments/myorg-preprd/preprd\"","json":{"repo":"myorg/terraform","pull":"423"}}
atlantis-0 atlantis {"level":"info","ts":"2022-10-11T20:30:51.085Z","caller":"events/instrumented_project_command_runner.go:53","msg":"plan success. output available at: https://github.com/myorg/terraform/pull/423","json":{"repo":"myorg/terraform","pull":"423"}}
atlantis-0 atlantis {"level":"info","ts":"2022-10-11T20:31:36.239Z","caller":"events/events_controller.go:533","msg":"parsed comment as command=\"apply\" verbose=false dir=\"\" workspace=\"\" project=\"\" flags=\"\"","json":{"gh-request-id":"X-Github-Delivery=b3539690-49a3-11ed-942d-b98d8f8893e6"}}
atlantis-0 atlantis {"level":"error","ts":"2022-10-11T20:31:38.253Z","caller":"events/command_runner.go:427","msg":"PANIC: runtime error: invalid memory address or nil pointer dereference\nruntime/panic.go:260 (0x44c995)\nruntime/signal_unix.go:835 (0x44c965)\ngithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:329 (0xb8be0b)\ngithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:398 (0xb8c3d7)\ngithub.com/runatlantis/atlantis/server/events/vcs/instrumented_client.go:179 (0xb92dcb)\ngithub.com/runatlantis/atlantis/server/events/vcs/proxy.go:72 (0xb947c4)\ngithub.com/runatlantis/atlantis/server/events/vcs/pull_status_fetcher.go:28 (0xb95045)\ngithub.com/runatlantis/atlantis/server/events/apply_command_runner.go:108 (0xd74c15)\ngithub.com/runatlantis/atlantis/server/events/command_runner.go:296 (0xd79823)\nruntime/asm_amd64.s:1594 (0x467ca0)\n","json":{"repo":"myorg/terraform","pull":"423"},"stacktrace":"github.com/runatlantis/atlantis/server/events.(*DefaultCommandRunner).logPanics\n\tgithub.com/runatlantis/atlantis/server/events/command_runner.go:427\nruntime.gopanic\n\truntime/panic.go:890\nruntime.panicmem\n\truntime/panic.go:260\nruntime.sigpanic\n\truntime/signal_unix.go:835\ngithub.com/runatlantis/atlantis/server/events/vcs.(*GithubClient).GetCombinedStatusMinusApply\n\tgithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:329\ngithub.com/runatlantis/atlantis/server/events/vcs.(*GithubClient).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:398\ngithub.com/runatlantis/atlantis/server/events/vcs.(*InstrumentedClient).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/instrumented_client.go:179\ngithub.com/runatlantis/atlantis/server/events/vcs.(*ClientProxy).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/proxy.go:72\ngithub.com/runatlantis/atlantis/server/events/vcs.(*pullReqStatusFetcher).FetchPullStatus\n\tgithub.com/runatlantis/atlantis/server/events/vcs/pull_status_fetcher.go:28\ngithub.com/runatlantis/atlantis/server/events.(*ApplyCommandRunner).Run\n\tgithub.com/runatlantis/atlantis/server/events/apply_command_runner.go:108\ngithub.com/runatlantis/atlantis/server/events.(*DefaultCommandRunner).RunCommentCommand\n\tgithub.com/runatlantis/atlantis/server/events/command_runner.go:296"}
atlantis-0 atlantis {"level":"info","ts":"2022-10-11T20:33:21.288Z","caller":"events/events_controller.go:533","msg":"parsed comment as command=\"apply\" verbose=false dir=\"\" workspace=\"\" project=\"\" flags=\"\"","json":{"gh-request-id":"X-Github-Delivery=f1dc0aa0-49a3-11ed-9c31-8f78a882a809"}}
atlantis-0 atlantis {"level":"error","ts":"2022-10-11T20:33:23.747Z","caller":"events/command_runner.go:427","msg":"PANIC: runtime error: invalid memory address or nil pointer dereference\nruntime/panic.go:260 (0x44c995)\nruntime/signal_unix.go:835 (0x44c965)\ngithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:329 (0xb8be0b)\ngithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:398 (0xb8c3d7)\ngithub.com/runatlantis/atlantis/server/events/vcs/instrumented_client.go:179 (0xb92dcb)\ngithub.com/runatlantis/atlantis/server/events/vcs/proxy.go:72 (0xb947c4)\ngithub.com/runatlantis/atlantis/server/events/vcs/pull_status_fetcher.go:28 (0xb95045)\ngithub.com/runatlantis/atlantis/server/events/apply_command_runner.go:108 (0xd74c15)\ngithub.com/runatlantis/atlantis/server/events/command_runner.go:296 (0xd79823)\nruntime/asm_amd64.s:1594 (0x467ca0)\n","json":{"repo":"myorg/terraform","pull":"423"},"stacktrace":"github.com/runatlantis/atlantis/server/events.(*DefaultCommandRunner).logPanics\n\tgithub.com/runatlantis/atlantis/server/events/command_runner.go:427\nruntime.gopanic\n\truntime/panic.go:890\nruntime.panicmem\n\truntime/panic.go:260\nruntime.sigpanic\n\truntime/signal_unix.go:835\ngithub.com/runatlantis/atlantis/server/events/vcs.(*GithubClient).GetCombinedStatusMinusApply\n\tgithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:329\ngithub.com/runatlantis/atlantis/server/events/vcs.(*GithubClient).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:398\ngithub.com/runatlantis/atlantis/server/events/vcs.(*InstrumentedClient).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/instrumented_client.go:179\ngithub.com/runatlantis/atlantis/server/events/vcs.(*ClientProxy).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/proxy.go:72\ngithub.com/runatlantis/atlantis/server/events/vcs.(*pullReqStatusFetcher).FetchPullStatus\n\tgithub.com/runatlantis/atlantis/server/events/vcs/pull_status_fetcher.go:28\ngithub.com/runatlantis/atlantis/server/events.(*ApplyCommandRunner).Run\n\tgithub.com/runatlantis/atlantis/server/events/apply_command_runner.go:108\ngithub.com/runatlantis/atlantis/server/events.(*DefaultCommandRunner).RunCommentCommand\n\tgithub.com/runatlantis/atlantis/server/events/command_runner.go:296"}
atlantis-0 atlantis {"level":"info","ts":"2022-10-11T20:34:33.993Z","caller":"events/events_controller.go:533","msg":"parsed comment as command=\"apply\" verbose=false dir=\"environments/devtools/primary\" workspace=\"\" project=\"\" flags=\"\"","json":{"gh-request-id":"X-Github-Delivery=1d4308b0-49a4-11ed-8c8a-18570fd37789"}}
atlantis-0 atlantis {"level":"error","ts":"2022-10-11T20:34:36.121Z","caller":"events/command_runner.go:427","msg":"PANIC: runtime error: invalid memory address or nil pointer dereference\nruntime/panic.go:260 (0x44c995)\nruntime/signal_unix.go:835 (0x44c965)\ngithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:329 (0xb8be0b)\ngithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:398 (0xb8c3d7)\ngithub.com/runatlantis/atlantis/server/events/vcs/instrumented_client.go:179 (0xb92dcb)\ngithub.com/runatlantis/atlantis/server/events/vcs/proxy.go:72 (0xb947c4)\ngithub.com/runatlantis/atlantis/server/events/vcs/pull_status_fetcher.go:28 (0xb95045)\ngithub.com/runatlantis/atlantis/server/events/apply_command_runner.go:108 (0xd74c15)\ngithub.com/runatlantis/atlantis/server/events/command_runner.go:296 (0xd79823)\nruntime/asm_amd64.s:1594 (0x467ca0)\n","json":{"repo":"myorg/terraform","pull":"423"},"stacktrace":"github.com/runatlantis/atlantis/server/events.(*DefaultCommandRunner).logPanics\n\tgithub.com/runatlantis/atlantis/server/events/command_runner.go:427\nruntime.gopanic\n\truntime/panic.go:890\nruntime.panicmem\n\truntime/panic.go:260\nruntime.sigpanic\n\truntime/signal_unix.go:835\ngithub.com/runatlantis/atlantis/server/events/vcs.(*GithubClient).GetCombinedStatusMinusApply\n\tgithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:329\ngithub.com/runatlantis/atlantis/server/events/vcs.(*GithubClient).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:398\ngithub.com/runatlantis/atlantis/server/events/vcs.(*InstrumentedClient).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/instrumented_client.go:179\ngithub.com/runatlantis/atlantis/server/events/vcs.(*ClientProxy).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/proxy.go:72\ngithub.com/runatlantis/atlantis/server/events/vcs.(*pullReqStatusFetcher).FetchPullStatus\n\tgithub.com/runatlantis/atlantis/server/events/vcs/pull_status_fetcher.go:28\ngithub.com/runatlantis/atlantis/server/events.(*ApplyCommandRunner).Run\n\tgithub.com/runatlantis/atlantis/server/events/apply_command_runner.go:108\ngithub.com/runatlantis/atlantis/server/events.(*DefaultCommandRunner).RunCommentCommand\n\tgithub.com/runatlantis/atlantis/server/events/command_runner.go:296"}atlantis-0 atlantis {"level":"info","ts":"2022-10-11T20:30:50.743Z","caller":"models/shell_command_runner.go:156","msg":"successfully ran \"/usr/local/bin/terraform0.13.7 plan -input=false -refresh -out \\\"/atlantis-data/repos/myorg/terraform/423/default/environments/myorg-preprd/preprd/default.tfplan\\\"\" in \"/atlantis-data/repos/myorg/terraform/423/default/environments/myorg-preprd/preprd\"","json":{"repo":"myorg/terraform","pull":"423"}}
atlantis-0 atlantis {"level":"info","ts":"2022-10-11T20:30:51.085Z","caller":"events/instrumented_project_command_runner.go:53","msg":"plan success. output available at: https://github.com/myorg/terraform/pull/423","json":{"repo":"myorg/terraform","pull":"423"}}
atlantis-0 atlantis {"level":"info","ts":"2022-10-11T20:31:36.239Z","caller":"events/events_controller.go:533","msg":"parsed comment as command=\"apply\" verbose=false dir=\"\" workspace=\"\" project=\"\" flags=\"\"","json":{"gh-request-id":"X-Github-Delivery=b3539690-49a3-11ed-942d-b98d8f8893e6"}}
atlantis-0 atlantis {"level":"error","ts":"2022-10-11T20:31:38.253Z","caller":"events/command_runner.go:427","msg":"PANIC: runtime error: invalid memory address or nil pointer dereference\nruntime/panic.go:260 (0x44c995)\nruntime/signal_unix.go:835 (0x44c965)\ngithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:329 (0xb8be0b)\ngithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:398 (0xb8c3d7)\ngithub.com/runatlantis/atlantis/server/events/vcs/instrumented_client.go:179 (0xb92dcb)\ngithub.com/runatlantis/atlantis/server/events/vcs/proxy.go:72 (0xb947c4)\ngithub.com/runatlantis/atlantis/server/events/vcs/pull_status_fetcher.go:28 (0xb95045)\ngithub.com/runatlantis/atlantis/server/events/apply_command_runner.go:108 (0xd74c15)\ngithub.com/runatlantis/atlantis/server/events/command_runner.go:296 (0xd79823)\nruntime/asm_amd64.s:1594 (0x467ca0)\n","json":{"repo":"myorg/terraform","pull":"423"},"stacktrace":"github.com/runatlantis/atlantis/server/events.(*DefaultCommandRunner).logPanics\n\tgithub.com/runatlantis/atlantis/server/events/command_runner.go:427\nruntime.gopanic\n\truntime/panic.go:890\nruntime.panicmem\n\truntime/panic.go:260\nruntime.sigpanic\n\truntime/signal_unix.go:835\ngithub.com/runatlantis/atlantis/server/events/vcs.(*GithubClient).GetCombinedStatusMinusApply\n\tgithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:329\ngithub.com/runatlantis/atlantis/server/events/vcs.(*GithubClient).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:398\ngithub.com/runatlantis/atlantis/server/events/vcs.(*InstrumentedClient).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/instrumented_client.go:179\ngithub.com/runatlantis/atlantis/server/events/vcs.(*ClientProxy).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/proxy.go:72\ngithub.com/runatlantis/atlantis/server/events/vcs.(*pullReqStatusFetcher).FetchPullStatus\n\tgithub.com/runatlantis/atlantis/server/events/vcs/pull_status_fetcher.go:28\ngithub.com/runatlantis/atlantis/server/events.(*ApplyCommandRunner).Run\n\tgithub.com/runatlantis/atlantis/server/events/apply_command_runner.go:108\ngithub.com/runatlantis/atlantis/server/events.(*DefaultCommandRunner).RunCommentCommand\n\tgithub.com/runatlantis/atlantis/server/events/command_runner.go:296"}
atlantis-0 atlantis {"level":"info","ts":"2022-10-11T20:33:21.288Z","caller":"events/events_controller.go:533","msg":"parsed comment as command=\"apply\" verbose=false dir=\"\" workspace=\"\" project=\"\" flags=\"\"","json":{"gh-request-id":"X-Github-Delivery=f1dc0aa0-49a3-11ed-9c31-8f78a882a809"}}
atlantis-0 atlantis {"level":"error","ts":"2022-10-11T20:33:23.747Z","caller":"events/command_runner.go:427","msg":"PANIC: runtime error: invalid memory address or nil pointer dereference\nruntime/panic.go:260 (0x44c995)\nruntime/signal_unix.go:835 (0x44c965)\ngithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:329 (0xb8be0b)\ngithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:398 (0xb8c3d7)\ngithub.com/runatlantis/atlantis/server/events/vcs/instrumented_client.go:179 (0xb92dcb)\ngithub.com/runatlantis/atlantis/server/events/vcs/proxy.go:72 (0xb947c4)\ngithub.com/runatlantis/atlantis/server/events/vcs/pull_status_fetcher.go:28 (0xb95045)\ngithub.com/runatlantis/atlantis/server/events/apply_command_runner.go:108 (0xd74c15)\ngithub.com/runatlantis/atlantis/server/events/command_runner.go:296 (0xd79823)\nruntime/asm_amd64.s:1594 (0x467ca0)\n","json":{"repo":"myorg/terraform","pull":"423"},"stacktrace":"github.com/runatlantis/atlantis/server/events.(*DefaultCommandRunner).logPanics\n\tgithub.com/runatlantis/atlantis/server/events/command_runner.go:427\nruntime.gopanic\n\truntime/panic.go:890\nruntime.panicmem\n\truntime/panic.go:260\nruntime.sigpanic\n\truntime/signal_unix.go:835\ngithub.com/runatlantis/atlantis/server/events/vcs.(*GithubClient).GetCombinedStatusMinusApply\n\tgithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:329\ngithub.com/runatlantis/atlantis/server/events/vcs.(*GithubClient).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:398\ngithub.com/runatlantis/atlantis/server/events/vcs.(*InstrumentedClient).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/instrumented_client.go:179\ngithub.com/runatlantis/atlantis/server/events/vcs.(*ClientProxy).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/proxy.go:72\ngithub.com/runatlantis/atlantis/server/events/vcs.(*pullReqStatusFetcher).FetchPullStatus\n\tgithub.com/runatlantis/atlantis/server/events/vcs/pull_status_fetcher.go:28\ngithub.com/runatlantis/atlantis/server/events.(*ApplyCommandRunner).Run\n\tgithub.com/runatlantis/atlantis/server/events/apply_command_runner.go:108\ngithub.com/runatlantis/atlantis/server/events.(*DefaultCommandRunner).RunCommentCommand\n\tgithub.com/runatlantis/atlantis/server/events/command_runner.go:296"}
atlantis-0 atlantis {"level":"info","ts":"2022-10-11T20:34:33.993Z","caller":"events/events_controller.go:533","msg":"parsed comment as command=\"apply\" verbose=false dir=\"environments/devtools/primary\" workspace=\"\" project=\"\" flags=\"\"","json":{"gh-request-id":"X-Github-Delivery=1d4308b0-49a4-11ed-8c8a-18570fd37789"}}
atlantis-0 atlantis {"level":"error","ts":"2022-10-11T20:34:36.121Z","caller":"events/command_runner.go:427","msg":"PANIC: runtime error: invalid memory address or nil pointer dereference\nruntime/panic.go:260 (0x44c995)\nruntime/signal_unix.go:835 (0x44c965)\ngithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:329 (0xb8be0b)\ngithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:398 (0xb8c3d7)\ngithub.com/runatlantis/atlantis/server/events/vcs/instrumented_client.go:179 (0xb92dcb)\ngithub.com/runatlantis/atlantis/server/events/vcs/proxy.go:72 (0xb947c4)\ngithub.com/runatlantis/atlantis/server/events/vcs/pull_status_fetcher.go:28 (0xb95045)\ngithub.com/runatlantis/atlantis/server/events/apply_command_runner.go:108 (0xd74c15)\ngithub.com/runatlantis/atlantis/server/events/command_runner.go:296 (0xd79823)\nruntime/asm_amd64.s:1594 (0x467ca0)\n","json":{"repo":"myorg/terraform","pull":"423"},"stacktrace":"github.com/runatlantis/atlantis/server/events.(*DefaultCommandRunner).logPanics\n\tgithub.com/runatlantis/atlantis/server/events/command_runner.go:427\nruntime.gopanic\n\truntime/panic.go:890\nruntime.panicmem\n\truntime/panic.go:260\nruntime.sigpanic\n\truntime/signal_unix.go:835\ngithub.com/runatlantis/atlantis/server/events/vcs.(*GithubClient).GetCombinedStatusMinusApply\n\tgithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:329\ngithub.com/runatlantis/atlantis/server/events/vcs.(*GithubClient).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/github_client.go:398\ngithub.com/runatlantis/atlantis/server/events/vcs.(*InstrumentedClient).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/instrumented_client.go:179\ngithub.com/runatlantis/atlantis/server/events/vcs.(*ClientProxy).PullIsMergeable\n\tgithub.com/runatlantis/atlantis/server/events/vcs/proxy.go:72\ngithub.com/runatlantis/atlantis/server/events/vcs.(*pullReqStatusFetcher).FetchPullStatus\n\tgithub.com/runatlantis/atlantis/server/events/vcs/pull_status_fetcher.go:28\ngithub.com/runatlantis/atlantis/server/events.(*ApplyCommandRunner).Run\n\tgithub.com/runatlantis/atlantis/server/events/apply_command_runner.go:108\ngithub.com/runatlantis/atlantis/server/events.(*DefaultCommandRunner).RunCommentCommand\n\tgithub.com/runatlantis/atlantis/server/events/command_runner.go:296"}
pauloconnor commented 2 years ago

running atlantis:v0.20.1, parallel_plan: true works for me without locking issues, but i get the below error when trying to run atlantis apply -d environments/myorg-preprd/preprd. all environments use the default workspace

It's probably worth opening a separate issue, since that's not related to releasing a v1.0.0. PANIC: runtime error: invalid memory address or nil pointer would suggest an issue with your deployment which would require a lot more details

nitrocode commented 1 year ago

I think atlantis has been in production for years, I believe the 1.0.0 release is just a number, not an actual representation of where atlantis is.

The question isn't whether this project is used in production. It's used quite a bit in production. The idea of this ticket is to legitimize it's production readiness. Some potential users and existing users that I've spoken to have shared feedback that they are hesitant in adopting/continuing with atlantis due to the lack of a 1.0 release. They assume that this project is in "beta". Therefore a 1.0 release would legitimize it.

Terraform and other projects have done the same. They were in a "forever beta" and then when 0.15.x hit, they focused on stability, and then renamed it to 1.0 and continued with their minor (1.x.y) releases.

As mentioned in Slack, I personally think that making atlantis, hmm, cloud-native would be a such missing thing for version 1.0. By cloud-native here I mean having a separate repository and plan storage, and locking db (which is already implemented) so that Atlantis can be horizontally scaled in Kubernetes or otherwise usable with Google Cloud Run or similar tools from other cloud providers.

There are a few open source projects that I'm aware of that are cloud specific and cloud agnostic

EFS discussions

Let's try to keep this issue related to 1.0 release and move those discussions to a separate ticket or github discussion.

running atlantis:v0.20.1, parallel_plan: true works for me without locking issues, but i get the below error when trying to run atlantis apply -d environments/myorg-preprd/preprd. all environments use the default workspace

Parallel plan issues are documented. Let's keep that discussion in those respective tickets.

A new PR https://github.com/runatlantis/atlantis/pull/2921 that was submitted recently seeks to use TF_DATA_DIR to reduce clones and allow better parallel workflows for workspaces.


I think Nish (the first person to mention a 1.0 release, quoted above) was correct that that the VCS logic separated from this repo would be essential as that would

I created a separate issue to track it https://github.com/runatlantis/atlantis/issues/2991

jamengual commented 1 year ago

I think we should pick from the PRs we have in flight ( which are considerable improvements/features) and set them for milestone 1.0 and release 1.0. I think we have been already in a good place to release 1.0 for a long time.

On Mon, Jan 16, 2023 at 7:10 AM nitrocode @.***> wrote:

I think atlantis has been in production for years, I believe the 1.0.0 release is just a number, not an actual representation of where atlantis is.

The question isn't whether this project is used in production. It's used quite a bit in production. The idea of this ticket is to legitimize it's production readiness. Some potential users and existing users that I've spoken to have shared feedback that they are hesitant in adopting/continuing with atlantis due to the lack of a 1.0 release. They assume that this project is in "beta". Therefore a 1.0 release would legitimize it.

Terraform and other projects have done the same. They were in a "forever beta" and then when 0.15.x hit, they focused on stability, and then renamed it to 1.0 and continued with their minor (1.x.y) releases.

As mentioned in Slack, I personally think that making atlantis, hmm, cloud-native would be a such missing thing for version 1.0. By cloud-native here I mean having a separate repository and plan storage, and locking db (which is already implemented) so that Atlantis can be horizontally scaled in Kubernetes or otherwise usable with Google Cloud Run or similar tools from other cloud providers.

There are 2 open source projects that I'm aware of that are cloud specific.

EFS discussions

Let's try to keep this issue related to 1.0 release and move those discussions to a separate ticket or github discussion.

running atlantis:v0.20.1, parallel_plan: true works for me without locking issues, but i get the below error when trying to run atlantis apply -d environments/myorg-preprd/preprd. all environments use the default workspace

Parallel plan issues are documented. Let's keep that discussion in those respective tickets.

A new PR #2921 https://github.com/runatlantis/atlantis/pull/2921 that was submitted recently seeks to use TF_DATA_DIR to reduce clones and allow better parallel workflows for workspaces.

I think Nish (the first person to mention a 1.0 release, quoted above) was correct that that the VCS logic separated from this repo would be essential as that would

  • reduce code in atlantis repo
  • faster builds and tests of atlantis
  • allow maintainers to split github, gitlab, bitbucket, azuredevops, etc into its own repos
    • the repo may not even be managed by maintainers since most of the maintainers are on github
  • allow users and devs to contribute their own custom VCS providers

— Reply to this email directly, view it on GitHub https://github.com/runatlantis/atlantis/issues/2496#issuecomment-1384194297, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAQ3ERBTAO4XKRR3XD5ICGTWSVQHBANCNFSM6AAAAAAQGGHRHQ . You are receiving this because you were mentioned.Message ID: @.***>

nitrocode commented 1 year ago

I'd be okay with renaming the upcoming 0.22.3 release as 1.0.0 if you and other maintainers are ok with that.

cc @runatlantis/maintainers

nitrocode commented 1 year ago

@krrrr38 brought up a good point in slack and mentioned that we should probably deprecate older flags and remove them from documentation.

Perhaps we should release the upcoming 0.22.3 as planned and save 1.0 once we get PRs for the above removal. There might be some other easy ideas that we may want to add prior to 1.0 since it is a major release.

Created https://github.com/runatlantis/atlantis/issues/2992