name: Gitea CI/CD for Helm Deployment on: workflow_dispatch: push: branches: - main jobs: build-and-push: # 请将 'ubuntu-latest' 替换为您的 Gitea runner 标签, 例如: 'self-hosted, dind, rootless' runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 # 尝试自动检测并设置 Docker Socket 路径 (针对 Rootless 模式) - name: Detect and Set Docker Socket run: | echo "Checking for Docker socket..." if [ -S /var/run/docker.sock ]; then echo "Found /var/run/docker.sock" elif [ -S /run/user/1000/docker.sock ]; then echo "Found /run/user/1000/docker.sock" echo "DOCKER_HOST=unix:///run/user/1000/docker.sock" >> $GITHUB_ENV echo "Setting DOCKER_HOST to unix:///run/user/1000/docker.sock" elif [ -S /run/docker.sock ]; then echo "Found /run/docker.sock" echo "DOCKER_HOST=unix:///run/docker.sock" >> $GITHUB_ENV else echo "Docker socket not found in common locations." echo "Listing /run/user/1000 if exists:" ls -la /run/user/1000 || true fi - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to Gitea Container Registry uses: docker/login-action@v3 with: # 请将 'gitea.173114.xyz' 替换为您的 Gitea 实例 URL registry: gitea.173114.xyz username: ${{ gitea.actor }} # Gitea 会为工作流提供一个临时令牌用于访问包 password: ${{ secrets.GITEA_TOKEN }} - name: Build and push Docker image run: | # Gitea 仓库中的镜像名称 IMAGE_NAME="gitea.173114.xyz/${{ gitea.owner }}/my-docs" echo "Pushing to: $IMAGE_NAME" docker build . --file Dockerfile \ --tag "$IMAGE_NAME:latest" \ --tag "$IMAGE_NAME:${{ gitea.sha }}" docker push "$IMAGE_NAME:latest" docker push "$IMAGE_NAME:${{ gitea.sha }}" deploy: # 请将 'ubuntu-latest' 替换为您的 Gitea runner 标签 runs-on: ubuntu-latest needs: build-and-push steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Kubeconfig run: | mkdir -p $HOME/.kube echo "${{ secrets.KUBE_CONFIG }}" > $HOME/.kube/config chmod 600 $HOME/.kube/config # KUBE_CONFIG应该是您的 kubeconfig 文件的 base64 编码内容 # 请在您的 Gitea 仓库设置中添加此 secret if: ${{ secrets.KUBE_CONFIG != '' }} - name: Set up Helm uses: azure/setup-helm@v3 with: # 如果需要,可以指定 Helm 版本, 例如: 'v3.8.0' version: 'latest' - name: Deploy with Helm run: | # 假设您的 Helm chart 位于 'helm/my-docs' 目录中 # 请将 'my-docs-release' 替换为您期望的 Helm release 名称 IMAGE_NAME="gitea.173114.xyz/${{ gitea.owner }}/my-docs" helm upgrade --install my-docs-release ./helm/my-docs \ --namespace my-docs-ns \ --create-namespace \ --set image.repository="$IMAGE_NAME" \ --set image.tag="${{ gitea.sha }}"