在GitHub Actions中使用docker://时如何捕获Docker容器的STDOUT
解决GitHub Action中
uses: docker://捕获STDOUT的问题 方法:将容器输出写入工作目录文件,再读取用于Summary
由于uses: docker://模式下,Runner会自动清理容器,无法通过docker logs访问输出,你可以通过将容器命令的STDOUT重定向到工作目录的文件中,后续步骤读取该文件内容即可写入GitHub Summary。
步骤1:修改uses: docker://步骤的args,将输出写入文件
给容器的命令添加重定向,把输出写入工作目录的文件(比如version-output.txt):
runs: using: composite steps: - name: Checkout code uses: actions/checkout@v2 - name: Run docker (student image) uses: docker://<image-from-registry> with: args: > version > /github/workspace/version-output.txt
步骤2:读取文件内容并写入GitHub Summary
添加一个run步骤,读取文件内容,然后写入$GITHUB_STEP_SUMMARY文件(GitHub Summary的标准写入方式):
- name: Write to GitHub Summary run: | echo "### 容器输出结果" >> $GITHUB_STEP_SUMMARY echo "\`\`\`" >> $GITHUB_STEP_SUMMARY cat version-output.txt >> $GITHUB_STEP_SUMMARY echo "\`\`\`" >> $GITHUB_STEP_SUMMARY shell: bash
补充说明
/github/workspace是GitHub Runner默认挂载到容器的工作目录,容器内写入该路径的文件会保留在Action的工作目录中,后续步骤可以直接访问。- 如果需要同时保留日志输出和文件写入,可以用
tee命令替代重定向:version | tee /github/workspace/version-output.txt,这样STDOUT会同时输出到日志和文件中。
内容的提问来源于stack exchange,提问作者Garry O Connor
相关产品推荐
相关产品推荐

