fix(ci): attest releases and validate offline examples

This commit is contained in:
yeasy
2026-07-10 19:29:30 -07:00
parent daa6661b2b
commit ee0fbd7d38
15 changed files with 11967 additions and 59 deletions
+50
View File
@@ -36,6 +36,56 @@ jobs:
仓库还提供一份经 `actionlint` 校验并将 `checkout` 固定到完整 commit SHA [可执行工作流示例](../examples/validated/github-actions/validate.yml)为了让正文突出结构下面较长的教学片段仍用主版本 tag生产工作流应采用完整 SHA
下面的完整围栏与仓库文件由测试强制保持一致并校验下载工具的 SHA-256
<!-- canonical-example: github-actions -->
```yaml
name: Validate container examples
on:
push:
branches:
- master
pull_request:
permissions:
contents: read
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Install pinned validators
env:
KUBECONFORM_VERSION: "0.8.0"
KUBECONFORM_SHA256: "9bc2bffbf71f261128533edaf912153948b7ff238f9a531ae6d34466ec287883"
ACTIONLINT_VERSION: "1.7.12"
ACTIONLINT_SHA256: "8aca8db96f1b94770f1b0d72b6dddcb1ebb8123cb3712530b08cc387b349a3d8"
run: |
mkdir -p "$RUNNER_TEMP/bin"
curl -fsSL --retry 3 \
"https://github.com/yannh/kubeconform/releases/download/v${KUBECONFORM_VERSION}/kubeconform-linux-amd64.tar.gz" \
-o "$RUNNER_TEMP/kubeconform.tar.gz"
echo "${KUBECONFORM_SHA256} $RUNNER_TEMP/kubeconform.tar.gz" | sha256sum -c -
tar xzf "$RUNNER_TEMP/kubeconform.tar.gz" -C "$RUNNER_TEMP/bin" kubeconform
curl -fsSL --retry 3 \
"https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VERSION}/actionlint_${ACTIONLINT_VERSION}_linux_amd64.tar.gz" \
-o "$RUNNER_TEMP/actionlint.tar.gz"
echo "${ACTIONLINT_SHA256} $RUNNER_TEMP/actionlint.tar.gz" | sha256sum -c -
tar xzf "$RUNNER_TEMP/actionlint.tar.gz" -C "$RUNNER_TEMP/bin" actionlint
echo "$RUNNER_TEMP/bin" >> "$GITHUB_PATH"
- name: Validate canonical examples
run: python3 tools/test_examples.py --require-tools
```
### 21.2.2 构建并推送到 Registry
实际项目中通常需要在 CI 中构建镜像并推送到容器 Registry以下示例展示了多阶段构建 + 登录 + 推送的完整流程