如何从download-artifact动作中提取Artifact名称并存入变量?
GitHub Actions:提取下载的Artifact名称问题解决
嘿,我看你在尝试把下载的Artifact名称存到变量里时碰了壁——问题出在actions/download-artifact@v3根本没有all这个输出项,所以你调用${{ steps.jdm.outputs.all }}肯定拿不到预期结果呀。
给你两种实用的解决思路,按需选择:
方法1:直接复用指定的Artifact名称(适合固定名称场景)
既然你在with.name里已经明确指定了jdmessenger,如果这个名称是固定不变的,完全可以直接把它赋值给环境变量,步骤更简单:
- name: Store Artifact Name to Env run: echo "ARTIFACT_NAME=jdmessenger" >> $GITHUB_ENV - name: Check the Variable run: echo $ARTIFACT_NAME
方法2:动态提取Artifact名称(适合名称不固定场景)
如果你的Artifact名称是动态生成的,或者你想从下载结果里自动获取,那可以利用actions/download-artifact的默认行为:它会把文件下载到与Artifact同名的文件夹里(你也可以指定下载路径方便查找)。代码示例如下:
- name: Download Artifact for Deployment id: jdm uses: actions/download-artifact@v3 with: name: jdmessenger path: ./artifact-downloads # 指定一个专门的下载目录,避免和其他文件混淆 - name: Extract Artifact Name Dynamically run: | # 遍历下载目录,获取唯一的文件夹名称(也就是Artifact名称) ARTIFACT_NAME=$(find ./artifact-downloads -maxdepth 1 -type d ! -name . | xargs basename) echo "ARTIFACT_NAME=$ARTIFACT_NAME" >> $GITHUB_ENV - name: Verify the Result run: echo $ARTIFACT_NAME
额外提醒:如果你是想获取仓库中所有已上传的Artifact列表,那得调用GitHub API或者使用专门的Action来查询,但你这里是下载指定的Artifact,上面两种方法就足够解决你的问题啦。
内容的提问来源于stack exchange,提问作者Maryo David
相关产品推荐
相关产品推荐

