diff --git a/.github/workflows/buidl_and_push_ghcr.yml b/.github/workflows/buidl_and_push_ghcr.yml index 635017e..460e3d5 100644 --- a/.github/workflows/buidl_and_push_ghcr.yml +++ b/.github/workflows/buidl_and_push_ghcr.yml @@ -1,109 +1,42 @@ -name: Gitea CI/CD for Helm Deployment +name: Build Docker Image on: - workflow_dispatch: push: branches: - main + - master + pull_request: + branches: + - main + - master jobs: - build-and-push: + build: runs-on: ubuntu-latest + container: + image: docker:dind + options: --privileged + steps: - name: Checkout code - uses: actions/checkout@v3 - - - name: Setup Docker Environment (Rootless/Dind) - id: docker-env - run: | - echo "🔍 Checking Docker environment..." - echo "User: $(whoami) (UID: $(id -u))" - - # 定义可能的 Socket 路径 - SOCKET_PATHS=( - "/var/run/docker.sock" - "/run/docker.sock" - "/run/user/$(id -u)/docker.sock" - "/run/user/1000/docker.sock" - ) - - FOUND_SOCKET="" - - for path in "${SOCKET_PATHS[@]}"; do - if [ -S "$path" ]; then - echo "✅ Found Docker socket at: $path" - FOUND_SOCKET="unix://$path" - break - fi - done - - if [ -z "$FOUND_SOCKET" ]; then - echo "⚠️ No Docker socket found in common locations." - echo "Listing /run/user if available:" - ls -R /run/user || echo "/run/user not accessible" - else - echo "DOCKER_HOST=$FOUND_SOCKET" >> $GITHUB_ENV - echo "Setting DOCKER_HOST to $FOUND_SOCKET" - fi - - - name: Verify Docker Connection - run: | - echo "🐳 Verifying Docker connection..." - if docker info > /dev/null 2>&1; then - echo "✅ Docker is reachable!" - docker info - else - echo "❌ Cannot connect to Docker daemon." - echo "Current DOCKER_HOST: $DOCKER_HOST" - # 如果镜像里有 dind 但没启动,这里可能会失败。 - # 但通常 Gitea Runner 的 dind 模式会自动挂载 socket。 - exit 1 - fi - + uses: actions/checkout@v4 + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - - name: Log in to Gitea Container Registry - uses: docker/login-action@v3 - with: - registry: gitea.example.com - username: ${{ gitea.actor }} - password: ${{ secrets.GITEA_TOKEN }} - - - name: Build and push Docker image + + - name: Extract metadata + id: meta run: | - IMAGE_NAME="gitea.example.com/${{ 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: - runs-on: ubuntu-latest - needs: build-and-push - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set up Kubeconfig + echo "date=$(date +'%Y%m%d-%H%M%S')" >> $GITHUB_OUTPUT + echo "sha_short=$(echo $GITHUB_SHA | cut -c1-7)" >> $GITHUB_OUTPUT + + - name: Build Docker image run: | - mkdir -p $HOME/.kube - echo "${{ secrets.KUBE_CONFIG }}" > $HOME/.kube/config - chmod 600 $HOME/.kube/config - if: ${{ secrets.KUBE_CONFIG != '' }} - - - name: Set up Helm - uses: azure/setup-helm@v3 - with: - version: 'latest' - - - name: Deploy with Helm - run: | - IMAGE_NAME="gitea.example.com/${{ 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 }}" + docker build \ + -t myapp:${{ steps.meta.outputs.sha_short }} \ + -t myapp:latest \ + -f Dockerfile \ + . + + - name: List images + run: docker images | grep myapp \ No newline at end of file