diff --git a/.gitea/workflows/deploy-k8s-v2.yaml b/.gitea/workflows/deploy-k8s-v2.yaml new file mode 100644 index 0000000..97ac73e --- /dev/null +++ b/.gitea/workflows/deploy-k8s-v2.yaml @@ -0,0 +1,79 @@ +name: dotnet-cicd-k8s + +on: + push: + branches: + - develop + - main + pull_request: + branches: + - main + +env: + DOTNET_VERSION: 8.x + +jobs: + CI-CD-K8S: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: 列出仓库中的文件 + run: ls ${{ github.workspace }} + - name: 设置 .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + cache: true + - name: 安装依赖 + run: dotnet restore -s https://api.nuget.org/v3/index.json + - name: 构建 + run: dotnet build --configuration Release --no-restore -o dst + - name: 测试 + run: dotnet test --no-restore --verbosity normal + + - name: 列出构建输出目录中的文件 + run: ls ${{ github.workspace }}/dst + - name: 设置 QEMU + uses: docker/setup-qemu-action@v3 + - name: 设置 Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: 登录到阿里云容器镜像服务 + uses: docker/login-action@v3 + with: + registry: registry.cn-guangzhou.aliyuncs.com + username: ${{ secrets.DOCKERHUB_NROP_USERNAME }} + password: ${{ secrets.DOCKERHUB_NROP_PASSWORD }} + - name: 构建并推送 Docker 镜像 + uses: docker/build-push-action@v6 + with: + context: . + platforms: linux/amd64 + push: true + tags: registry.cn-guangzhou.aliyuncs.com/acme_nrop/dotnet-deploy-k8s:${{ github.sha }} + + # 根据环境进行不同的部署 + - name: 部署到测试环境 + if: github.ref == 'refs/heads/develop' + uses: steebchen/kubectl@v2.0.0 + with: + config: ${{ secrets.KUBE_CONFIG_TEST }} + command: set image --record deployment/dotnet-cicd-k8s-sample dotnet-deploy-k8s=registry.cn-guangzhou.aliyuncs.com/acme_nrop/dotnet-deploy-k8s:${{ github.sha }} + - name: 验证测试环境部署 + if: github.ref == 'refs/heads/develop' + uses: steebchen/kubectl@v2.0.0 + with: + config: ${{ secrets.KUBE_CONFIG_TEST }} + command: rollout status deployment/dotnet-cicd-k8s-sample + + - name: 部署到生产环境 + if: github.event_name == 'pull_request' && github.event.pull_request.merged == true && github.ref == 'refs/heads/main' + uses: steebchen/kubectl@v2.0.0 + with: + config: ${{ secrets.KUBE_CONFIG_PROD }} + command: set image --record deployment/dotnet-cicd-k8s-sample dotnet-deploy-k8s=registry.cn-guangzhou.aliyuncs.com/acme_nrop/dotnet-deploy-k8s:${{ github.sha }} + - name: 验证生产环境部署 + if: github.event_name == 'pull_request' && github.event.pull_request.merged == true && github.ref == 'refs/heads/main' + uses: steebchen/kubectl@v2.0.0 + with: + config: ${{ secrets.KUBE_CONFIG_PROD }} + command: rollout status deployment/dotnet-cicd-k8s-sample