在另一个工作流打包好的Artifacts,想在一个新的工作流下载并解压重新打包目标文件,说起来挺简单,还折腾了挺久。
1.下载
下载老老实实用gh(Github命令行),不想再折腾其他的所谓简单方法
- name: Install GitHub CLI
run: choco install gh
- name: Download Artifacts from build.yml
run: |
gh run download run-id --repo author/reop --name filename --dir path --pattern "*.zip"
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
2.配置TOKEN
如何设置 GH_TOKEN
:
-
创建 GitHub Personal Access Token (PAT):
- 转到 GitHub Developer Settings 页面。
- 点击 “Generate new token”,创建一个新的 token。
- 选择适当的权限,例如
repo
、workflow
等,取决于你要执行的操作。 - 生成 token 并保存好它。
-
将 PAT 设置为 GitHub Actions 秘密:
- 进入你的 GitHub 仓库页面。
- 转到
Settings > Secrets and variables > Actions
。 - 点击
New repository secret
。 - 设定名称为
GH_TOKEN
,并将刚才生成的 PAT 粘贴到值字段中。 - 保存这个秘密。
-
在 GitHub Actions 工作流中使用
GH_TOKEN
:- 在你的 GitHub Actions
.yml
文件中,将GH_TOKEN
作为环境变量传递给工作流步骤。
- 在你的 GitHub Actions
3.解压
可以使用tar,这里有个问题要注意,如果你upload Artifacts的时候,没有打包,而是upload的一个路径,那么,哪怕你下载是个zip,你也不用解压,他会直接下载成一个文件夹!
4.完整
name: Download and Repackage Artifacts
on:
workflow_dispatch:
jobs:
download_and_repackage:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4.1.6
- name: Install GitHub CLI
run: choco install gh
- name: Download Artifacts from build.yml
run: |
gh run download run-id --repo author/rep --name filename --dir path --pattern "*.zip"
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
- name: List Files in Directory
run: |
Get-ChildItem -Path D:\buildx\ | Format-Table Name, Length
- name: Copy selected files
run: |
mkdir D:\selected-files\bin
xcopy D:\buildx\a.exe D:\selected-files\bin\ /Y
- name: Upload Repackaged Artifacts
if: failure() || success()
uses: actions/upload-artifact@v4.3.3
with:
name: repackaged-artifact-15.0.2
path: D:\selected-files