Skip to content

Commit 96b8158

Browse files
fix: docker issue
1 parent b98c827 commit 96b8158

3 files changed

Lines changed: 21 additions & 13 deletions

File tree

.github/workflows/docker-publish.yml

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,11 @@ on:
66
- 'v*.*.*'
77
workflow_dispatch:
88
inputs:
9-
tag:
10-
description: 'Image tag to build'
11-
required: true
12-
default: 'latest'
13-
type: choice
14-
options:
15-
- latest
16-
- preview
9+
extra_tag:
10+
description: 'Optional extra image tag, for example latest or preview'
11+
required: false
12+
default: ''
13+
type: string
1714

1815
permissions:
1916
contents: read
@@ -75,7 +72,7 @@ jobs:
7572
type=semver,pattern={{version}}
7673
type=semver,pattern={{major}}.{{minor}}
7774
type=semver,pattern={{major}}
78-
type=raw,value=${{ github.event.inputs.tag }},enable=${{ github.event_name == 'workflow_dispatch' }}
75+
type=raw,value=${{ github.event.inputs.extra_tag }},enable=${{ github.event_name == 'workflow_dispatch' && github.event.inputs.extra_tag != '' }}
7976
8077
- name: Build and push
8178
if: steps.policy.outputs.should_publish == 'true'

.github/workflows/release.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ on:
3333
type: boolean
3434

3535
permissions:
36+
actions: write
3637
contents: write
3738

3839
concurrency:
@@ -272,6 +273,14 @@ jobs:
272273
--title "IMX-Forge ${NEW_VERSION}" \
273274
--notes-file release-body.md
274275
276+
- name: Dispatch Docker publish
277+
if: ${{ !inputs.dry_run && inputs.publish_docker_image }}
278+
env:
279+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
280+
NEW_VERSION: ${{ steps.version.outputs.new_version }}
281+
run: |
282+
gh workflow run docker-publish.yml --ref "${NEW_VERSION}"
283+
275284
- name: Dry run notice
276285
if: ${{ inputs.dry_run }}
277286
run: echo "Dry run enabled. No tag or GitHub Release was created."

document/release/versioning-strategy.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ IMX-Forge 目前更适合采用 **维护者手动触发 release workflow** 的
3232
| Release 文档 | `document/release/v1.0.0.md` | 适合继续按正式版本维护 |
3333
| CHANGELOG | `changelog/CHANGELOG.md` | 已存在,后续沿用此路径 |
3434
| GitHub Actions workflow | 5 个 | 已有 CI、Full Build、Pages、Docker 发布基础 |
35-
| Docker 发布触发 | `v*.*.*` tag + tag message 策略 | 与手动 release workflow 衔接,并支持按版本跳过 |
35+
| Docker 发布触发 | release workflow dispatch + 手动 dispatch + tag push 兜底 | 与手动 release workflow 衔接,并支持按版本跳过 |
3636
| `package.json` version | `0.0.1``private: true` | 不作为项目发布版本源 |
3737

3838
现有 workflow:
@@ -43,7 +43,7 @@ IMX-Forge 目前更适合采用 **维护者手动触发 release workflow** 的
4343
- `.github/workflows/deploy.yml`
4444
- `.github/workflows/docker-publish.yml`
4545

46-
关键点:`.github/workflows/docker-publish.yml` 已经在 `v*.*.*` tag push 时响应 Docker 发布。release workflow 会在 annotated tag message 中写入 `Docker-Image: true/false`,Docker workflow 据此决定是否实际构建镜像
46+
关键点:GitHub Actions 使用 `GITHUB_TOKEN` 推送 tag 时,不会级联触发另一个 `push tags` workflow。release workflow 因此在 `publish_docker_image=true` 时显式 `workflow_dispatch` 调用 `.github/workflows/docker-publish.yml`,并以新 tag 作为 `--ref`。本地或人工推送 `v*.*.*` tag 时,Docker workflow 仍可通过 tag push 触发作为兜底
4747

4848
---
4949

@@ -188,7 +188,7 @@ release workflow 应执行以下动作:
188188
|-- 创建 annotated tag
189189
|-- push tag
190190
|-- 按 create_github_release 决定是否创建 GitHub Release
191-
|-- 按 publish_docker_image 决定 docker-publish.yml 是否发布 Docker 镜像
191+
|-- 按 publish_docker_image 决定是否显式 dispatch docker-publish.yml
192192
```
193193

194194
建议 tag 使用 annotated tag,并写入发布意图:
@@ -201,6 +201,8 @@ GitHub-Release: true
201201
Docker-Image: true
202202
```
203203

204+
注意:`Docker-Image` 字段主要用于人工 tag push 的兜底路径。release workflow 创建 tag 后,会直接通过 `workflow_dispatch` 触发 Docker workflow,避免 `GITHUB_TOKEN` tag push 不触发后续 workflow 的限制。
205+
204206
### 5.4 发布前检查
205207

206208
发布 workflow 至少应执行:
@@ -390,7 +392,7 @@ v1.1.0
390392
| 2 | `README.md` | 修改 | 在 badge 区域增加 Release badge |
391393
| 3 | `changelog/CHANGELOG.md` | 修改 | 保持现有路径,后续按版本补充 |
392394
| 4 | `document/release/versioning-strategy.md` | 修改 | 本策略文档,已接入发布文档站 |
393-
| 5 | `.github/workflows/docker-publish.yml` | 修改 | 继续响应 `v*.*.*` tag,并按 tag message 中的 `Docker-Image` 决定是否发布 |
395+
| 5 | `.github/workflows/docker-publish.yml` | 修改 | 支持 release workflow dispatch,在 tag push 兜底路径中按 tag message `Docker-Image` 决定是否发布 |
394396

395397
暂不实施:
396398

0 commit comments

Comments
 (0)