name: Deployment Config CI on: push: branches: - main paths: - "deploy/**" - "Dockerfile*" - ".dockerignore" - "server/Dockerfile" - "server/.dockerignore" pull_request: branches: - main paths: - "deploy/**" - "Dockerfile*" - ".dockerignore" - "server/Dockerfile" - "server/.dockerignore" workflow_dispatch: permissions: contents: read jobs: deploy-config: name: Deployment Config runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install Docker CLI run: | if command -v docker >/dev/null 2>&1; then docker --version exit 0 fi apt-get update apt-get install -y docker.io docker-compose-plugin - name: Validate compose files run: | docker compose -f deploy/docker-compose.yaml config >/tmp/compose.yaml docker compose -f deploy/docker-compose.yaml -f deploy/docker-compose.offline.yaml config >/tmp/compose-offline.yaml docker compose -f deploy/docker-compose.yaml -f deploy/docker-compose.offline.yaml -f deploy/docker-compose.aliyun-oss.yaml config >/tmp/compose-aliyun-oss.yaml - name: Validate k3s manifests run: | if ! command -v kubectl >/dev/null 2>&1; then echo "kubectl not found; skipping kustomize manifest validation." exit 0 fi kubectl kustomize deploy/k3s >/tmp/k3s.yaml kubectl kustomize deploy/k3s-aliyun-oss >/tmp/k3s-aliyun-oss.yaml if grep -Eq 'name: (minio|minio-init)$' /tmp/k3s-aliyun-oss.yaml; then echo "aliyun object-storage overlay must not render MinIO resources" exit 1 fi - name: Smoke build server runtime image run: | DOCKER_BUILDKIT=1 docker build \ --platform linux/amd64 \ --target runtime \ --build-arg SERVICE=tenant-api \ --tag geo-rankly/tenant-api:ci-smoke \ -f server/Dockerfile \ server/ docker image rm geo-rankly/tenant-api:ci-smoke >/dev/null 2>&1 || true - name: Validate shell scripts run: bash -n deploy/scripts/package.sh deploy/scripts/load-and-start.sh deploy/scripts/gitea-registry-images.sh deploy/scripts/deploy-images-to-k3s.sh