Github
Github Actions 工作流:
Linux 系统执行费率比 Windows(windows-2025-vs2026) 便宜一半,macOS 比其贵 10 倍。
GitHub Free 账号的 Actions 用量里的 Actions storage 进度条即 Artifact storage + Packages storage 俩共享的 500MiB;“仓库用量”里的 SKU "Actions storage" 才会包含 Cache storage(每个仓库前10GiB免费)。
Github 收费理解:
Cache 是帮你节省拉取的下行消耗,并非减少自身的下载带宽,故对于使用者,缓存用完即删可优化用量。
Artifact 从 actions/upload-artifact@v4 方式改为 softprops/action-gh-release@v2(或网页手动创建) 则不计入 500MiB 限制,单文件最大 2GiB。
源码压缩包可通过网页提交到仓库待用(供curl下载),单文件超出 100MB 可自建 Web Server 或传入 GCS,也可以网页上替换已存在 Github Release。
https://github.com/actions/runner-images#available-images
name: 最简模板.yaml
# 或推送时触发 on: [push, pull_request]
on: workflow_dispatch
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Show hostname in windows-2025-vs2026 or ubuntu-latest
#run: echo $(date)
run: |
echo $(hostname)
name: .github/workflows/示例模板.yaml
on: workflow_dispatch
env:
# gh 等命令需要 GH_TOKEN 环境变量。
GH_TOKEN: ${{ github.token }}
# @actions/cache 缓存服务器网络波动时,可设置每个 2GB 分块儿的下载超时, 默认 10 分钟。
#SEGMENT_DOWNLOAD_TIMEOUT_MINS: 15
jobs:
build:
runs-on: ubuntu-latest
# gh 等命令或 GitHub API 需要 read、write 相关权限。
permissions:
actions: read
contents: write
steps:
- uses: actions/checkout@v4
- name: windows-2025-vs2026 默认 pwsh,可显式指定 shell 为 Windows 精简版的 bash;ubuntu-latest 默认 bash。
shell: bash
run: |
echo $(hostname)
# 下载 release 文件。
#gh release download latest --pattern 'r.zip'
#gh release upload latest README.md --clobber
# gh 已内置,并通过管道解析 JSON 响应;比如列出产出物用量,应按期清理,避免超用。
gh api repos/${{ github.repository }}/actions/artifacts --paginate --jq '.artifacts[] | "\(.name) | ID: \(.id) | RUN ID: \(.workflow_run.id) | Size: \(.size_in_bytes / 1024 / 1024 | tonumber | round) MB"'
- name: 发布至 Github Release 不消耗 Artifact storage 的用量;需 contents write 权限。
uses: softprops/action-gh-release@v2
#if: github.ref_type == 'tag'
with:
files: |
.github/workflows/示例模板.yaml
tag_name: latest # 强制使用名为 latest 的标签
name: "Latest"
prerelease: true # 预发布
overwrite_files: true # 存在则覆盖
无论成败均执行
- uses: actions/upload-artifact@v4
# 或直接跳过 if: ${{ false }}
if: ${{ always() }}
缓存 - 全局缓存则去掉 ${{ github.workflow }}
- name: Cache Files
id: cache-files
uses: actions/cache@v4
with:
path: |
filename.so
/home/runner/.local/share/x/export_templates/dir/
key: ${{ github.workflow }}-non-cache-dir-1
用法:
${{ secrets.NAME }} 使用时必须在 steps 同级增加 environment: dev