Skip to content

Commit ab2cdb8

Browse files
External Locking DB: Redis (#2491)
* Initial build out of redis backend * Regenerate locking mocks and matchers * More test cleanup * More test fixes * Added tests for redis * Test fix * Linting fix * Dcos update * Update redis.go * Update server.go * Adding nolint to RedisDB struct
1 parent 2154678 commit ab2cdb8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+1764
-102
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ helm/test-values.yaml
1414
golangci-lint
1515
atlantis
1616
.devcontainer
17+
atlantis.env
1718

1819
# gitreleaser
1920
dist/

CONTRIBUTING.md

+2
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,8 @@ We use [pegomock](https://github.com/petergtz/pegomock) for mocking. If you're
130130
modifying any interfaces that are mocked, you'll need to regen the mocks for that
131131
interface.
132132
133+
Install using `go get github.com/petergtz/pegomock/pegomock`
134+
133135
If you see errors like:
134136
```
135137
# github.com/runatlantis/atlantis/server/events [github.com/runatlantis/atlantis/server/events.test]

cmd/server.go

+26
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,15 @@ const (
8080
GitlabWebhookSecretFlag = "gitlab-webhook-secret" // nolint: gosec
8181
APISecretFlag = "api-secret"
8282
HidePrevPlanComments = "hide-prev-plan-comments"
83+
LockingDBType = "locking-db-type"
8384
LogLevelFlag = "log-level"
8485
ParallelPoolSize = "parallel-pool-size"
8586
StatsNamespace = "stats-namespace"
8687
AllowDraftPRs = "allow-draft-prs"
8788
PortFlag = "port"
89+
RedisHost = "redis-host"
90+
RedisPassword = "redis-password"
91+
RedisPort = "redis-port"
8892
RepoConfigFlag = "repo-config"
8993
RepoConfigJSONFlag = "repo-config-json"
9094
// RepoWhitelistFlag is deprecated for RepoAllowlistFlag.
@@ -123,10 +127,12 @@ const (
123127
DefaultDataDir = "~/.atlantis"
124128
DefaultGHHostname = "github.com"
125129
DefaultGitlabHostname = "gitlab.com"
130+
DefaultLockingDBType = "boltdb"
126131
DefaultLogLevel = "info"
127132
DefaultParallelPoolSize = 15
128133
DefaultStatsNamespace = "atlantis"
129134
DefaultPort = 4141
135+
DefaultRedisPort = 6379
130136
DefaultTFDownloadURL = "https://releases.hashicorp.com"
131137
DefaultTFEHostname = "app.terraform.io"
132138
DefaultVCSStatusName = "atlantis"
@@ -264,6 +270,10 @@ var stringFlags = map[string]stringFlag{
264270
APISecretFlag: {
265271
description: "Secret to validate requests made to the API",
266272
},
273+
LockingDBType: {
274+
description: "The locking database type to use for storing plan and apply locks.",
275+
defaultValue: DefaultLockingDBType,
276+
},
267277
LogLevelFlag: {
268278
description: "Log level. Either debug, info, warn, or error.",
269279
defaultValue: DefaultLogLevel,
@@ -272,6 +282,12 @@ var stringFlags = map[string]stringFlag{
272282
description: "Namespace for aggregating stats.",
273283
defaultValue: DefaultStatsNamespace,
274284
},
285+
RedisHost: {
286+
description: "The Redis Hostname for when using a Locking DB type of 'redis'.",
287+
},
288+
RedisPassword: {
289+
description: "The Redis Password for when using a Locking DB type of 'redis'.",
290+
},
275291
RepoConfigFlag: {
276292
description: "Path to a repo config file, used to customize how Atlantis runs on each repo. See runatlantis.io/docs for more details.",
277293
},
@@ -450,6 +466,10 @@ var intFlags = map[string]intFlag{
450466
description: "Port to bind to.",
451467
defaultValue: DefaultPort,
452468
},
469+
RedisPort: {
470+
description: "The Redis Port for when using a Locking DB type of 'redis'.",
471+
defaultValue: DefaultRedisPort,
472+
},
453473
}
454474

455475
var int64Flags = map[string]int64Flag{
@@ -672,6 +692,9 @@ func (s *ServerCmd) setDefaults(c *server.UserConfig) {
672692
if c.BitbucketBaseURL == "" {
673693
c.BitbucketBaseURL = DefaultBitbucketBaseURL
674694
}
695+
if c.LockingDBType == "" {
696+
c.LockingDBType = DefaultLockingDBType
697+
}
675698
if c.LogLevel == "" {
676699
c.LogLevel = DefaultLogLevel
677700
}
@@ -684,6 +707,9 @@ func (s *ServerCmd) setDefaults(c *server.UserConfig) {
684707
if c.Port == 0 {
685708
c.Port = DefaultPort
686709
}
710+
if c.RedisPort == 0 {
711+
c.RedisPort = DefaultRedisPort
712+
}
687713
if c.TFDownloadURL == "" {
688714
c.TFDownloadURL = DefaultTFDownloadURL
689715
}

cmd/server_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ var testFlags = map[string]interface{}{
8484
GitlabTokenFlag: "gitlab-token",
8585
GitlabUserFlag: "gitlab-user",
8686
GitlabWebhookSecretFlag: "gitlab-secret",
87+
LockingDBType: "boltdb",
8788
LogLevelFlag: "debug",
8889
StatsNamespace: "atlantis",
8990
AllowDraftPRs: true,

docker-compose.yml

+15-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,17 @@ services:
1212
NGROK_PORT: atlantis:4141
1313
depends_on:
1414
- atlantis
15+
redis:
16+
image: redis:6.2-alpine
17+
restart: always
18+
ports:
19+
- '6379:6379'
20+
command: redis-server --save 20 1 --loglevel warning --requirepass test123
21+
volumes:
22+
- redis:/data
1523
atlantis:
24+
depends_on:
25+
- redis
1626
build:
1727
context: .
1828
dockerfile: Dockerfile.dev
@@ -23,4 +33,8 @@ services:
2333
- ./:/atlantis/src
2434
# Contains the flags that atlantis uses in env var form
2535
env_file:
26-
- ./atlantis.env
36+
- ./atlantis.env
37+
38+
volumes:
39+
redis:
40+
driver: local

go.mod

+13-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ require (
1313
github.com/elazarl/go-bindata-assetfs v1.0.1
1414
github.com/flynn-archive/go-shlex v0.0.0-20150515145356-3f9db97f8568
1515
github.com/go-ozzo/ozzo-validation v0.0.0-20170913164239-85dcd8368eba
16+
github.com/go-redis/redis/v8 v8.11.5
1617
github.com/go-test/deep v1.0.8
1718
github.com/golang-jwt/jwt/v4 v4.4.2
1819
github.com/google/go-github/v31 v31.0.0
@@ -92,7 +93,7 @@ require (
9293
github.com/mitchellh/go-wordwrap v1.0.0 // indirect
9394
github.com/mitchellh/mapstructure v1.5.0 // indirect
9495
github.com/mitchellh/reflectwalk v1.0.0 // indirect
95-
github.com/onsi/gomega v1.10.1 // indirect
96+
github.com/onsi/gomega v1.20.0 // indirect
9697
github.com/pelletier/go-toml v1.9.5 // indirect
9798
github.com/pmezard/go-difflib v1.0.0 // indirect
9899
github.com/russross/blackfriday/v2 v2.0.1 // indirect
@@ -135,14 +136,24 @@ require (
135136
require (
136137
cloud.google.com/go/compute v1.6.1 // indirect
137138
cloud.google.com/go/iam v0.3.0 // indirect
139+
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
140+
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect
141+
github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a // indirect
142+
github.com/alicebob/miniredis/v2 v2.23.0 // indirect
138143
github.com/beorn7/perks v1.0.1 // indirect
144+
github.com/cespare/xxhash/v2 v2.1.2 // indirect
145+
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
146+
github.com/go-redis/redis/v9 v9.0.0-beta.2 // indirect
139147
github.com/google/go-github/v45 v45.2.0 // indirect
140148
github.com/m3db/prometheus_client_golang v0.8.1 // indirect
141149
github.com/m3db/prometheus_client_model v0.1.0 // indirect
142150
github.com/m3db/prometheus_common v0.1.0 // indirect
143151
github.com/m3db/prometheus_procfs v0.8.1 // indirect
144152
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
145-
github.com/onsi/ginkgo v1.14.0 // indirect
153+
github.com/onsi/ginkgo v1.16.5 // indirect
146154
github.com/pelletier/go-toml/v2 v2.0.1 // indirect
155+
github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9 // indirect
156+
golang.org/x/tools v0.1.5 // indirect
157+
gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect
147158
gotest.tools/v3 v3.3.0 // indirect
148159
)

go.sum

+29
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,17 @@ github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki
7474
github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
7575
github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
7676
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
77+
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
7778
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
7879
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
7980
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
8081
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
82+
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc=
83+
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
84+
github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZpUGpz5+4FfNmIU+FmZg2P3Xaj2v2bfNWmk=
85+
github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
86+
github.com/alicebob/miniredis/v2 v2.23.0 h1:+lwAJYjvvdIVg6doFHuotFjueJ/7KY10xo/vm3X3Scw=
87+
github.com/alicebob/miniredis/v2 v2.23.0/go.mod h1:XNqvJdQJv5mSuVMc0ynneafpnL/zv52acZ6kqeS0t88=
8188
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
8289
github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
8390
github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0=
@@ -113,6 +120,8 @@ github.com/cactus/go-statsd-client/statsd v0.0.0-20200623234511-94959e3146b2 h1:
113120
github.com/cactus/go-statsd-client/statsd v0.0.0-20200623234511-94959e3146b2/go.mod h1:l/bIBLeOl9eX+wxJAzxS4TveKRtAqlyDpHjhkfO0MEI=
114121
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
115122
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
123+
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
124+
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
116125
github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
117126
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
118127
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
@@ -129,6 +138,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
129138
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
130139
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
131140
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
141+
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
142+
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
132143
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
133144
github.com/elazarl/go-bindata-assetfs v1.0.1 h1:m0kkaHRKEu7tUIUFVwhGGGYClXvyl4RE03qmvRTNfbw=
134145
github.com/elazarl/go-bindata-assetfs v1.0.1/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
@@ -162,8 +173,13 @@ github.com/go-playground/locales v0.12.1 h1:2FITxuFt/xuCNP1Acdhv62OzaCiviiE4kotf
162173
github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM=
163174
github.com/go-playground/universal-translator v0.16.0 h1:X++omBR/4cE2MNg91AoC3rmGrCjJ8eAeUP/K/EKx4DM=
164175
github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY=
176+
github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
177+
github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
178+
github.com/go-redis/redis/v9 v9.0.0-beta.2 h1:ZSr84TsnQyKMAg8gnV+oawuQezeJR11/09THcWCQzr4=
179+
github.com/go-redis/redis/v9 v9.0.0-beta.2/go.mod h1:Bldcd/M/bm9HbnNPi/LUtYBSD8ttcZYBMupwMXhdU0o=
165180
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
166181
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
182+
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
167183
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
168184
github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
169185
github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
@@ -439,13 +455,19 @@ github.com/nlopes/slack v0.4.0 h1:OVnHm7lv5gGT5gkcHsZAyw++oHVFihbjWbL3UceUpiA=
439455
github.com/nlopes/slack v0.4.0/go.mod h1:jVI4BBK3lSktibKahxBF74txcK2vyvkza1z/+rRnVAM=
440456
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
441457
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
458+
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
459+
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
442460
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
443461
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
444462
github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA=
445463
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
464+
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
465+
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
446466
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
447467
github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE=
448468
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
469+
github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q=
470+
github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
449471
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
450472
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
451473
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
@@ -556,6 +578,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
556578
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
557579
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
558580
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
581+
github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9 h1:k/gmLsJDWwWqbLCur2yWnJzwQEKRcAHXo6seXGuSwWw=
582+
github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA=
559583
github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
560584
github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8=
561585
github.com/zclconf/go-cty v1.5.1 h1:oALUZX+aJeEBUe2a1+uD2+UTaYfEjnKFDEMRydkGvWE=
@@ -723,6 +747,7 @@ golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5h
723747
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
724748
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
725749
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
750+
golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
726751
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
727752
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
728753
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -769,6 +794,7 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
769794
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
770795
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
771796
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
797+
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
772798
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
773799
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
774800
golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -869,6 +895,7 @@ golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82u
869895
golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
870896
golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
871897
golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
898+
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
872899
golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
873900
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
874901
golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
@@ -877,6 +904,7 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
877904
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
878905
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
879906
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
907+
golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA=
880908
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
881909
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
882910
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1029,6 +1057,7 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
10291057
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
10301058
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
10311059
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
1060+
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
10321061
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
10331062
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
10341063
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

runatlantis.io/docs/server-configuration.md

+28
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,16 @@ Values are chosen in this order:
422422
Hide previous plan comments to declutter PRs. This is only supported in
423423
GitHub currently.
424424

425+
### `--locking-db-type`
426+
```bash
427+
atlantis server --locking-db-type="<boltdb|redis>"
428+
```
429+
The locking database type to use for storing plan and apply locks. Defaults to `boltdb`.
430+
431+
Notes:
432+
* If set to `boltdb`, only one process may have access to the boltdb instance.
433+
* If set to `redis`, then `--redis-host`, `--redis-port`, and `--redis-password` must be set.
434+
425435
### `--log-level`
426436
```bash
427437
atlantis server --log-level="<debug|info|warn|error>"
@@ -440,6 +450,24 @@ Values are chosen in this order:
440450
```
441451
Port to bind to. Defaults to `4141`.
442452

453+
### `--redis-host`
454+
```bash
455+
atlantis server --redis-host="localhost"
456+
```
457+
The Redis Hostname for when using a Locking DB type of `redis`.
458+
459+
### `--redis-password`
460+
```bash
461+
atlantis server --redis-password="password123"
462+
```
463+
The Redis Password for when using a Locking DB type of `redis`.
464+
465+
### `--redis-port`
466+
```bash
467+
atlantis server --redis-port=6379
468+
```
469+
The Redis Port for when using a Locking DB type of `redis`. Defaults to `6379`.
470+
443471
### `--repo-config`
444472
```bash
445473
atlantis server --repo-config="path/to/repos.yaml"

0 commit comments

Comments
 (0)