name: CI/CD Pipeline on: push: branches: [main] jobs: build-and-deploy: runs-on: docker steps: - name: Clone run: | git clone https://git.plfai.cn/test/fastapi-demo.git . git checkout ${GITHUB_SHA} - name: Docker Build run: | docker build --network host \ -t registry.plfai.cn/fastapi-demo:${GITHUB_SHA:0:7} \ -t registry.plfai.cn/fastapi-demo:latest \ . - name: Docker Push run: | echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login registry.plfai.cn -u k3s --password-stdin docker push registry.plfai.cn/fastapi-demo:${GITHUB_SHA:0:7} docker push registry.plfai.cn/fastapi-demo:latest - name: Deploy run: | sleep 2 && k3s kubectl rollout restart deployment/fastapi-app -n fastapi-demo || true - name: Health Check run: | sleep 5 curl -sk --connect-timeout 10 --retry 3 https://fastapi.plfai.cn/health