在 gitlab-ci 中使用 运行 python 脚本时使用正确目录的问题

Issues with using proper directory when running python script in gitlab-ci

我有一个 python 脚本,我正在尝试 运行 作为 jekyll 站点的 gitlab 页面部署的一部分。我的站点有带有各种标签的博文,python 脚本为标签页生成 .md 文件。当我在 IDE 中手动 运行 它时,该脚本工作得很好,但是我希望它成为 gitlab ci 部署过程的一部分

这是我的 gitlab-ci.yml 设置的样子:

run:
  image: python:latest
  script:
  - python tag_generator.py
  artifacts:
    paths:
    - public
  only:
  - master

pages:
  image: ruby:2.3
  stage: deploy
  script:
    - bundle install
    - bundle exec jekyll build -d public
  artifacts:
    paths:
    - public
  only:
  - master

然而,它实际上并没有创建它应该创建的文件,这里是作业的输出 "run":

...
Cloning repository...
Cloning into '/builds/username/projectname'...
Checking out 4c8a47fe as master...
Skipping Git submodules setup
$ python tag_generator.py
Tags generated, count 23
Uploading artifacts...
WARNING: public: no matching files                 
ERROR: No files to upload                          
Job succeeded

脚本在执行后会读出 "tags generated, count ___",因此它是 运行ning,但是它应该创建的文件没有 created/uploaded 到正确的目录中。根项目文件夹中有一个 /tag 目录,这是它们应该去的地方。

我意识到问题一定与 public 文件夹有关,但是当我没有

artifacts:
    paths:
    - public

还是没有在/tag目录下创建文件,所以不管我有没有-public都不行,不知道是什么问题。

我想通了!

项目的 "build" 没有在 repo 中创建,gitlab 将 repo 克隆到另一个地方,所以我不得不更改 python 作业的工件路径,以便它在克隆的 "build" 位置,如下所示:

run:
  image: python:latest
  stage: test
  before_script:
  - python -V               # Print out python version for debugging
  - pip install virtualenv
  script:
  - python tag_generator.py
  artifacts:
    paths:
    - /builds/username/projectname/tag
  only:
  - master