|
91 | 91 | release: |
92 | 92 | needs: build |
93 | 93 | 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 != '' }} |
94 | 102 | steps: |
95 | 103 | - uses: actions/download-artifact@v4 |
96 | 104 | with: |
@@ -160,16 +168,16 @@ jobs: |
160 | 168 | # ECS 同步仍保留:存量客户端的更新源仍指向 ECS,且作为兜底。 |
161 | 169 | # --------------------------------------------------------------- |
162 | 170 | - 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' |
164 | 172 | env: |
165 | 173 | AK_ID: ${{ secrets.ALIYUN_ACCESS_KEY_ID }} |
166 | 174 | 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 }} |
170 | 176 | FILE_NAME: ${{ steps.meta.outputs.file }} |
171 | 177 | run: | |
172 | 178 | set -eo pipefail |
| 179 | + # 未配置 OSS_ENDPOINT 时默认杭州(与 ECS 同地域) |
| 180 | + OSS_ENDPOINT="${OSS_ENDPOINT_IN:-oss-cn-hangzhou.aliyuncs.com}" |
173 | 181 | curl -sL https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz -o /tmp/aliyun.tgz |
174 | 182 | tar -xzf /tmp/aliyun.tgz -C /tmp |
175 | 183 |
|
@@ -209,13 +217,12 @@ jobs: |
209 | 217 | # --------------------------------------------------------------- |
210 | 218 | - name: Prefetch CDN cache |
211 | 219 | # 仅在已切换至 CDN 且配置了预热凭证时执行;未配置则跳过 |
212 | | - if: ${{ secrets.DOWNLOAD_BASE_URL != '' && secrets.ALIYUN_ACCESS_KEY_ID != '' }} |
| 220 | + if: env.DOWNLOAD_BASE_URL != '' && env.HAS_ALIYUN_AK == 'true' |
213 | 221 | # 预热失败不应推翻已成功的发布,仅标记警告 |
214 | 222 | continue-on-error: true |
215 | 223 | env: |
216 | 224 | ALIBABA_CLOUD_ACCESS_KEY_ID: ${{ secrets.ALIYUN_ACCESS_KEY_ID }} |
217 | 225 | ALIBABA_CLOUD_ACCESS_KEY_SECRET: ${{ secrets.ALIYUN_ACCESS_KEY_SECRET }} |
218 | | - DOWNLOAD_BASE_URL: ${{ secrets.DOWNLOAD_BASE_URL }} |
219 | 226 | FILE_NAME: ${{ steps.meta.outputs.file }} |
220 | 227 | run: | |
221 | 228 | set -eo pipefail |
|
0 commit comments