proxy-pool/deploy/ci_test.go

42 lines
1.1 KiB
Go

package deploy
import (
"os"
"strings"
"testing"
"go.yaml.in/yaml/v4"
)
func TestCIValidatesProtocolAndDeploymentAssets(t *testing.T) {
payload, err := os.ReadFile("../.github/workflows/ci.yml")
if err != nil {
t.Fatalf("read ci workflow: %v", err)
}
workflow := string(payload)
var document map[string]any
if err := yaml.Unmarshal(payload, &document); err != nil {
t.Fatalf("parse ci workflow: %v", err)
}
jobs, ok := document["jobs"].(map[string]any)
if !ok {
t.Fatal("ci workflow has no jobs")
}
for _, name := range []string{"proto", "deployment", "test", "race", "integration"} {
if _, exists := jobs[name]; !exists {
t.Errorf("ci workflow has no %s job", name)
}
}
for _, required := range []string{
"./scripts/verify-proto.ps1",
"docker compose -f deploy/docker-compose.yml config --quiet",
"kubectl kustomize deploy/kubernetes/base",
"kubectl kustomize deploy/kubernetes/overlays/development-mtls",
"go run ./deploy/tools/configcheck deploy/kubernetes/overlays/development-mtls/config.yaml",
} {
if !strings.Contains(workflow, required) {
t.Errorf("ci workflow does not validate %q", required)
}
}
}