更新 .github/workflows/buidl_and_push_ghcr.yml
Some checks failed
Build Docker Image / build (push) Failing after 21s

This commit is contained in:
2025-12-18 12:50:59 +00:00
parent 5283352c9b
commit 762961f4ce

View File

@@ -1,109 +1,42 @@
name: Gitea CI/CD for Helm Deployment name: Build Docker Image
on: on:
workflow_dispatch:
push: push:
branches: branches:
- main - main
- master
pull_request:
branches:
- main
- master
jobs: jobs:
build-and-push: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container:
image: docker:dind
options: --privileged
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v4
- 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
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
- name: Log in to Gitea Container Registry - name: Extract metadata
uses: docker/login-action@v3 id: meta
with:
registry: gitea.example.com
username: ${{ gitea.actor }}
password: ${{ secrets.GITEA_TOKEN }}
- name: Build and push Docker image
run: | run: |
IMAGE_NAME="gitea.example.com/${{ gitea.owner }}/my-docs" echo "date=$(date +'%Y%m%d-%H%M%S')" >> $GITHUB_OUTPUT
echo "Pushing to: $IMAGE_NAME" echo "sha_short=$(echo $GITHUB_SHA | cut -c1-7)" >> $GITHUB_OUTPUT
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: - name: Build Docker image
runs-on: ubuntu-latest
needs: build-and-push
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Kubeconfig
run: | run: |
mkdir -p $HOME/.kube docker build \
echo "${{ secrets.KUBE_CONFIG }}" > $HOME/.kube/config -t myapp:${{ steps.meta.outputs.sha_short }} \
chmod 600 $HOME/.kube/config -t myapp:latest \
if: ${{ secrets.KUBE_CONFIG != '' }} -f Dockerfile \
.
- name: Set up Helm - name: List images
uses: azure/setup-helm@v3 run: docker images | grep myapp
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 }}"