| @@ -16,7 +16,7 @@ import { buildNginxVhostScript, resolveNginxSnippet } from './nginx-vhost' |
| 16 | 16 | import { resolveNotifications, sendNotifications } from './notifications' |
| 17 | 17 | import { buildPhpFpmPoolScript, phpFpmPoolListen } from './php-fpm-pool' |
| 18 | 18 | import { buildDeployHistoryHeader, buildSiteOwnerGuard } from './releases' |
| 19 | | -import { buildRpxConfig, buildRpxFragmentRefreshScript, buildRpxLbConfig, buildRpxProvisionScript, rpxCertRenewServiceName, usesRpxProxy } from './rpx-gateway' |
| 19 | +import { buildRpxConfig, buildRpxFragmentRefreshScript, buildRpxLbConfig, buildRpxProvisionScript, certDomainsForConfig, rpxCertRenewServiceName, usesRpxProxy } from './rpx-gateway' |
| 20 | 20 | |
| 21 | 21 | export interface ComputeDeployLogger { |
| 22 | 22 | info(message: string): void |
| @@ -34,6 +34,10 @@ const noopLogger: ComputeDeployLogger = { |
| 34 | 34 | success: () => {}, |
| 35 | 35 | } |
| 36 | 36 | |
| 37 | +function shellQuote(value: string): string { |
| 38 | + return `'${value.replace(/'/g, `'"'"'`)}'` |
| 39 | +} |
| 40 | + |
| 37 | 41 | |
| 38 | 42 | |
| 39 | 43 | |
| @@ -812,6 +816,8 @@ export async function renewRpxCertificates( |
| 812 | 816 | |
| 813 | 817 | const rpxConfig = buildRpxConfig(routeSource.sites || {}, { proxy, slug: config.project.slug }) |
| 814 | 818 | if (rpxConfig.proxies.length === 0) return true |
| 819 | + const certDomains = certDomainsForConfig(rpxConfig) |
| 820 | + if (certDomains.length === 0) return true |
| 815 | 821 | |
| 816 | 822 | const slug = config.project.slug |
| 817 | 823 | const stackName = resolveProjectStackName(config, environment) |
| @@ -827,9 +833,15 @@ export async function renewRpxCertificates( |
| 827 | 833 | } |
| 828 | 834 | |
| 829 | 835 | logger.step('Issuing rpx TLS certificates after DNS reconciliation...') |
| 836 | + const certChecks = certDomains |
| 837 | + .map(domain => `test -s ${shellQuote(`${rpxConfig.productionCerts.certsDir}/${domain}.crt`)}`) |
| 838 | + .join(' && ') |
| 830 | 839 | const result = await driver.runRemoteDeploy({ |
| 831 | 840 | targets, |
| 832 | | - commands: [`systemctl start ${rpxCertRenewServiceName(slug)}`], |
| 841 | + commands: [ |
| 842 | + `systemctl start ${rpxCertRenewServiceName(slug)}`, |
| 843 | + certChecks, |
| 844 | + ], |
| 833 | 845 | comment: `ts-cloud rpx TLS issuance ${slug}`, |
| 834 | 846 | tags: { |
| 835 | 847 | Project: slug, |