summaryrefslogtreecommitdiff
path: root/README.md
blob: db58a2744f72374c81c8939df80e8851e47e874e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
---
title: Dependabot
author: mo (xlgmokha) (he/him)
date: 2021-11-17
---

# Dependabot

```plaintext
=----------------------------------------------------------------------=
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
---------------------------------*@@@@@@@-------------------------------
--------------------------------:*@@@@@@@-------------------------------
--------------------------------:#@@@@@@@-------------------------------
---------------------------------+%%%%@@@-------------------------------
--------------------------------------*@@=------------------------------
----------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*----------------
---------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=---------------
---------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=---------------
---------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=---------------
---------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=---------------
--------------:-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-:--------------
-------------+%%@@@@@@@@@@@@%+--+@@@@@@@@@@@@%+--#@@@@@@%%+-------------
-------------#@@@@@@@@%=-=#*-::=*@@@@@@%=-+#+-:-=#@@@@@@@@#-------------
-------------#@@@@@@@@@+-:-:-=#@@@@@@@@%=-:-:-=#@@@@@@@@@@#-------------
-------------#@@@@@@@@@@%+-=#@@@@@@@@@@@@%+-=#@@@@@@@@@@@@#-------------
-------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-------------
-------------=+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+=-------------
--------------:-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-:--------------
---------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=---------------
----------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#----------------
------------------===============------===============------------------
---------------------------------*####*---------------------------------
--------------------------------#@@@@@@#--------------------------------
--------------------------------@@@@@@@@--------------------------------
-------------------------------+@@@@@@@@+-------------------------------
-------------------------------%@@@@@@@@%-------------------------------
-------------------------------%@@@@@@@@%-------------------------------
--------------------------------+@@@@@@+--------------------------------
--------------------------------:-#@@#-:--------------------------------
=----------------------------------==----------------------------------=
```

# Agenda

1. What is Dependabot?
1. Map of Dependabot
1. Dependabot Internals
1. Debugging Dependabot
1. Tracepoint + Signals ?

# What is Dependabot?

```yaml
# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "bundler"
    directory: "/"
    schedule:
      interval: "daily"
```
              |
              |
              V

```diff
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -78,7 +78,7 @@ GEM
     minitest (5.14.4)
-    net-hippie (1.0.0)
+    net-hippie (1.1.1)
     nio4r (2.5.8)
```

# Map of Dependabot (dotcom)

```plaintext
   --------------
  ||-------------|
  || $ git push  |-o-o-o-o-
  ||             |        o
   ---------------        |
   \ 000000000000 \       o
    \ 000000000000 \      |
     \   \      \   \     o
      ----------------    |
         o-o-o-o-o-o-o-o-o-
         |
         o
   ------|----------------------------
   |     v        GitHub DC          |
   | ----------                      |
   | | dotcom |                      |
   | ----------                      |
   |  |                -----------   |
   |  |- webhooks, --> | 🤖-api  |   |
   |     hyro          -----|-----   |
   -------------------------|---------
                            |
   -------------------------|---------      ---------------
   |     AWS                |        |  |->-|...          |
   |                --------|------  |  |   ---------------
   |     ----------|     SQS Queue | |  |   ---------------
   |     |V        |(o,x,o,o,x,...)| |  |>--| pypi.org    |
   |     V|         ---------------  |  |   ---------------
   |     ||                          |  |   ---------------
   |  --------                       |  |-->| rubygems.org|
   | |🤖-updater|\                   |  |   ---------------
   |  --------\||\  <- The           |  |   ---------------
   |  \________\|||   ~magic~ danger |  |->-| npmjs.org   |
   |   \        \||    happens       |  |   ---------------
   |    \-----|---|    here.         |  |
   |----------|----------------------|  |
              |                         |
              |--------------------------
```

# Behind the Curtain

```plaintext
                     ______
                |-<-() SQS )
                V    ------
                |
 ---------------V----------------------------------
 | ec2-metal    |                                 |
 |              V                                 |
 |       -------|------                           |
 |       | job runner |                           |      --------------
 |       --------------                           |   |->|...         |
 |     /                \-----------------------  |   |  --------------
 |     |                | docker               |  |   |->|pypi.org    |
 |     |                | -------------------- |  |   |  --------------
 | (export env)         | |  🤖-proxy        ->->->->-|->|rubygems.org|
 |     |                | -|------------------ |  |   |  --------------
 |     |                ---|-------------------   |   |->|npmjs.org   |
 |     |                   A                      |      --------------
 |  -----------------------|-----                 |
 |  | firecracker vm       A     |\               |
 |  |                      |     ||\              |
 |  | -------------        A     |||\             |
 |  | | job guest |        |     ||||             |
 |  | -------------        A     ||||             |
 |  |    |     |           |     ||||             |
 |  | ---------------------A---- ||||             |
 |  | | docker             |   | ||||             |
 |  | | -------------------|-- | ||||             |
 |  | | | 🤖-updater         | | ||||             |
 |  | | ---------------------- | ||||             |
 |  | |------------------------- ||||             |
 |  ------------------------------|||             |
 --------------------------------------------------
```

# A little deeper down the rabbit hole

```plaintext
--------------------------      ------------------------
| 🤖-updater (private)   |      |  🤖-core (public OSS)|
--------------------------      ------------------------
| /bin                   |      | /bin                 |
|  - run.sh fetch|update |      |  - dry-run.rb        |
| /lib                   |      | /bundler             |
|  - fetch.rb            |      |  - file_fetcher      |
|  - update.rb           |      |  - file_parser       |
| Gemfile                |      |  - file_updater      |
|  - dependabot-omnibus  |----> |  - update_checker    |
|  - dependabot-bundler  |      | /npm                 |
|  - dependabot-npm      |      | /python              |
|  - dependabot-python   |      | /...                 |
|  - dependabot-...      |      |                      |
--------------------------      ------------------------
```

*  50+ Open Pull Requests
* 700+ Open Issues
* 140+ Contributors
* Supports:
  * Azure
  * BitBucket
  * GitHub
  * GitLab
* 15+ supported eco-systems
* Used by 56 Public Repos
* Oldest Open PR (2018)

https://github.com/dependabot/dependabot-core