From 762961f4ce4451aa98a361f6bbdd42577c585eef Mon Sep 17 00:00:00 2001 From: gitea_admin Date: Thu, 18 Dec 2025 12:50:59 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.github/workflows/buidl=5F?= =?UTF-8?q?and=5Fpush=5Fghcr.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/buidl_and_push_ghcr.yml | 123 +++++----------------- 1 file changed, 28 insertions(+), 95 deletions(-) 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