Gitlab ci无法将所有.js文件上传到JFrog



我试图将所有.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}"

但是,如果要枚举的文件太多,或者文件名可能会更改,则可以将curlfind结合使用(灵感来自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

阅读上传文件下的更多信息。

最新更新