name: Deploy to Development Environment on: push: branches: [develop] workflow_dispatch: concurrency: group: deploy-dev cancel-in-progress: false env: ENVIRONMENT: development REGISTRY: registry.cn-hangzhou.aliyuncs.com IMAGE_NAME: ${{ github.repository }} jobs: deploy: name: Deploy to Dev runs-on: ubuntu-latest environment: name: development url: https://dev.fischerx.com timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup kubectl uses: azure/setup-kubectl@v4 with: version: 'v1.28.0' - name: Configure Kubernetes credentials run: | mkdir -p ~/.kube echo "${{ secrets.KUBE_CONFIG_DEV }}" | base64 -d > ~/.kube/config chmod 600 ~/.kube/config - name: Verify Kubernetes connection run: kubectl cluster-info - name: Log in to Aliyun Container Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.ALIYUN_REGISTRY_USERNAME }} password: ${{ secrets.ALIYUN_REGISTRY_PASSWORD }} - name: Deploy to Kubernetes run: | echo "Deploying to development environment..." # 这里可以添加具体的部署脚本,比如使用 kubectl apply 或 helm # 示例: # kubectl set image deployment/fischerx-api fischerx-api=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:develop # kubectl rollout status deployment/fischerx-api - name: Run database migrations run: | echo "Running database migrations..." # 这里可以添加数据库迁移命令 - name: Health check run: | echo "Running health checks..." # 这里可以添加健康检查脚本 - name: Send deployment notification if: always() uses: 8398a7/action-slack@v3 with: status: ${{ job.status }} text: 'Deployment to development environment ${{ job.status }}' webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }}