从此

DevOps运维、Github Actions

综合/最新



通用


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

其他