mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Fix double deployments
This commit is contained in:
@@ -25,7 +25,7 @@ _APP_OPTIONS_FORCE_HTTPS=disabled
|
||||
_APP_OPTIONS_ROUTER_FORCE_HTTPS=disabled
|
||||
_APP_OPENSSL_KEY_V1=your-secret-key
|
||||
_APP_DNS=172.16.238.100 # CoreDNS
|
||||
_APP_DOMAIN=appwrite.test
|
||||
_APP_DOMAIN=appwritelocal.tunnel.matejbaco.eu
|
||||
_APP_CONSOLE_DOMAIN=localhost
|
||||
_APP_CONSOLE_TRUSTED_PROJECTS=trusted-project,another-trusted-project
|
||||
_APP_DOMAIN_FUNCTIONS=functions.localhost
|
||||
@@ -127,12 +127,38 @@ _APP_GRAPHQL_MAX_COMPLEXITY=250
|
||||
_APP_GRAPHQL_MAX_DEPTH=4
|
||||
_APP_DOCKER_HUB_USERNAME=
|
||||
_APP_DOCKER_HUB_PASSWORD=
|
||||
_APP_VCS_GITHUB_APP_NAME=
|
||||
_APP_VCS_GITHUB_PRIVATE_KEY=disabled
|
||||
_APP_VCS_GITHUB_APP_ID=
|
||||
_APP_VCS_GITHUB_CLIENT_ID=
|
||||
_APP_VCS_GITHUB_CLIENT_SECRET=
|
||||
_APP_VCS_GITHUB_WEBHOOK_SECRET=
|
||||
_APP_VCS_GITHUB_APP_NAME=appwrite-locally-final
|
||||
_APP_VCS_GITHUB_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEAzeO6vSPXh5OJYVqI9pJY7nuSeStdq7MAAJZgNJOCqErI+45y
|
||||
5cP/PrF7MVbSFlXOCMsXTTqV5N0dCM/Z8Rc1HDIa/smwlI52SJ9O9VYogdV138OC
|
||||
BHu1gq8tDsztje4TtYuUDkouCmIobktvMjLhRKxQLt/XssmsRERoKLU0JxAXWB+M
|
||||
nzyOeqL3hbKK4ftmue04mq7tRFLZgKjnD94SFmteKtRupiXxIGOyI8U67+CzQZeG
|
||||
oqgwVl+ileftWBoKXautn5zVSusKagehxY2rFB5EM1mwh02XAogD6ENcKQXqtZAP
|
||||
O0psjoQgCTYANOt29xSAGR/FxULpQyhlt7pB6QIDAQABAoIBAQC7Sc01AMWurqbp
|
||||
yFGO+tGrHv2++5PZ/Jqj7ibVrNnN/TmWm54pJIGrpgdKeo/hgWxK03P+7Kwt5HXk
|
||||
7i5zAYlufKXR3+ahPHac2U4aHqX6dRMk2dQL//y9RFzYedIeqdOD8dRcq132VBQz
|
||||
QKuGHoKM1bKa8URlfs8VyqR1Y2BtprG+47CV4dkcg0lts8NQEX48BIrOHxSixWKo
|
||||
X+ARhOZPmTDCQDsMDS4dlFDVs/LSmItOV4OnwCqEIzkXSzNitoKYLxy6sJwS49sv
|
||||
t4o5kny7EaM+faRz4G/HQ3nU7+KyJ53qvlkqtrTSytV1m28/+/D7kUtMdZgm6u1v
|
||||
U51bPImBAoGBAP4aUJxSjY1+noDawQ83zDtabi+bUcGwCbyO2iD4RFW5M+kSOfTa
|
||||
n2UauCdyBrqAo2ycG4AMHatSFkgcrIFlO3LqW6a/jTMxD/d+naVDzymSK9C7P2Ga
|
||||
0fEK0xWeAu04juJIjIdlQkhTi873p41vMB5+38T5WyaAju657dTNvagHAoGBAM9t
|
||||
Qtk95rqi2h1p9YhKUXYRS+NnV8yeetVLHXmdsa5Cj4mXFm8GKl43rYqDjYvPyq7G
|
||||
lr5zEnrUaGusd/mPwJziRB6bBcd2Vbka4N/Z+i9GzEHuaU7ZOWZP+wGypMfWLMLQ
|
||||
7c13Jhl4q3et/z5M5d7lTUxhCQitz4Lfy1g8deqPAoGAf5uXf+m1TKmZz/wLmCjd
|
||||
V7FCRIYruKk/OoJC6OvE5Yfsmc+da2mfQpb4hFavKloPuCttZBCxlafTqMM9nn3I
|
||||
LR2kiUkJD/xDmHbtlGFJWAcgGeLvIYUuiW52MxT3Q0pz9w+YAybG8quCOp4EdvKv
|
||||
p6Dvn2vaaquFHD4jQgtQg2ECgYEAuG3+tSgb4bBw3Rxcav0hZyhD4IL/hvkWYFW0
|
||||
dHDpDfcypvTGxpqlyzYYQINttHViUnpSiC3KrZn06l/kIOpXKWbpiIjv34Tw/W/P
|
||||
qFmo4KZDcQ/pZGkyZy0QEldjuidNjz6zYi/hmV44n2X+/8bh0IjzbMkOfkAEtOoF
|
||||
ZIQFmDMCgYEAyL0hxaRRYSaUw7ZRnx8O98M7pItDqkH/6C3w77i+6D/9uHSV6FDw
|
||||
fT7tikCUYYuhO5cAd2dFM90vMkAAbyO7JiJCu3NNTQmFyX8SoMweq/Lw4Fg65H8S
|
||||
cox5Xc24+5CAE3UWYeR8G93QGpMNxMlP25NehFcNh/0wuIyim1EUDic=
|
||||
-----END RSA PRIVATE KEY-----"
|
||||
_APP_VCS_GITHUB_APP_ID=2483214
|
||||
_APP_VCS_GITHUB_CLIENT_ID=Iv23liNlqhfXTiQTpO57
|
||||
_APP_VCS_GITHUB_CLIENT_SECRET=c342c5d161a2fdbe95134f367595c49b5235b29e
|
||||
_APP_VCS_GITHUB_WEBHOOK_SECRET=password
|
||||
_APP_MIGRATIONS_FIREBASE_CLIENT_ID=
|
||||
_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=
|
||||
_APP_ASSISTANT_OPENAI_API_KEY=
|
||||
|
||||
@@ -127,7 +127,6 @@ trait Deployment
|
||||
|
||||
Span::add("{$logBase}.authorized", $isAuthorized);
|
||||
|
||||
$commentStatus = 'waiting';
|
||||
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
|
||||
$hostname = $platform['consoleHostname'] ?? '';
|
||||
|
||||
@@ -135,6 +134,33 @@ trait Deployment
|
||||
|
||||
$action = $isAuthorized ? ['type' => 'logs'] : ['type' => 'authorize', 'url' => $authorizeUrl];
|
||||
|
||||
$commentStatus = 'waiting';
|
||||
$commentPreviewUrl = '';
|
||||
|
||||
// If this action was triggered by pull request, use most up to date details in comment
|
||||
if (!empty($providerPullRequestId)) {
|
||||
$existingDeployment = $authorization->skip(fn () => $dbForProject->findOne('deployments', [
|
||||
Query::equal('resourceInternalId', [$resource->getSequence()]),
|
||||
Query::equal('resourceType', [$resourceCollection]),
|
||||
Query::equal('providerCommitHash', [$providerCommitHash]),
|
||||
Query::equal('providerBranch', [$providerBranch]),
|
||||
]));
|
||||
|
||||
$commentStatus = $existingDeployment->getAttribute('status', 'waiting');
|
||||
|
||||
if ($resource->getCollection() === 'sites') {
|
||||
$previewRule = $authorization->skip(fn () => $dbForPlatform->findOne('rules', [
|
||||
Query::equal('projectInternalId', [$project->getSequence()]),
|
||||
Query::equal('type', ['deployment']), // Not redirect
|
||||
Query::equal('trigger', ['deployment']), // Preview - Not manual
|
||||
Query::equal('deploymentResourceType', ['site']), // Not function
|
||||
Query::equal('deploymentInternalId', [$existingDeployment->getSequence()]),
|
||||
]));
|
||||
|
||||
$commentPreviewUrl = !$previewRule->isEmpty() ? ("{$protocol}://" . $previewRule->getAttribute('domain', '')) : '';
|
||||
}
|
||||
}
|
||||
|
||||
$latestCommentId = '';
|
||||
|
||||
if (!empty($providerPullRequestId) && $resource->getAttribute('providerSilentMode', false) === false) {
|
||||
@@ -173,7 +199,7 @@ trait Deployment
|
||||
try {
|
||||
$comment = new Comment($platform);
|
||||
$comment->parseComment($github->getComment($owner, $repositoryName, $latestCommentId));
|
||||
$comment->addBuild($project, $resource, $resourceType, $commentStatus, $deploymentId, $action, '');
|
||||
$comment->addBuild($project, $resource, $resourceType, $commentStatus, $deploymentId, $action, $commentPreviewUrl);
|
||||
|
||||
$latestCommentId = \strval($github->updateComment($owner, $repositoryName, $latestCommentId, $comment->generateComment()));
|
||||
} finally {
|
||||
@@ -182,7 +208,7 @@ trait Deployment
|
||||
}
|
||||
} else {
|
||||
$comment = new Comment($platform);
|
||||
$comment->addBuild($project, $resource, $resourceType, $commentStatus, $deploymentId, $action, '');
|
||||
$comment->addBuild($project, $resource, $resourceType, $commentStatus, $deploymentId, $action, $commentPreviewUrl);
|
||||
$latestCommentId = \strval($github->createComment($owner, $repositoryName, $providerPullRequestId, $comment->generateComment()));
|
||||
|
||||
if (!empty($latestCommentId)) {
|
||||
@@ -274,6 +300,19 @@ trait Deployment
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!empty($providerPullRequestId)) {
|
||||
// Update comment ID so running build can update comment
|
||||
$authorization->skip(fn () => $dbForProject->updateDocuments('deployments', new Document([
|
||||
'providerCommentId' => \strval($latestCommentId)
|
||||
]), [
|
||||
Query::equal('providerCommitHash', [$providerCommitHash]),
|
||||
Query::equal('providerBranch', [$providerBranch]),
|
||||
]));
|
||||
|
||||
// Skip rest - prevent double deployments (previous one was made by push)
|
||||
return;
|
||||
}
|
||||
|
||||
$commands = [];
|
||||
if (!empty($resource->getAttribute('installCommand', ''))) {
|
||||
$commands[] = $resource->getAttribute('installCommand', '');
|
||||
|
||||
Reference in New Issue
Block a user