Как я могу захватить функцию загрузки артефакта в Travis CI? - PullRequest
0 голосов
/ 30 октября 2018

Travis CI, похоже, имеет два разных способа загрузки артефактов сборки на (например) S3:

Я пробовал оба из них, и они определенно работают. Файлы загружаются, все довольны ... Кроме того, как кто-нибудь узнает, где находятся артефакты сборки?

Есть ли какой-нибудь способ, чтобы Travis CI показывал URL-адреса загруженных артефактов или захватывал URL-адреса, чтобы я мог что-то с ними сделать?

Или, лучше ли было бы отказаться от встроенного варианта и сделать все самому?

(я думаю о том, чтобы скрипт добавил ссылку на загруженный артефакт в большой список на очень простой HTML-странице, хотя, если есть другие варианты, я бы хотел их услышать)

1 Ответ

0 голосов
/ 01 ноября 2018

Я думаю, что то, что я пытался сделать, невозможно по двум причинам:

  1. Средство загрузки артефактов, по-видимому, не сообщает URL-адреса, на которых оно заканчивается, кроме как путем регистрации.
  2. Шаг загрузки артефакта наступает в последний раз после завершения всех этапов задания. Таким образом, вы не можете запечатлеть это на самой работе, даже если бы захотели.

Я просто вычислил URL и использовал его на шаге after_script. Примерно так:

.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 детали, в зависимости от ваших выходных данных
  • Если по какой-либо причине артефакт не удастся загрузить, вы не узнаете (так как он должен быть запущен до загрузки)
...