在大厅中,是否可以从管道运行期间使用的容器下载文件?



我的大厅管道中的一个步骤运行测试。测试失败,我想查看测试创建的文件。我可以fly hijack容器,并可以看到文件。但是我需要将文件下载到我的笔记本电脑(这是一个赛普拉斯MP4文件(。有什么方法可以从容器中手动下载该文件吗?还是我必须将其作为管道的一部分上传到某个地方?

首先,在失败的容器中准备 tar.gz 文件。

fly hijack -t your-team -b <build-num> -s <step-name> -j pipeline-name/job-name sh
$ tar zcvf cypress.tar.gz cypress
$ exit

然后将 tar.gz 文件从容器传输到本地。

fly hijack -t your-team -b <build-num> -s <step-name> -j pipeline-name/job-name cat /tmp/build/123456ab/cypress.tar.gz > ./cypress.tar.gz

是的,您必须上传要查看的文件。通过大厅在 s3 中上传(您也可以找到其他资源(。要将文件上传到 s3,您可以在大厅中配置 s3 资源,如下所示:

name: s3_upload_file
type: s3
source:
access_key_id: <give_access_key>
bucket: <bucket-name>
secret_access_key: <secret-access-key>
regexp: <file name or you can specify regex also here>

将文件上传到 s3 后,通过大厅脚本将 s3 URL 放入文件中,如下所示:

echo -e "File can be downloaded from <s3-url> >> slack.txt"

然后像这样将这条消息发送到松弛中:

- put: slack-alert
params:
always_notify: true
channel: ((slack-channel-name))
text_file: <slack.txt file location>
text: |
$TEXT_FILE_CONTENT

因此,使用 URL,任何人都可以从 s3 或您上传的任何其他来源下载文件。

据我所知,通过fly hijack传输文件是不可能的。 我想如果你有相应的 cli 工具(curl、scp 等(,你可以将文件从容器本身上传到某个远程。 作为替代方案,您可以从管道中上传文件,如"Anshita Singh"的答案中所述。

最新更新