diff --git a/app/init/constants.php b/app/init/constants.php index abbe8a535e..5f3672bd45 100644 --- a/app/init/constants.php +++ b/app/init/constants.php @@ -514,3 +514,8 @@ const CSV_ALLOWED_DATABASE_TYPES = [ DATABASE_TYPE_TABLESDB, DATABASE_TYPE_VECTORSDB ]; + +// VCS deployment skip patterns +const VCS_DEPLOYMENT_SKIP_PATTERNS = [ + '[skip ci]', +]; diff --git a/src/Appwrite/Platform/Modules/VCS/Http/GitHub/Deployment.php b/src/Appwrite/Platform/Modules/VCS/Http/GitHub/Deployment.php index 811b83f722..bc6f4db7e9 100644 --- a/src/Appwrite/Platform/Modules/VCS/Http/GitHub/Deployment.php +++ b/src/Appwrite/Platform/Modules/VCS/Http/GitHub/Deployment.php @@ -8,8 +8,8 @@ use Appwrite\Event\Publisher\Build as BuildPublisher; use Appwrite\Extend\Exception; use Appwrite\Filter\BranchDomain as BranchDomainFilter; use Appwrite\Vcs\Comment; -use Appwrite\Vcs\Validator\DeploymentSkipPatterns; use Utopia\Config\Config; +use Utopia\Validator\Contains; use Utopia\Console; use Utopia\Database\Database; use Utopia\Database\Document; @@ -96,7 +96,7 @@ trait Deployment $resource = $authorization->skip(fn () => $dbForProject->getDocument($resourceCollection, $resourceId)); $resourceInternalId = $resource->getSequence(); - $commitSkip = new DeploymentSkipPatterns(); + $commitSkip = new Contains(VCS_DEPLOYMENT_SKIP_PATTERNS); if ($commitSkip->isValid($providerCommitMessage)) { Span::add("{$logBase}.build.skipped.reason", 'commitMessage'); Span::add("{$logBase}.build.skipped", 'true'); diff --git a/src/Appwrite/Vcs/Validator/DeploymentSkipPatterns.php b/src/Appwrite/Vcs/Validator/DeploymentSkipPatterns.php deleted file mode 100644 index 8e1d0623d9..0000000000 --- a/src/Appwrite/Vcs/Validator/DeploymentSkipPatterns.php +++ /dev/null @@ -1,17 +0,0 @@ -validator = new DeploymentSkipPatterns(); - } - - public function testKnownSkipDirectivesSkip(): void - { - $this->assertTrue($this->validator->isValid('[skip ci] update changelog')); - } - - public function testKnownSkipDirectivesAreCaseInsensitive(): void - { - $this->assertTrue($this->validator->isValid('[SKIP CI] update changelog')); - } - - public function testMessageWithoutKnownDirectiveProceeds(): void - { - $this->assertFalse($this->validator->isValid('fix: real bug fix')); - $this->assertFalse($this->validator->isValid('feat: add new feature')); - $this->assertFalse($this->validator->isValid('skip deploy without brackets')); - $this->assertFalse($this->validator->isValid('deploy this please')); - $this->assertFalse($this->validator->isValid('skip-checks:true')); - } - - public function testDirectiveCanAppearAnywhere(): void - { - $this->assertTrue($this->validator->isValid('docs: update readme [skip ci]')); - $this->assertTrue($this->validator->isValid('docs: update readme[skip ci]')); - $this->assertTrue($this->validator->isValid('prefix[skip ci]suffix')); - $this->assertFalse($this->validator->isValid('refactor: skip ci cache seeding')); - } - - public function testMultilineCommitMessageSkips(): void - { - $message = "feat: add new stuff\n\nMore detail here.\n\n[skip ci]"; - - $this->assertTrue($this->validator->isValid($message)); - } - - public function testNonStringCommitMessageProceeds(): void - { - $this->assertFalse($this->validator->isValid(null)); - $this->assertFalse($this->validator->isValid([])); - } -}