runatlantis.io/contributing/events-controller.md
Webhooks are the primary interaction between the Version Control System (VCS)
and Atlantis. Each VCS sends the requests to the /events endpoint. The
implementation of this endpoint can be found in the
events_controller.go
file. This file contains the Post function func (e *VCSEventsController) Post(w http.ResponseWriter, r *http.Request)` that parses the request
according to the configured VCS.
Atlantis currently handles one of the following events:
All the other events are ignored.
---
title: events controller flowchart
---
flowchart LR
events(/events - Endpoint) --> Comment_Event(Comment - Event)
events --> Pull_Request_Event(Pull Request - Event)
Comment_Event --> pre_workflow(pre-workflow - Hook)
pre_workflow --> plan(plan - command)
pre_workflow --> apply(apply - command)
pre_workflow --> approve_policies(approve policies - command)
pre_workflow --> unlock(unlock - command)
pre_workflow --> version(version - command)
pre_workflow --> import(import - command)
pre_workflow --> state(state - command)
plan --> post_workflow(post-workflow - Hook)
apply --> post_workflow
approve_policies --> post_workflow
unlock --> post_workflow
version --> post_workflow
import --> post_workflow
state --> post_workflow
Pull_Request_Event --> Open_Update_PR(Open / Update Pull Request)
Pull_Request_Event --> Close_PR(Close Pull Request)
Open_Update_PR --> pre_workflow(pre-workflow - Hook)
Close_PR --> plan(plan - command)
pre_workflow --> plan
plan --> post_workflow(post-workflow - Hook)
Close_PR --> CleanUpPull(CleanUpPull)
CleanUpPull --> post_workflow(post-workflow - Hook)
This event is triggered whenever a user enters a comment on the Pull Request,
Merge Request, or whatever it's called for the respective VCS. After parsing the
VCS-specific request, the code calls the handleCommentEvent function, which
then passes the processing to the handleCommentEvent function in the
command_runner.go
file. This function first calls the pre-workflow hooks, then executes one of the
below-listed commands and, at last, the post-workflow hooks.
To handle comment events on Pull Requests, they must be created first. Atlantis also allows the running of commands for certain Pull Requests events.
<details> <summary>Pull Request Webhooks</summary>The list below links to the supported VCSs and their Pull Request Webhook documentation.
The following list shows the supported events:
The RunAutoPlanCommand function in the
command_runner.go
file is called for the Open and Update Pull Request events. When enabled on
the project, this automatically runs the plan for the specific repository.
Whenever a Pull Request is closed, the CleanUpPull function in the
instrumented_pull_closed_executor.go
file is called. This function cleans up all the closed Pull Request files,
locks, and other related information.