Skip to content

Commit 69c58a0

Browse files
authored
Update prod deployment flows to match new config format (#641)
* Reorganize prod config for neatness and completeness * Prod config organization/update * Tiny alphabet adherence fix in stage * Update prod deploys to use new config variable * Resolve merge conflict * Add log level variable; fix more alphabetization
1 parent d706c7c commit 69c58a0

File tree

3 files changed

+37
-45
lines changed

3 files changed

+37
-45
lines changed

.github/workflows/release.yml

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -100,18 +100,7 @@ jobs:
100100
# Create a YAML config stump containing only the nested tree leading to the image tag update
101101
cd pulumi
102102
cat << EOF > newimage.yaml
103-
resources:
104-
tb:fargate:FargateClusterWithLogging:
105-
accounts:
106-
task_definition:
107-
container_definitions:
108-
accounts:
109-
image: "$target_tag"
110-
accounts-celery:
111-
task_definition:
112-
container_definitions:
113-
accounts:
114-
image: "$target_tag"
103+
.accounts_image: &ACCOUNTS_IMAGE "$target_tag"
115104
EOF
116105
117106
# Use yq to merge the stump into the main config
@@ -125,4 +114,6 @@ jobs:
125114
pulumi up -y --diff \
126115
--target 'urn:pulumi:prod::accounts::tb:fargate:FargateClusterWithLogging$aws:ecs/taskDefinition:TaskDefinition::accounts-prod-fargate-accounts-taskdef' \
127116
--target 'urn:pulumi:prod::accounts::tb:fargate:FargateClusterWithLogging$aws:ecs/taskDefinition:TaskDefinition::accounts-prod-fargate-accounts-celery-taskdef' \
117+
--target 'urn:pulumi:prod::accounts::aws:ecs/taskDefinition:TaskDefinition::accounts-prod-afc-accounts-taskdef-celery-prod' \
118+
--target 'urn:pulumi:prod::accounts::aws:ecs/taskDefinition:TaskDefinition::accounts-prod-afc-accounts-taskdef-flower-prod' \
128119
--target-dependents

pulumi/config.prod.yaml

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
---
2+
23
### Special variables used throughout this file
34

5+
# Update this value to update all containers based on this thunderbird/accounts image
6+
.accounts_image: &ACCOUNTS_IMAGE 768512802988.dkr.ecr.eu-central-1.amazonaws.com/thunderbird/accounts:v1.6.4
7+
8+
# Update this value to update all containers based on this Keycloak image
9+
.keycloak_image: &KEYCLOAK_IMAGE 768512802988.dkr.ecr.eu-central-1.amazonaws.com/thunderbird/accounts:keycloak-8f4b2f2785124d1c36f3b29dac0cf5a5c39e8687
10+
411
# These variables are common to Accounts application environments. Some tasks will require additional configuration.
512
.admin_contact: &VAR_ADMIN_CONTACT {name: "ADMIN_CONTACT", value: "dummy@example.org"}
613
.admin_website: &VAR_ADMIN_WEBSITE {name: "ADMIN_WEBSITE", value: "https://www.thunderbird.net"}
@@ -23,7 +30,7 @@
2330
.jmap_tls: &VAR_JMAP_TLS {name: "JMAP_TLS", value: "True"}
2431
.keycloak_admin_url_token: &VAR_KEYCLOAK_ADMIN_URL_TOKEN {name: "KEYCLOAK_ADMIN_URL_TOKEN", value: "https://auth.tb.pro/realms/master/protocol/openid-connect/token/"}
2532
.keycloak_url_api: &VAR_KEYCLOAK_URL_API {name: "KEYCLOAK_URL_API", value: "https://auth.tb.pro/admin/realms/tbpro/"}
26-
.log_level: &VAR_LOG_LEVEL {name: "LOG_LEVEL", "value": "INFO"}
33+
.log_level: &VAR_LOG_LEVEL {name: "LOG_LEVEL", value: "INFO"}
2734
.min_custom_domain_alias_length: &VAR_MIN_CUSTOM_DOMAIN_ALIAS_LENGTH {name: "MIN_CUSTOM_DOMAIN_ALIAS_LENGTH", value: "3"}
2835
.oidc_fallback_match_by_email: &VAR_OIDC_FALLBACK_MATCH_BY_EMAIL {name: "OIDC_FALLBACK_MATCH_BY_EMAIL", value: "True"}
2936
.oidc_url_auth: &VAR_OIDC_URL_AUTH {name: "OIDC_URL_AUTH", value: "https://auth.tb.pro/realms/tbpro/protocol/openid-connect/auth/"}
@@ -37,8 +44,8 @@
3744
.redis_celery_results_db: &VAR_REDIS_CELERY_RESULTS_DB {name: "REDIS_CELERY_RESULTS_DB", value: "6"}
3845
.redis_internal_db: &VAR_REDIS_INTERNAL_DB {name: "REDIS_INTERNAL_DB", value: "0"}
3946
.redis_shared_db: &VAR_REDIS_SHARED_DB {name: "REDIS_SHARED_DB", value: "10"}
40-
.sentry_profile_sample_rate: &VAR_SENTRY_PROFILE_SAMPLE_RATE {name: "SENTRY_PROFILE_SAMPLE_RATE", "value": "0.66"}
41-
.sentry_traces_sample_rate: &VAR_SENTRY_TRACES_SAMPLE_RATE {name: "SENTRY_TRACES_SAMPLE_RATE", value: "1.0"}
47+
.sentry_profile_sample_rate: &SENTRY_PROFILE_SAMPLE_RATE {name: "SENTRY_PROFILE_SAMPLE_RATE", value: "0.33"}
48+
.sentry_traces_sample_rate: &SENTRY_TRACES_SAMPLE_RATE {name: "SENTRY_TRACES_SAMPLE_RATE", value: "1.0"}
4249
.smtp_host: &VAR_SMTP_HOST {name: "SMTP_HOST", value: "mail.thundermail.com"}
4350
.smtp_port: &VAR_SMTP_PORT {name: "SMTP_PORT", value: "465"}
4451
.smtp_tls: &VAR_SMTP_TLS {name: "SMTP_TLS", value: "True"}
@@ -79,8 +86,8 @@
7986
.paddle_token: &SECRET_PADDLE_TOKEN {name: "PADDLE_TOKEN", valueFrom: "arn:aws:secretsmanager:eu-central-1:768512802988:secret:accounts/prod/paddle-token-aNOfo6"}
8087
.paddle_webhook_key: &SECRET_PADDLE_WEBHOOK_KEY {name: "PADDLE_WEBHOOK_KEY", valueFrom: "arn:aws:secretsmanager:eu-central-1:768512802988:secret:accounts/prod/paddle-webhook-key-vX5JHE"}
8188
.redis_url: &SECRET_REDIS_URL {name: "REDIS_URL", valueFrom: "arn:aws:secretsmanager:eu-central-1:768512802988:secret:accounts/prod/redis-url-Nq3x1a"}
82-
.sentry_dsn: &SECRET_SENTRY_DSN {name: "SENTRY_DSN", valueFrom: "arn:aws:secretsmanager:eu-central-1:768512802988:secret:accounts/prod/sentry-dsn-aEWFMV"}
8389
.secret_key: &SECRET_SECRET_KEY {name: "SECRET_KEY", valueFrom: "arn:aws:secretsmanager:eu-central-1:768512802988:secret:accounts/prod/secret-key-omYUWK"}
90+
.sentry_dsn: &SECRET_SENTRY_DSN {name: "SENTRY_DSN", valueFrom: "arn:aws:secretsmanager:eu-central-1:768512802988:secret:accounts/prod/sentry-dsn-aEWFMV"}
8491
.stalwart_api_auth_method: &SECRET_STALWART_API_AUTH_METHOD {name: "STALWART_API_AUTH_METHOD", valueFrom: "arn:aws:secretsmanager:eu-central-1:768512802988:secret:accounts/prod/stalwart-api-auth-method-ErlvTR"}
8592
.stalwart_api_auth_string: &SECRET_STALWART_API_AUTH_STRING {name: "STALWART_API_AUTH_STRING", valueFrom: "arn:aws:secretsmanager:eu-central-1:768512802988:secret:accounts/prod/stalwart-api-auth-key-cnGrUN"}
8693
.zendesk_api_token: &SECRET_ZENDESK_API_TOKEN {name: "ZENDESK_API_TOKEN", valueFrom: "arn:aws:secretsmanager:eu-central-1:768512802988:secret:accounts/prod/zendesk-api-token-2rsztq"}
@@ -129,14 +136,15 @@
129136
- *SECRET_OIDC_CLIENT_ID
130137
- *SECRET_OIDC_CLIENT_SECRET
131138
- *SECRET_OIDC_SIGN_ALGO
139+
- *SECRET_PADDLE_API_KEY
132140
- *SECRET_PADDLE_PRICE_ID_LO
133141
- *SECRET_PADDLE_PRICE_ID_MD
134142
- *SECRET_PADDLE_PRICE_ID_HI
135143
- *SECRET_PADDLE_TOKEN
136144
- *SECRET_PADDLE_WEBHOOK_KEY
137145
- *SECRET_REDIS_URL
138-
- *SECRET_SENTRY_DSN
139146
- *SECRET_SECRET_KEY
147+
- *SECRET_SENTRY_DSN
140148
- *SECRET_STALWART_API_AUTH_METHOD
141149
- *SECRET_STALWART_API_AUTH_STRING
142150
- *SECRET_ZENDESK_API_TOKEN
@@ -146,7 +154,6 @@
146154

147155
### tb_pulumi resource configs
148156
resources:
149-
150157
domains:
151158
accounts: accounts.tb.pro
152159

@@ -368,24 +375,22 @@ resources:
368375
- *VAR_JMAP_HOST
369376
- *VAR_JMAP_PORT
370377
- *VAR_JMAP_TLS
371-
- *VAR_KEYCLOAK_URL_API
372378
- *VAR_KEYCLOAK_ADMIN_URL_TOKEN
379+
- *VAR_KEYCLOAK_URL_API
373380
- *VAR_LOG_LEVEL
374381
- *VAR_MIN_CUSTOM_DOMAIN_ALIAS_LENGTH
375382
- *VAR_OIDC_FALLBACK_MATCH_BY_EMAIL
376383
- *VAR_OIDC_URL_AUTH
377-
- *VAR_OIDC_URL_JWKS
378-
- *VAR_OIDC_URL_LOGOUT
379384
- *VAR_OIDC_URL_TOKEN
380385
- *VAR_OIDC_URL_USER
386+
- *VAR_OIDC_URL_JWKS
387+
- *VAR_OIDC_URL_LOGOUT
381388
- *VAR_PADDLE_ENV
382389
- *VAR_PUBLIC_BASE_URL
383390
- *VAR_REDIS_CELERY_DB
384391
- *VAR_REDIS_CELERY_RESULTS_DB
385392
- *VAR_REDIS_INTERNAL_DB
386393
- *VAR_REDIS_SHARED_DB
387-
- *VAR_SENTRY_PROFILE_SAMPLE_RATE
388-
- *VAR_SENTRY_TRACES_SAMPLE_RATE
389394
- *VAR_SMTP_HOST
390395
- *VAR_SMTP_PORT
391396
- *VAR_SMTP_TLS
@@ -397,10 +402,9 @@ resources:
397402
- *VAR_TB_PRO_WAIT_LIST_URL
398403
- *VAR_USE_ALLOW_LIST
399404
- *VAR_VERIFY_PRIVATE_LINK_SSL
400-
- *VAR_ZENDESK_FORM_BROWSER_FIELD_ID
401405
- *VAR_ZENDESK_FORM_ID
406+
- *VAR_ZENDESK_FORM_BROWSER_FIELD_ID
402407
- *VAR_ZENDESK_FORM_OS_FIELD_ID
403-
# These vars indicate this container runs as Celery, not Flower or Django
404408
- name: TBA_CELERY
405409
value: "yes"
406410
- name: TBA_FLOWER
@@ -450,18 +454,16 @@ resources:
450454
- *VAR_MIN_CUSTOM_DOMAIN_ALIAS_LENGTH
451455
- *VAR_OIDC_FALLBACK_MATCH_BY_EMAIL
452456
- *VAR_OIDC_URL_AUTH
453-
- *VAR_OIDC_URL_JWKS
454-
- *VAR_OIDC_URL_LOGOUT
455457
- *VAR_OIDC_URL_TOKEN
456458
- *VAR_OIDC_URL_USER
459+
- *VAR_OIDC_URL_JWKS
460+
- *VAR_OIDC_URL_LOGOUT
457461
- *VAR_PADDLE_ENV
458462
- *VAR_PUBLIC_BASE_URL
459463
- *VAR_REDIS_CELERY_DB
460464
- *VAR_REDIS_CELERY_RESULTS_DB
461465
- *VAR_REDIS_INTERNAL_DB
462466
- *VAR_REDIS_SHARED_DB
463-
- *VAR_SENTRY_PROFILE_SAMPLE_RATE
464-
- *VAR_SENTRY_TRACES_SAMPLE_RATE
465467
- *VAR_SMTP_HOST
466468
- *VAR_SMTP_PORT
467469
- *VAR_SMTP_TLS
@@ -473,8 +475,8 @@ resources:
473475
- *VAR_TB_PRO_WAIT_LIST_URL
474476
- *VAR_USE_ALLOW_LIST
475477
- *VAR_VERIFY_PRIVATE_LINK_SSL
476-
- *VAR_ZENDESK_FORM_BROWSER_FIELD_ID
477478
- *VAR_ZENDESK_FORM_ID
479+
- *VAR_ZENDESK_FORM_BROWSER_FIELD_ID
478480
- *VAR_ZENDESK_FORM_OS_FIELD_ID
479481
- name: TBA_CELERY
480482
value: "no"
@@ -628,7 +630,7 @@ resources:
628630
- FARGATE
629631
container_definitions:
630632
keycloak:
631-
image: 768512802988.dkr.ecr.eu-central-1.amazonaws.com/thunderbird/accounts:keycloak-8f4b2f2785124d1c36f3b29dac0cf5a5c39e8687
633+
image: *KEYCLOAK_IMAGE
632634
command:
633635
- start
634636
portMappings:
@@ -710,7 +712,7 @@ resources:
710712
- FARGATE
711713
container_definitions:
712714
accounts:
713-
image: 768512802988.dkr.ecr.eu-central-1.amazonaws.com/thunderbird/accounts:v1.4.0
715+
image: *ACCOUNTS_IMAGE
714716
portMappings:
715717
- name: accounts
716718
containerPort: 8087
@@ -881,8 +883,6 @@ resources:
881883
value: '44379263732755'
882884
- name: VERIFY_PRIVATE_LINK_SSL
883885
value: 'False'
884-
- *VAR_LOG_LEVEL
885-
- *VAR_SENTRY_PROFILE_SAMPLE_RATE
886886

887887

888888
accounts-celery:
@@ -901,7 +901,7 @@ resources:
901901
- FARGATE
902902
container_definitions:
903903
accounts:
904-
image: 768512802988.dkr.ecr.eu-central-1.amazonaws.com/thunderbird/accounts:v1.4.0
904+
image: *ACCOUNTS_IMAGE
905905
linuxParameters:
906906
initProcessEnabled: True
907907
secrets:
@@ -1064,8 +1064,6 @@ resources:
10641064
value: '44379263732755'
10651065
- name: VERIFY_PRIVATE_LINK_SSL
10661066
value: 'False'
1067-
- *VAR_LOG_LEVEL
1068-
- *VAR_SENTRY_PROFILE_SAMPLE_RATE
10691067

10701068
tb:autoscale:EcsServiceAutoscaler:
10711069
accounts:

pulumi/config.stage.yaml

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,18 @@
2424
.imap_host: &VAR_IMAP_HOST {name: "IMAP_HOST", value: "mail.stage-thundermail.com"}
2525
.imap_port: &VAR_IMAP_PORT {name: "IMAP_PORT", value: "993"}
2626
.imap_tls: &VAR_IMAP_TLS {name: "IMAP_TLS", value: "True"}
27-
.keycloak_url_api: &VAR_KEYCLOAK_URL_API {name: "KEYCLOAK_URL_API", value: "https://auth-stage.tb.pro/admin/realms/tbpro/"}
28-
.keycloak_admin_url_token: &VAR_KEYCLOAK_ADMIN_URL_TOKEN {name: "KEYCLOAK_ADMIN_URL_TOKEN", value: "https://auth-stage.tb.pro/realms/master/protocol/openid-connect/token/"}
2927
.jmap_host: &VAR_JMAP_HOST {name: "JMAP_HOST", value: "mail.stage-thundermail.com"}
3028
.jmap_port: &VAR_JMAP_PORT {name: "JMAP_PORT", value: "443"}
3129
.jmap_tls: &VAR_JMAP_TLS {name: "JMAP_TLS", value: "True"}
30+
.keycloak_admin_url_token: &VAR_KEYCLOAK_ADMIN_URL_TOKEN {name: "KEYCLOAK_ADMIN_URL_TOKEN", value: "https://auth-stage.tb.pro/realms/master/protocol/openid-connect/token/"}
31+
.keycloak_url_api: &VAR_KEYCLOAK_URL_API {name: "KEYCLOAK_URL_API", value: "https://auth-stage.tb.pro/admin/realms/tbpro/"}
32+
.log_level: &VAR_LOG_LEVEL {name: "LOG_LEVEL", value: "DEBUG"}
3233
.min_custom_domain_alias_length: &VAR_MIN_CUSTOM_DOMAIN_ALIAS_LENGTH {name: "MIN_CUSTOM_DOMAIN_ALIAS_LENGTH", value: "3"}
3334
.oidc_url_auth: &VAR_OIDC_URL_AUTH {name: "OIDC_URL_AUTH", value: "https://auth-stage.tb.pro/realms/tbpro/protocol/openid-connect/auth"}
34-
.oidc_url_token: &VAR_OIDC_URL_TOKEN {name: "OIDC_URL_TOKEN", value: "https://auth-stage.tb.pro/realms/tbpro/protocol/openid-connect/token"}
35-
.oidc_url_user: &VAR_OIDC_URL_USER {name: "OIDC_URL_USER", value: "https://auth-stage.tb.pro/realms/tbpro/protocol/openid-connect/userinfo"}
3635
.oidc_url_jwks: &VAR_OIDC_URL_JWKS {name: "OIDC_URL_JWKS", value: "https://auth-stage.tb.pro/realms/tbpro/protocol/openid-connect/certs"}
3736
.oidc_url_logout: &VAR_OIDC_URL_LOGOUT {name: "OIDC_URL_LOGOUT", value: "https://auth-stage.tb.pro/realms/tbpro/protocol/openid-connect/logout"}
37+
.oidc_url_token: &VAR_OIDC_URL_TOKEN {name: "OIDC_URL_TOKEN", value: "https://auth-stage.tb.pro/realms/tbpro/protocol/openid-connect/token"}
38+
.oidc_url_user: &VAR_OIDC_URL_USER {name: "OIDC_URL_USER", value: "https://auth-stage.tb.pro/realms/tbpro/protocol/openid-connect/userinfo"}
3839
.paddle_env: &VAR_PADDLE_ENV {name: "PADDLE_ENV", value: "sandbox"}
3940
.public_base_url: &VAR_PUBLIC_BASE_URL {name: "PUBLIC_BASE_URL", value: "https://accounts-stage.tb.pro"}
4041
.redis_celery_db: &VAR_REDIS_CELERY_DB {name: "REDIS_CELERY_DB", value: "5"}
@@ -355,11 +356,12 @@ resources:
355356
- *VAR_IMAP_HOST
356357
- *VAR_IMAP_PORT
357358
- *VAR_IMAP_TLS
358-
- *VAR_KEYCLOAK_URL_API
359-
- *VAR_KEYCLOAK_ADMIN_URL_TOKEN
360359
- *VAR_JMAP_HOST
361360
- *VAR_JMAP_PORT
362361
- *VAR_JMAP_TLS
362+
- *VAR_KEYCLOAK_ADMIN_URL_TOKEN
363+
- *VAR_KEYCLOAK_URL_API
364+
- *VAR_LOG_LEVEL
363365
- *VAR_MIN_CUSTOM_DOMAIN_ALIAS_LENGTH
364366
- *VAR_OIDC_URL_AUTH
365367
- *VAR_OIDC_URL_TOKEN
@@ -425,11 +427,12 @@ resources:
425427
- *VAR_IMAP_HOST
426428
- *VAR_IMAP_PORT
427429
- *VAR_IMAP_TLS
428-
- *VAR_KEYCLOAK_URL_API
429-
- *VAR_KEYCLOAK_ADMIN_URL_TOKEN
430430
- *VAR_JMAP_HOST
431431
- *VAR_JMAP_PORT
432432
- *VAR_JMAP_TLS
433+
- *VAR_KEYCLOAK_ADMIN_URL_TOKEN
434+
- *VAR_KEYCLOAK_URL_API
435+
- *VAR_LOG_LEVEL
433436
- *VAR_MIN_CUSTOM_DOMAIN_ALIAS_LENGTH
434437
- *VAR_OIDC_URL_AUTH
435438
- *VAR_OIDC_URL_TOKEN

0 commit comments

Comments
 (0)