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

Gitlab-ci cannot upload all .js file to JFrog

我尝试将所有 .js 文件从 Gitlab-ci 上传到 Jfrog,我得到了这个

curl: Can't open 'scripts/*.js'

如果我指向一个 specified 文件 (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结合使用(受启发):

   - find scripts -type file -name "*.js" -exec curl -u $JFROG_USERNAME:$JFROG_PASSWORD -X PUT $JFROG_URL -T {} \;

我建议使用 JFrog CLI 将文件上传到 Artifactory。通过并行上传文件并避免上传 Artifactory 中已经存在的文件,它的工作速度比 curl 快得多。

也支持通配符模式:

jfrog rt u "scripts/*.js" <path/in/artifactory> --user=$JFROG_USERNAME --password=$JFROG_PASSWORD --url=https://jfrog-platform-url/artifactory

Uploading Files 下阅读更多内容。