Files
im_server/tests/test_actions_workflow.py
T
Your Name 93a6ff0d03
Deploy im-server production / deploy (push) Successful in 6m19s
fix(ci): keep im deploy scoped to service
2026-10-20 17:56:31 +08:00

46 lines
1.8 KiB
Python

from pathlib import Path
import unittest
WORKFLOW = Path(__file__).resolve().parents[1] / ".gitea/workflows/deploy.yml"
class DeployWorkflowContractTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.workflow = WORKFLOW.read_text(encoding="utf-8")
def test_targets_pro_branch_and_single_runner(self):
self.assertIn("push:", self.workflow)
self.assertIn("- pro", self.workflow)
self.assertIn("workflow_dispatch:", self.workflow)
self.assertIn("runs-on: deploy-host", self.workflow)
self.assertIn("concurrency:", self.workflow)
def test_builds_and_pushes_pro_image(self):
self.assertIn("git.olns.shop/pro/im_server", self.workflow)
self.assertIn("docker push", self.workflow)
self.assertIn(":pro", self.workflow)
def test_deploys_compose_service_with_pinned_host_key(self):
self.assertIn("DEPLOY_SSH_KEY", self.workflow)
self.assertIn("DEPLOY_KNOWN_HOSTS", self.workflow)
self.assertIn("StrictHostKeyChecking=yes", self.workflow)
self.assertIn("docker compose pull im-server", self.workflow)
self.assertIn("docker compose up -d --no-deps --wait im-server", self.workflow)
def test_removes_old_kubernetes_and_registry_targets(self):
self.assertNotIn("kubectl", self.workflow)
self.assertNotIn("KUBECONFIG", self.workflow)
self.assertNotIn("git.118im.com", self.workflow)
def test_deploy_does_not_mutate_shared_caddy_configuration(self):
self.assertNotIn("Ensure production IM CORS routing", self.workflow)
self.assertNotIn("Caddyfile", self.workflow)
self.assertNotIn("perl -0pi", self.workflow)
self.assertNotIn("force-recreate caddy", self.workflow)
if __name__ == "__main__":
unittest.main()