我试图将所有.js文件从Gitlab ci上传到Jfrog,我得到了这个
curl:无法打开"scripts/*.js">
如果我指向指定的文件(scripts/001.js(,它就会工作
我的.gitlab-ci.yml
---
default:
image:
name: ubuntu:18.04
entrypoint:
- '/usr/bin/env'
- 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
stages:
- upload
job01:
only:
- branches
stage: upload
script:
- apt update -y
- apt install curl -y
- curl -u $JFROG_USERNAME:$JFROG_PASSWORD -X PUT $JFROG_URL -T 'scripts/*.js'
tags:
- runner-aws
我尝试使用"scripts/(*(.js",但出现了相同的错误。
问题是curl
在-T
选项中不支持通配符扩展。这个答案很好地概括了它:https://unix.stackexchange.com/a/315431
因此,解决方案是枚举多个文件,如下所示:
- curl -u $JFROG_USERNAME:$JFROG_PASSWORD -X PUT $JFROG_URL -T "scripts/{file1.js,file2.js,file3.js}"
但是,如果要枚举的文件太多,或者文件名可能会更改,则可以将curl
与find
结合使用(灵感来自https://stackoverflow.com/a/14020013/7109330):
- find scripts -type file -name "*.js" -exec curl -u $JFROG_USERNAME:$JFROG_PASSWORD -X PUT $JFROG_URL -T {} ;
我建议使用JFrog CLI将文件上传到Artifactory。它的工作速度比curl快得多,可以并行上传文件,避免上传Artifactory中已经存在的文件。
它还支持通配符模式:
jfrog rt u "scripts/*.js" <path/in/artifactory> --user=$JFROG_USERNAME --password=$JFROG_PASSWORD --url=https://jfrog-platform-url/artifactory
阅读上传文件下的更多信息。