Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Atlantis 1.0.0 Release #2496

Open
6 of 7 tasks
nitrocode opened this issue Sep 6, 2022 · 20 comments
Open
6 of 7 tasks

Atlantis 1.0.0 Release #2496

nitrocode opened this issue Sep 6, 2022 · 20 comments
Labels
feature New functionality/enhancement needs discussion Large change that needs review from community/maintainers Stale
Milestone

Comments

@nitrocode
Copy link
Member

nitrocode commented Sep 6, 2022

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request. Searching for pre-existing feature requests helps us consolidate datapoints for identical requirements into a single place, thank you!
  • Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request.
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment.

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

@nitrocode nitrocode added the feature New functionality/enhancement label Sep 6, 2022
@jamengual
Copy link
Contributor

jamengual commented Sep 9, 2022

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?

@jamengual jamengual added the needs discussion Large change that needs review from community/maintainers label Sep 9, 2022
@stasostrovskyi
Copy link
Contributor

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
Copy link
Contributor

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
Copy link
Contributor

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
Copy link
Contributor

snorlaX-sleeps commented Sep 22, 2022

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
Copy link
Contributor

snorlaX-sleeps commented Sep 22, 2022

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
Copy link
Contributor

jamengual commented Sep 22, 2022 via email

@snorlaX-sleeps
Copy link
Contributor

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
Copy link
Contributor

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 #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
Copy link
Contributor

snorlaX-sleeps commented Oct 7, 2022

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
Copy link
Contributor

pauloconnor commented Oct 7, 2022

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
Copy link
Contributor

snorlaX-sleeps commented Oct 7, 2022

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: #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
Copy link
Contributor

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
Copy link
Contributor

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

@roulettedares
Copy link
Contributor

roulettedares commented Oct 12, 2022

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
Copy link
Contributor

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
Copy link
Member Author

nitrocode commented Jan 16, 2023

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 #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

I created a separate issue to track it #2991

@jamengual
Copy link
Contributor

jamengual commented Jan 16, 2023 via email

@nitrocode
Copy link
Member Author

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
Copy link
Member Author

nitrocode commented Jan 17, 2023

@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 #2992

@nitrocode nitrocode mentioned this issue Jan 17, 2023
1 task
@nitrocode nitrocode pinned this issue Jan 17, 2023
@nitrocode nitrocode added this to the v1.0.0 milestone Jan 31, 2023
@nitrocode nitrocode unpinned this issue Mar 10, 2023
@chenrui333 chenrui333 changed the title Atlantis 1.0 Release Atlantis 1.0.0 Release Aug 14, 2023
@dosubot dosubot bot added the Stale label Oct 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New functionality/enhancement needs discussion Large change that needs review from community/maintainers Stale
Projects
None yet
Development

No branches or pull requests

6 participants