Skip to content

Latest commit

 

History

History
108 lines (84 loc) · 4.82 KB

events-controller.md

File metadata and controls

108 lines (84 loc) · 4.82 KB

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.

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

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.

Pull Request Webhooks

The list below links to the supported VCSs and their Pull Request Webhook documentation.

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.