如何在Travis CI上捕获工件上传功能?

时间:2018-10-30 07:45:03

标签: travis-ci

Travis CI似乎有两种不同的方式将构建工件上传到(例如)S3:

我都尝试过这两种方法,它们确实可以工作。这些文件被上传了,大家都很高兴……除了,还有人怎么知道构建工件在哪里?

是否有办法让Travis CI显示上传的工件的URL,或捕获URL,以便我自己对它们进行处理?

或者,最好的选择是放弃内置选项,自己完成整个工作吗?

(我正在考虑让脚本将到上传的工件的链接附加到一个非常简单的HTML页面上的大列表中,尽管如果有其他选择,我希望听到它们)

1 个答案:

答案 0 :(得分:0)

我认为我尝试要做的事情是不可能的,原因有两个:

  1. 除通过日志记录外,工件上传工具似乎未报告其最终到达的URL。
  2. 在完成所有作业步骤之后,工件上传步骤最后一次失败。因此,即使您愿意,也无法将其捕获到作业本身中。

我最终只计算了URL,并在after_script步骤中使用了URL。像这样:

.travis.yml:

# ...other stuff here...
after_script: ./artifact.sh
addons:
  artifacts:
    working_dir: build/libs
    paths:
      - $(ls build/libs/*.jar | tr "\n" ":")
    permissions: public-read

artifact.sh:

#!/bin/sh

cd build/libs

TRAVIS_PATH=${TRAVIS_REPO_SLUG}/${TRAVIS_BUILD_NUMBER}/${TRAVIS_JOB_NUMBER}
NEWURL=https://s3.amazonaws.com/${ARTIFACTS_BUCKET}/${TRAVIS_PATH}/`ls *.jar`

cd ../..

# do something with $NEWURL here

注意:

  • 这仅适用于单个输出。但是,您可以根据需要轻松添加循环
  • 根据您的输出,您可能需要更改*.jar部分
  • 如果工件因某种原因无法上传,您将不会知道(因为必须在上传之前运行)