Merge branch 'main' into update-sdks-devkeys

This commit is contained in:
Chirag Aggarwal 2025-05-22 16:05:20 +05:30 committed by GitHub
commit 080cc4a93f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 80 additions and 37 deletions

View file

@ -214,11 +214,42 @@ App::patch('/v1/proxy/rules/:ruleId/verification')
throw new Exception(Exception::RULE_NOT_FOUND); throw new Exception(Exception::RULE_NOT_FOUND);
} }
$validators = []; $targetCNAME = null;
$targetCNAME = new Domain(System::getEnv('_APP_DOMAIN_TARGET_CNAME', '')); switch ($rule->getAttribute('type', '')) {
if ($targetCNAME->isKnown() && !$targetCNAME->isTest()) { case 'api':
$validators[] = new DNS($targetCNAME->get(), DNS::RECORD_CNAME); // For example: fra.cloud.appwrite.io
$targetCNAME = new Domain(System::getEnv('_APP_DOMAIN_TARGET_CNAME', ''));
break;
case 'redirect':
// For example: appwrite.network
$targetCNAME = new Domain(System::getEnv('_APP_DOMAIN_SITES', ''));
break;
case 'deployment':
switch ($rule->getAttribute('deploymentResourceType', '')) {
case 'function':
// For example: fra.appwrite.run
$targetCNAME = new Domain(System::getEnv('_APP_DOMAIN_FUNCTIONS', ''));
break;
case 'site':
// For example: appwrite.network
$targetCNAME = new Domain(System::getEnv('_APP_DOMAIN_SITES', ''));
break;
default:
break;
}
// no break
default:
break;
} }
$validators = [];
if (!is_null($targetCNAME)) {
if ($targetCNAME->isKnown() && !$targetCNAME->isTest()) {
$validators[] = new DNS($targetCNAME->get(), DNS::RECORD_CNAME);
}
}
if ((new IP(IP::V4))->isValid(System::getEnv('_APP_DOMAIN_TARGET_A', ''))) { if ((new IP(IP::V4))->isValid(System::getEnv('_APP_DOMAIN_TARGET_A', ''))) {
$validators[] = new DNS(System::getEnv('_APP_DOMAIN_TARGET_A', ''), DNS::RECORD_A); $validators[] = new DNS(System::getEnv('_APP_DOMAIN_TARGET_A', ''), DNS::RECORD_A);
} }
@ -260,7 +291,8 @@ App::patch('/v1/proxy/rules/:ruleId/verification')
// Issue a TLS certificate when domain is verified // Issue a TLS certificate when domain is verified
$queueForCertificates $queueForCertificates
->setDomain(new Document([ ->setDomain(new Document([
'domain' => $rule->getAttribute('domain') 'domain' => $rule->getAttribute('domain'),
'domainType' => $rule->getAttribute('deploymentResourceType', $rule->getAttribute('type')),
])) ]))
->trigger(); ->trigger();

View file

@ -479,35 +479,37 @@ switch ($type) {
</div> </div>
</div> </div>
<div x-show="page === 'trace'" class="error-trace"> <?php if ($development) : ?>
<button class="back-button" x-on:click="page = 'error'"> <div x-show="page === 'trace'" class="error-trace">
Back <button class="back-button" x-on:click="page = 'error'">
</button> Back
<div class="trace-grid-header">Error trace</div> </button>
<?php foreach ($trace as $index => $traceItem): ?> <div class="trace-grid-header">Error trace</div>
<div class="trace-grid"> <?php foreach ($trace as $index => $traceItem): ?>
<?php if (isset($traceItem['file'])): ?> <div class="trace-grid">
<div class="trace-label">file</div> <?php if (isset($traceItem['file'])): ?>
<div class="trace-value"><?php echo $this->print($traceItem['file']); ?></div> <div class="trace-label">file</div>
<?php endif; ?> <div class="trace-value"><?php echo $this->print($traceItem['file']); ?></div>
<?php endif; ?>
<?php if (isset($traceItem['line'])): ?> <?php if (isset($traceItem['line'])): ?>
<div class="trace-label">line</div> <div class="trace-label">line</div>
<div class="trace-value"><?php echo $this->print($traceItem['line']); ?></div> <div class="trace-value"><?php echo $this->print($traceItem['line']); ?></div>
<?php endif; ?> <?php endif; ?>
<?php if (isset($traceItem['function'])): ?> <?php if (isset($traceItem['function'])): ?>
<div class="trace-label">function</div> <div class="trace-label">function</div>
<div class="trace-value"><?php echo $this->print($traceItem['function']); ?></div> <div class="trace-value"><?php echo $this->print($traceItem['function']); ?></div>
<?php endif; ?> <?php endif; ?>
<?php if (isset($traceItem['args'])): ?> <?php if (isset($traceItem['args'])): ?>
<div class="trace-label">args</div> <div class="trace-label">args</div>
<div class="trace-args"><pre><?php echo $this->print(\var_export($traceItem['args'], true)); ?></pre></div> <div class="trace-args"><pre><?php echo $this->print(\var_export($traceItem['args'], true)); ?></pre></div>
<?php endif; ?> <?php endif; ?>
</div> </div>
<?php endforeach; ?> <?php endforeach; ?>
</div> </div>
<?php endif; ?>
</div> </div>
<div x-show="page === 'error'" class="brand"> <div x-show="page === 'error'" class="brand">

View file

@ -1218,13 +1218,22 @@ class Builds extends Action
$message .= "\n" . $error; $message .= "\n" . $error;
} }
// Combine with previous logs if deployment got past build process
$previousLogs = '';
if (!empty($deployment->getAttribute('buildEndedAt', ''))) {
$previousLogs = $deployment->getAttribute('buildLogs', '');
if (!empty($previousLogs)) {
$message = $previousLogs . "\n" . $message;
}
}
$endTime = DateTime::now(); $endTime = DateTime::now();
$durationEnd = \microtime(true); $durationEnd = \microtime(true);
$deployment->setAttribute('buildEndedAt', $endTime); $deployment->setAttribute('buildEndedAt', $endTime);
$deployment->setAttribute('buildDuration', \intval(\ceil($durationEnd - $durationStart))); $deployment->setAttribute('buildDuration', \intval(\ceil($durationEnd - $durationStart)));
$deployment->setAttribute('status', 'failed'); $deployment->setAttribute('status', 'failed');
$deployment->setAttribute('buildLogs', $deployment->getAttribute('buildLogs', '') . "\n" . $message);
$deployment->setAttribute('buildLogs', $message);
$deployment = $dbForProject->updateDocument('deployments', $deploymentId, $deployment); $deployment = $dbForProject->updateDocument('deployments', $deploymentId, $deployment);
if ($deployment->getInternalId() === $resource->getAttribute('latestDeploymentInternalId', '')) { if ($deployment->getInternalId() === $resource->getAttribute('latestDeploymentInternalId', '')) {

View file

@ -174,7 +174,7 @@ class Create extends Action
$queueForCertificates $queueForCertificates
->setDomain(new Document([ ->setDomain(new Document([
'domain' => $rule->getAttribute('domain'), 'domain' => $rule->getAttribute('domain'),
'domainType' => 'api', 'domainType' => $rule->getAttribute('deploymentResourceType', $rule->getAttribute('type')),
])) ]))
->trigger(); ->trigger();
} }

View file

@ -192,7 +192,7 @@ class Create extends Action
$queueForCertificates $queueForCertificates
->setDomain(new Document([ ->setDomain(new Document([
'domain' => $rule->getAttribute('domain'), 'domain' => $rule->getAttribute('domain'),
'domainType' => 'function', 'domainType' => $rule->getAttribute('deploymentResourceType', $rule->getAttribute('type')),
])) ]))
->trigger(); ->trigger();
} }

View file

@ -180,7 +180,7 @@ class Create extends Action
$queueForCertificates $queueForCertificates
->setDomain(new Document([ ->setDomain(new Document([
'domain' => $rule->getAttribute('domain'), 'domain' => $rule->getAttribute('domain'),
'domainType' => 'redirect', 'domainType' => $rule->getAttribute('deploymentResourceType', $rule->getAttribute('type')),
])) ]))
->trigger(); ->trigger();
} }

View file

@ -192,7 +192,7 @@ class Create extends Action
$queueForCertificates $queueForCertificates
->setDomain(new Document([ ->setDomain(new Document([
'domain' => $rule->getAttribute('domain'), 'domain' => $rule->getAttribute('domain'),
'domainType' => 'site', 'domainType' => $rule->getAttribute('deploymentResourceType', $rule->getAttribute('type')),
])) ]))
->trigger(); ->trigger();
} }

View file

@ -96,7 +96,7 @@ class Certificates extends Action
$log->addTag('domain', $domain->get()); $log->addTag('domain', $domain->get());
$domainType = $payload['domainType'] ?? null; $domainType = $document->getAttribute('domainType');
$this->execute($domain, $domainType, $dbForPlatform, $queueForMails, $queueForEvents, $queueForWebhooks, $queueForFunctions, $queueForRealtime, $log, $certificates, $skipRenewCheck, $plan); $this->execute($domain, $domainType, $dbForPlatform, $queueForMails, $queueForEvents, $queueForWebhooks, $queueForFunctions, $queueForRealtime, $log, $certificates, $skipRenewCheck, $plan);
} }