name: Docker Image CI on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Wait for and verify Docker-in-Docker (DIND) connection run: | echo "Waiting for Docker daemon to be ready..." while ! docker info > /dev/null 2>&1; do echo -n "." sleep 1 done echo "\nDocker daemon is ready!" docker info # 设置 Docker Buildx # 使用 driver: docker 以复用现有的 Docker 守护进程,避免在 Rootless 环境下挂载 socket 失败 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: driver: docker # 登录 Gitea 容器镜像库 - name: Log in to Gitea Container Registry uses: docker/login-action@v3 with: # 您的 Gitea 实例地址,请在 Gitea 仓库的 Secrets 中设置 GITEA_REGISTRY_URL registry: ${{ secrets.GITEA_REGISTRY_URL }} username: ${{ gitea.actor }} # 请在 Gitea 仓库的 Secrets 中创建一个具有包读写权限的 GITEA_TOKEN password: ${{ secrets.GITEA_TOKEN }} # 构建并推送 Docker 镜像 - name: Build and push Docker image run: | # 镜像名格式为:/<所有者>/<仓库名> IMAGE_NAME="${{ secrets.GITEA_REGISTRY_URL }}/${{ gitea.repository_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 }}"