我正在运行一个gitlab-ci
作业,它将从远程服务器本地获取一个文件,大致如下:
retrieve_docs:
stage: fetch_docs
image: debian:jessie
script:
- ssh $USERNAME@$SERVER /perform/some/work
- INSTFILE=$(ssh $USERNAME@$SERVER bash -c 'find /root -iname "somepattern*" | tail -n 1 | xargs readlink -f')
- echo "Will retrieve locally $INSTFILE"
- scp $USERNAME@$SERVER:$INSTFILE .
- BASEFILE=$(basename $INSTFILE)
- mv $BASEFILE downloads/
artifacts:
name: $BASEFILE
paths:
- downloads/
但是,上面的作业定义似乎不起作用,因为在提供文件名时,BASEFILE
变量呈现为空。
downloads
文件夹中有什么原因吗?.zip
文件。是否有一种方法(尽管我已经将到期时间设置为1周)让每个作业删除旧工件,只保留最新的工件/ zip文件?发布于 2017-11-14 11:24:06
例如,如果您使用类似于CI_JOB_ID
CI_JOB_NAME
的东西,那么每个作业都可以有动态工件名称。您可以在https://docs.gitlab.com/ee/ci/yaml/README.html#artifacts-name中定义变量组合,以获得舞台、作业或管道的动态工件名称。
通常,在作业中,git实验室压缩路径中指定的任何内容,并将其上传到运行管理器,以便下一个作业可以从运行管理器下载工件。如果作业失败,则无法将任何工件上载到其他作业。做一个find .
并检查是否有所需的脏东西在那里。您可以使用when
选项继续对线,无论它是否失败。请参阅https://docs.gitlab.com/ee/ci/yaml/README.html#artifacts-when
是的,你可以在你的计时器上用完这只人造猫。请参阅in
https://stackoverflow.com/questions/47282754
复制相似问题