Back to Atlantis

Events Controller

runatlantis.io/contributing/events-controller.md

0.43.04.8 KB
Original Source

Events Controller

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:

  • Comment Event
  • Pull Request Event

All the other events are ignored.

mermaid
---
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)

Comment Event

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.

Pull Request Event

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.

</details>

The following list shows the supported events:

  • Opened Pull Request
  • Updated Pull Request
  • Closed Pull Request
  • Other Pull Request event

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.