64 lines
2.0 KiB
YAML
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 |