Add config hot-reload & manual reload API #3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # ============================================================ | |
| # 服务端 Docker 镜像自动构建并发布到 GHCR | |
| # ============================================================ | |
| # 触发条件: | |
| # 1. 推送到 main 分支且 server/ 目录有变更 | |
| # 2. 推送 v* 格式的 tag(如 v1.0.0) | |
| # 3. 手动触发 | |
| # | |
| # 发布产物: | |
| # - ghcr.io/<owner>/serverstatusapi-server:latest (main 分支) | |
| # - ghcr.io/<owner>/serverstatusapi-server:<tag> (版本 tag,如 v1.0.0) | |
| # - ghcr.io/<owner>/serverstatusapi-server:1.0 (主次版本号) | |
| # - ghcr.io/<owner>/serverstatusapi-server:sha-<short> (commit SHA 前12位) | |
| # ============================================================ | |
| name: Build & Publish Server Docker Image | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - master | |
| paths: | |
| - "server/**" | |
| - ".github/workflows/docker-server.yml" | |
| tags: | |
| - "v*" | |
| workflow_dispatch: | |
| inputs: | |
| reason: | |
| description: "构建原因" | |
| required: false | |
| default: "manual" | |
| env: | |
| REGISTRY: ghcr.io | |
| IMAGE_NAME: ${{ github.repository }}-server | |
| concurrency: | |
| group: docker-server-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| packages: write | |
| jobs: | |
| build-and-push: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # ---------------------------------------------------- | |
| # 1. 检出代码 | |
| # ---------------------------------------------------- | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| # ---------------------------------------------------- | |
| # 2. 提取镜像元数据(tags + labels) | |
| # ---------------------------------------------------- | |
| - name: Extract metadata | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
| tags: | | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| type=semver,pattern={{major}} | |
| type=sha,prefix=sha-,format=short | |
| labels: | | |
| org.opencontainers.image.title=MC服务器状态监测-服务端 | |
| org.opencontainers.image.description=Minecraft Server Status Monitor - Server | |
| org.opencontainers.image.licenses=MIT | |
| # ---------------------------------------------------- | |
| # 3. 登录 GHCR | |
| # ---------------------------------------------------- | |
| - name: Log in to GHCR | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| # ---------------------------------------------------- | |
| # 4. 设置 Docker Buildx | |
| # ---------------------------------------------------- | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| # ---------------------------------------------------- | |
| # 5. 构建并推送镜像 | |
| # ---------------------------------------------------- | |
| - name: Build and push | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| file: server/Dockerfile | |
| platforms: linux/amd64,linux/arm64 | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| # ---------------------------------------------------- | |
| # 6. 输出镜像摘要 | |
| # ---------------------------------------------------- | |
| - name: Image digest | |
| run: | | |
| echo "✅ 服务端镜像构建并推送成功" | |
| echo "" | |
| echo "镜像地址:" | |
| echo " ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" | |
| echo "" | |
| echo "Tags:" | |
| echo "${{ steps.meta.outputs.tags }}" | sed 's/^/ /' | |
| echo "" | |
| echo "Digest:" | |
| echo " ${{ steps.meta.outputs.digest }}" |