Skip to content

Commit 10467d3

Browse files
committed
ci(release): 修复 if 条件误用 secrets 上下文导致 workflow 无法解析
GitHub Actions 的 secrets 上下文不可用于 if 条件(仅限 env/with/run)。上一提交在 Upload to OSS 与 Prefetch CDN cache 两步的 if 中直接引用 secrets,导致整个 release.yml 解析失败——所有触发立即 0 秒报错、workflow 名退化为文件路径,v0.28.7 因此成为空 Release。 改为在 job 级 env 注入 DOWNLOAD_BASE_URL / OSS_BUCKET 与布尔标志 HAS_ALIYUN_AK,step 的 if 用 env.* 引用;密钥本身仍只在 step 级 env 注入。OSS_ENDPOINT 默认值从表达式移到 shell 参数扩展。
1 parent 3b05789 commit 10467d3

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

‎.github/workflows/release.yml‎

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,14 @@ jobs:
9191
release:
9292
needs: build
9393
runs-on: ubuntu-latest
94+
# secrets 上下文**不可用于 if 条件**(仅限 env/with/run),否则整个
95+
# workflow 文件解析失败、所有触发立即 0 秒报错。
96+
# 故先将条件所需值注入 job 级 env,再在 step 的 if 中用 env.* 引用。
97+
env:
98+
DOWNLOAD_BASE_URL: ${{ secrets.DOWNLOAD_BASE_URL }}
99+
OSS_BUCKET: ${{ secrets.OSS_BUCKET }}
100+
# 仅作存在性判定的布尔标志,避免将密钥本身提到 job 级 env
101+
HAS_ALIYUN_AK: ${{ secrets.ALIYUN_ACCESS_KEY_ID != '' }}
94102
steps:
95103
- uses: actions/download-artifact@v4
96104
with:
@@ -160,16 +168,16 @@ jobs:
160168
# ECS 同步仍保留:存量客户端的更新源仍指向 ECS,且作为兜底。
161169
# ---------------------------------------------------------------
162170
- name: Upload to OSS (CDN origin)
163-
if: ${{ secrets.OSS_BUCKET != '' && secrets.ALIYUN_ACCESS_KEY_ID != '' }}
171+
if: env.OSS_BUCKET != '' && env.HAS_ALIYUN_AK == 'true'
164172
env:
165173
AK_ID: ${{ secrets.ALIYUN_ACCESS_KEY_ID }}
166174
AK_SECRET: ${{ secrets.ALIYUN_ACCESS_KEY_SECRET }}
167-
OSS_BUCKET: ${{ secrets.OSS_BUCKET }}
168-
# 未配置时默认杭州(与 ECS 同地域)
169-
OSS_ENDPOINT: ${{ secrets.OSS_ENDPOINT || 'oss-cn-hangzhou.aliyuncs.com' }}
175+
OSS_ENDPOINT_IN: ${{ secrets.OSS_ENDPOINT }}
170176
FILE_NAME: ${{ steps.meta.outputs.file }}
171177
run: |
172178
set -eo pipefail
179+
# 未配置 OSS_ENDPOINT 时默认杭州(与 ECS 同地域)
180+
OSS_ENDPOINT="${OSS_ENDPOINT_IN:-oss-cn-hangzhou.aliyuncs.com}"
173181
curl -sL https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz -o /tmp/aliyun.tgz
174182
tar -xzf /tmp/aliyun.tgz -C /tmp
175183
@@ -209,13 +217,12 @@ jobs:
209217
# ---------------------------------------------------------------
210218
- name: Prefetch CDN cache
211219
# 仅在已切换至 CDN 且配置了预热凭证时执行;未配置则跳过
212-
if: ${{ secrets.DOWNLOAD_BASE_URL != '' && secrets.ALIYUN_ACCESS_KEY_ID != '' }}
220+
if: env.DOWNLOAD_BASE_URL != '' && env.HAS_ALIYUN_AK == 'true'
213221
# 预热失败不应推翻已成功的发布,仅标记警告
214222
continue-on-error: true
215223
env:
216224
ALIBABA_CLOUD_ACCESS_KEY_ID: ${{ secrets.ALIYUN_ACCESS_KEY_ID }}
217225
ALIBABA_CLOUD_ACCESS_KEY_SECRET: ${{ secrets.ALIYUN_ACCESS_KEY_SECRET }}
218-
DOWNLOAD_BASE_URL: ${{ secrets.DOWNLOAD_BASE_URL }}
219226
FILE_NAME: ${{ steps.meta.outputs.file }}
220227
run: |
221228
set -eo pipefail

0 commit comments

Comments
 (0)