aabc9e29d9
Gitea Actions UI 顶部显示的 commit 是 workflow 文件所在分支(ci)的 HEAD —— 是 workflow dispatch 的位置,不是镜像实际构建的源代码 commit。 这给用户造成困惑("build 显示的 commit 不是真实 commit")。 新增 Build summary 步骤,always() 触发,写入 GITHUB_STEP_SUMMARY, 让 Action 运行页面 summary 区显式列出: - 源分支 - 源 commit full SHA - 源 commit short hash - 镜像 tag 并附明确警示说明 UI 顶部 commit 不是构建源 commit。 ci/custom 分支保持各自独立的设计不变(meta vs code 分离),仅改进 UI 信息呈现。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
93 lines
3.8 KiB
YAML
93 lines
3.8 KiB
YAML
name: Build Docker Image
|
||
|
||
on:
|
||
workflow_dispatch:
|
||
inputs:
|
||
branch:
|
||
description: '要打包的分支'
|
||
required: true
|
||
default: 'custom'
|
||
tag:
|
||
description: '镜像 tag(留空则用 commit short hash)'
|
||
required: false
|
||
default: ''
|
||
|
||
jobs:
|
||
build:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Checkout target branch
|
||
uses: actions/checkout@v4
|
||
with:
|
||
ref: ${{ inputs.branch }}
|
||
fetch-depth: 0
|
||
|
||
- name: Set up Docker Buildx
|
||
uses: docker/setup-buildx-action@v3
|
||
with:
|
||
# 钉到 v0.13.2(自带 runc 1.1.x),避免 runc 1.2+ 的 procfs 安全检查
|
||
# 在 DSM 老内核(4.4.x)上撞 openat2/fsmount 不存在导致 build 失败
|
||
driver-opts: |
|
||
image=moby/buildkit:v0.13.2
|
||
|
||
- name: Login to Gitea Container Registry
|
||
uses: docker/login-action@v3
|
||
with:
|
||
registry: git.zhengchentao.win
|
||
username: ${{ gitea.actor }}
|
||
password: ${{ secrets.PACKAGES_TOKEN }}
|
||
|
||
- name: Determine image tag and revision
|
||
id: meta
|
||
run: |
|
||
if [ -n "${{ inputs.tag }}" ]; then
|
||
IMAGE_TAG="${{ inputs.tag }}"
|
||
else
|
||
IMAGE_TAG="$(git rev-parse --short HEAD)"
|
||
fi
|
||
echo "image_tag=$IMAGE_TAG" >> $GITHUB_OUTPUT
|
||
echo "full_sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
|
||
echo "==> Image tag: $IMAGE_TAG"
|
||
|
||
- name: Build and push
|
||
uses: docker/build-push-action@v5
|
||
with:
|
||
context: .
|
||
push: true
|
||
# 上游 Dockerfile 用 BUILD_PIPELINE 作为 CI 跳过开关:
|
||
# 设为 "1" 时 pkg/exchangerates 跳过依赖第三方 API 的活测试
|
||
# (加拿大银行/乌兹别克央行 API 国内不稳,跑就超时)
|
||
# CHECK_3RD_API 留空 → 三方 API 测试不跑;想跑设 "1"
|
||
build-args: |
|
||
BUILD_PIPELINE=1
|
||
# OCI 标签:
|
||
# - source 让 Gitea 收包时自动把镜像关联到对应 repo(不再需要手动去
|
||
# "包设置 → 链接到仓库")
|
||
# - revision 把构建时的 commit full SHA 烙进镜像 manifest,
|
||
# docker inspect 能反推回源码版本
|
||
labels: |
|
||
org.opencontainers.image.source=https://git.zhengchentao.win/dev/ezbookkeeping
|
||
org.opencontainers.image.revision=${{ steps.meta.outputs.full_sha }}
|
||
tags: |
|
||
git.zhengchentao.win/dev/ezbookkeeping:${{ steps.meta.outputs.image_tag }}
|
||
git.zhengchentao.win/dev/ezbookkeeping:latest
|
||
|
||
- name: Build summary
|
||
# 写入 GITHUB_STEP_SUMMARY 让 Action 运行页面顶部显示真实构建信息。
|
||
# workflow 文件在 ci 分支,UI 顶部显示的 commit 是 ci 的 HEAD(workflow
|
||
# 触发位置),不是被构建的源代码 commit。这一步显式把"实际构建的源代码
|
||
# 信息"放到 summary 区,避免误读。always() 保证 build 失败也输出。
|
||
if: always()
|
||
run: |
|
||
{
|
||
echo "## Build Summary"
|
||
echo ""
|
||
echo "| 项 | 值 |"
|
||
echo "|---|---|"
|
||
echo "| 源分支 | \`${{ inputs.branch }}\` |"
|
||
echo "| 源 commit (full) | \`${{ steps.meta.outputs.full_sha }}\` |"
|
||
echo "| 源 commit (short) | \`${{ steps.meta.outputs.image_tag }}\` |"
|
||
echo "| 镜像 tag | \`git.zhengchentao.win/dev/ezbookkeeping:${{ steps.meta.outputs.image_tag }}\` + \`:latest\` |"
|
||
echo ""
|
||
echo "> ⚠️ 本次 workflow run 顶部显示的 commit 是 **ci 分支** 上 workflow 文件的 commit(dispatch 触发位置),**不是**被构建的源代码 commit。镜像实际构建自上面表格中的源 commit。"
|
||
} >> "$GITHUB_STEP_SUMMARY" |