Files
huangxd- b4511e501e 优化镜像构建yml (#258)
* 优化镜像构建yml

* 继续优化镜像构建
2026-03-28 00:04:07 +08:00

64 lines
2.0 KiB
YAML

name: Build and Push Docker Image to Docker Hub
on:
push:
branches:
- main
pull_request:
branches:
- main
if: github.repository == 'huangxd-/danmu_api'
jobs:
build:
runs-on: ubuntu-latest
steps:
# 检出代码
- name: Checkout code
uses: actions/checkout@v3
# 从 danmu_api/configs/globals.js 中读取版本号
- name: Read version from globals.js
id: version
run: |
VERSION=$(grep "VERSION:" danmu_api/configs/globals.js | sed -E "s/.*VERSION: '(.*)'.*/\1/")
echo "VERSION=$VERSION" >> $GITHUB_ENV
# 根据分支设置版本号后缀
- name: Set version suffix
run: |
if [ "${{ github.ref }}" != "refs/heads/main" ]; then
echo "VERSION_TAG=${{ env.VERSION }}-test" >> $GITHUB_ENV
else
echo "VERSION_TAG=${{ env.VERSION }}" >> $GITHUB_ENV
fi
# ✅ 先登录,再初始化 Buildx,避免拉取 BuildKit 镜像时触发匿名限速
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# 登录后手动拉取,绕过匿名限速
- name: Pull BuildKit image
run: docker pull moby/buildkit:buildx-stable-1
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and Push Docker image
run: |
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
docker buildx build --platform linux/amd64,linux/arm64 \
-t ${{ secrets.DOCKER_USERNAME }}/danmu-api:${{ env.VERSION_TAG }} \
-t ${{ secrets.DOCKER_USERNAME }}/danmu-api:latest \
--push .
else
docker buildx build --platform linux/amd64,linux/arm64 \
-t ${{ secrets.DOCKER_USERNAME }}/danmu-api:${{ env.VERSION_TAG }} \
--push .
fi