Skip to content

Commit 90e471e

Browse files
committed
PEP 458: Add RSTUF services in the Warehouse Infra
This commit adds the RSTUF services to the Warehouse infrastructure for development and sets the minimum required to start RSTUF services. It adds the RSTUF API, which is used later to integrate into Warehouse and RSTUF Worker, which is responsible for computing the TUF metadata. The RSTUF requires the Postgres and Redis. Postgres stores the rstuf database used for TUF metadata computing. Redis stores the task message queue between RSTUF API and Worker, task backend result, and live settings between RSTUF services. RSTUF shares the same Postgres and Redis in development environment but has a specific setup to use its own Postgres database and Redis database ID. Postgresql URI `RSTUF_SQL_SERVER=postgresql://postgres@db:5432/rstuf` Redis DB Broker and Result is id 1 `RSTUF_BROKER_SERVER=redis://redis/1` `RSTUF_REDIS_SERVER_DB_RESULT=1` Redis DB for TUF repository settings is 2 `RSTUF_REDIS_SERVER_DB_REPO_SETTINGS=2` This commit also includes TUF database creation in the Makefile during the `make initdb`. Signed-off-by: Kairo de Araujo <[email protected]>
1 parent 6c58290 commit 90e471e

File tree

3 files changed

+44
-9
lines changed

3 files changed

+44
-9
lines changed

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ initdb: .state/docker-build-base
101101
docker compose run --rm web psql -h db -d postgres -U postgres -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname ='warehouse';"
102102
docker compose run --rm web psql -h db -d postgres -U postgres -c "DROP DATABASE IF EXISTS warehouse"
103103
docker compose run --rm web psql -h db -d postgres -U postgres -c "CREATE DATABASE warehouse ENCODING 'UTF8'"
104+
docker compose run --rm web psql -h db -d postgres -U postgres -c "DROP DATABASE IF EXISTS rstuf"
105+
docker compose run --rm web psql -h db -d postgres -U postgres -c "CREATE DATABASE rstuf ENCODING 'UTF8'"
104106
docker compose run --rm web bash -c "xz -d -f -k dev/$(DB).sql.xz --stdout | psql -h db -d warehouse -U postgres -v ON_ERROR_STOP=1 -1 -f -"
105107
docker compose run --rm web psql -h db -d warehouse -U postgres -c "UPDATE users SET name='Ee Durbin' WHERE username='ewdurbin'"
106108
$(MAKE) runmigrations
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0f6f30eb3328a1d580313b4af01ac79a@@@@100000@@@@fcc8a33399d89b2e57ab5c8f547d175bd676fd7fd24b5c0582d166911a551558@@@@3428d03305625b390d5f5fb1a3ee4bfc@@@@d80049a3b85e0aff77ddd5dc10369c00eda2e0bdb22b05d0e30a733400d3592ea2028f0122f00f4dad60a3974e89047b7df344db56159956f8b43bc64f81f9bcea72ff3d92cc57218519768b522f61a56706f84c99fb89e063ad286c7fd6b19dd43ae11f6b3f73172d149cca85ac672ba0b574f1b9a0fd603afe1a0c91fa57bb0830644ecdc01ef8161b515ee4ffd7170c5bb4b221c04a05392a80b2b0d597bea737011e6a9fbb1c0e259f8ee02e671c2a0e096a54b050d34e016fbe23e9617997d2a73d5bfc78be0351b983f960e9338c05588a7ccf040116531ed548d8030dea1c1da4da3693330317b0b5cc133940476b806715f8704e9319fdaf7669f3b590335296ebe74de97465a6f1c9c6484ab162a2d9d5ebaad8232e1818484bb2b301bf3ebfb4d89c0cc779b04338f2e1ed15858d7dcbca743eef632d865a019760a101b82835cca08201b3f47fcac54fc7

docker-compose.yml

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,16 @@ volumes:
88
policies:
99
vault:
1010
caches:
11+
rstuf-worker-data:
12+
rstuf-metadata:
1113

1214
services:
1315
vault:
1416
# NOTE: pinned for consistency with whats available in our deployment
1517
image: vault:1.12.3
1618
restart: on-failure
1719
entrypoint: /bin/sh
18-
command: /etc/vault/entry.sh
19-
stop_signal: SIGINT
20+
command: ["/etc/vault/entry.sh"]
2021
environment:
2122
VAULT_DEV_LISTEN_ADDRESS: 0.0.0.0:8200
2223
VAULT_DEV_ROOT_TOKEN_ID: "an insecure vault access token"
@@ -50,7 +51,6 @@ services:
5051

5152
localstack:
5253
image: localstack/localstack:1.4
53-
stop_signal: SIGKILL
5454
environment:
5555
SERVICES: "sqs"
5656
HOSTNAME: "localstack"
@@ -112,6 +112,8 @@ services:
112112
# Included to support linters during development
113113
- ./gunicorn-prod.conf.py:/opt/warehouse/src/gunicorn-prod.conf.py:z
114114
- ./gunicorn-uploads.conf.py:/opt/warehouse/src/gunicorn-uploads.conf.py:z
115+
- rstuf-metadata:/var/opt/warehouse/metadata
116+
- ./dev/tufkeys:/opt/warehouse/src/dev/tufkeys:z
115117

116118
web:
117119
image: warehouse:docker-compose
@@ -136,12 +138,12 @@ services:
136138
pull_policy: never
137139
working_dir: /var/opt/warehouse
138140
command: python -m http.server 9001
139-
stop_signal: SIGINT
140141
volumes:
141142
- packages:/var/opt/warehouse/packages
142143
- packages-archive:/var/opt/warehouse/packages-archive
143144
- sponsorlogos:/var/opt/warehouse/sponsorlogos
144145
- simple:/var/opt/warehouse/simple
146+
- rstuf-metadata:/var/opt/warehouse/metadata
145147
ports:
146148
- "9001:9001"
147149

@@ -160,6 +162,40 @@ services:
160162
ARCHIVE_FILES_BACKEND: "warehouse.packaging.services.LocalArchiveFileStorage path=/var/opt/warehouse/packages-archive/ url=http://files:9001/packages-archive/{path}"
161163
SIMPLE_BACKEND: "warehouse.packaging.services.LocalSimpleStorage path=/var/opt/warehouse/simple/ url=http://files:9001/simple/{path}"
162164

165+
rstuf-api:
166+
image: ghcr.io/repository-service-tuf/repository-service-tuf-api:latest
167+
ports:
168+
- 8001:80
169+
environment:
170+
- RSTUF_BROKER_SERVER=redis://redis/1
171+
- RSTUF_REDIS_SERVER=redis://redis
172+
- RSTUF_REDIS_SERVER_DB_RESULT=1
173+
- RSTUF_REDIS_SERVER_DB_REPO_SETTINGS=2
174+
175+
rstuf-worker:
176+
image: ghcr.io/repository-service-tuf/repository-service-tuf-worker:latest
177+
volumes:
178+
- rstuf-metadata:/var/opt/repository-service-tuf/storage
179+
- ./dev/rstuf/keys/online:/var/opt/repository-service-tuf/keystorage
180+
environment:
181+
- RSTUF_STORAGE_BACKEND=LocalStorage
182+
- RSTUF_LOCAL_STORAGE_BACKEND_PATH=/var/opt/repository-service-tuf/storage
183+
- RSTUF_KEYVAULT_BACKEND=LocalKeyVault
184+
- RSTUF_LOCAL_KEYVAULT_PATH=/var/opt/repository-service-tuf/keystorage
185+
- RSTUF_LOCAL_KEYVAULT_KEYS="192e4994afd0bc3168eac3a043c6ce6f207d8d0784eee1355a1af20e83364a5e,secret"
186+
- RSTUF_BROKER_SERVER=redis://redis/1
187+
- RSTUF_REDIS_SERVER=redis://redis
188+
- RSTUF_REDIS_SERVER_DB_RESULT=1
189+
- RSTUF_REDIS_SERVER_DB_REPO_SETTINGS=2
190+
- RSTUF_SQL_SERVER=postgresql://postgres@db:5432/rstuf
191+
healthcheck:
192+
test: "exit 0"
193+
restart: always
194+
tty: true
195+
depends_on:
196+
db:
197+
condition: service_healthy
198+
163199
static:
164200
build:
165201
context: .
@@ -169,8 +205,7 @@ services:
169205
- "35729:35729" # LiveReload
170206
environment:
171207
NODE_ENV: "development"
172-
command: ["npm", "run", "watch"]
173-
stop_signal: SIGKILL
208+
command: bash -c "npm run watch"
174209
volumes:
175210
- ./warehouse:/opt/warehouse/src/warehouse:z
176211
- ./webpack.config.js:/opt/warehouse/src/webpack.config.js:z
@@ -190,7 +225,6 @@ services:
190225
image: warehouse:docker-compose
191226
pull_policy: never
192227
command: python /opt/warehouse/dev/notdatadog.py 0.0.0.0:8125
193-
stop_signal: SIGINT
194228
environment:
195229
METRICS_OUTPUT: "false"
196230
ports:
@@ -218,7 +252,6 @@ services:
218252
image: warehouse:docker-compose-docs
219253
pull_policy: never
220254
command: mkdocs serve -a 0.0.0.0:8000 -f docs/mkdocs-user-docs.yml
221-
stop_signal: SIGINT
222255
volumes:
223256
- ./bin:/opt/warehouse/src/bin:z
224257
- ./docs/mkdocs-user-docs.yml:/opt/warehouse/src/docs/mkdocs-user-docs.yml:z
@@ -230,7 +263,6 @@ services:
230263
image: warehouse:docker-compose-docs
231264
pull_policy: never
232265
command: mkdocs serve -a 0.0.0.0:8000 -f docs/mkdocs-blog.yml
233-
stop_signal: SIGINT
234266
volumes:
235267
# we mount git because rss, thanks feed nerds
236268
- ./.git:/opt/warehouse/src/.git:ro

0 commit comments

Comments
 (0)