没有目录的 Bitbucket 管道压缩文件

Bitbucket pipeline zipped files without directories

这是我的脚本:

image: python:3.5.7

pipelines:
  default:
    - step:
        script:
          - apt-get update
          - apt-get -qq install zip curl
          - mkdir $BITBUCKET_REPO_SLUG

          - export VERSION_LABEL=$(date +%Y-%m-%d_%H:%M:%S)
          - export ZIP_FILE=update_$BITBUCKET_REPO_SLUG_$VERSION_LABEL.zip
          - export FILES=$(git diff-tree --no-commit-id --name-only -r HEAD^^..HEAD)

          - echo "Repo name is $BITBUCKET_REPO_SLUG & version is $VERSION_LABEL"
          - echo $FILES

          - cp -R $FILES $BITBUCKET_REPO_SLUG/

          - rm -f $BITBUCKET_REPO_SLUG/bitbucket-pipelines.yml
          - rm -f $BITBUCKET_REPO_SLUG/.gitignore

          - zip -r $ZIP_FILE $BITBUCKET_REPO_SLUG/

为什么 zip 中的所有文件都在根目录中,而不是在我回显它们时看到的目录中? 有什么问题?

我不太明白你的问题,但我的第一印象是它可能是相对 path/full 路径情况。 Bitbucket 管道使用标准目录某行 /opt/atlassian/pipelines/agent/build 来提取代码。这个变量可以通过使用 BITBUCKET_CLONE_DIR built-in 变量来提取,也许你可以尝试将这个变量与你的相对路径结合起来创建你的目录。 mkdir -p $BITBUCKET_CLONE_DIR/$BITBUCKET_REPO_SLUG 之类的东西很有用。

参考:https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/

我用复制命令解决了这个问题:

cp -R --parents $FILES $BITBUCKET_REPO_SLUG/