Проблемы с использованием правильного каталога при запуске скрипта Python в gitlab-ci

У меня есть скрипт python, который я пытаюсь запустить как часть развертывания страниц gitlab сайта jekyll. На моем сайте есть сообщения в блогах с различными тегами, а скрипт 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

однако на самом деле он не создает файлы, которые должен создавать, вот результат выполнения задания «запустить»:

...
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

сценарий считывает «теги сгенерированы, количество ___» после его выполнения, поэтому он работает, однако файлы, которые он должен создавать, не создаются/не загружаются в правильный каталог. в корневой папке проекта есть каталог /tag, куда они должны идти.

Я понимаю, что проблема должна иметь какое-то отношение к общей папке, однако, когда у меня нет

artifacts:
    paths:
    - public

он по-прежнему не создает файлы в каталоге /tag, поэтому он не работает независимо от того, есть ли у меня -public или нет, и я не знаю, в чем проблема.

🤔 А знаете ли вы, что...
Python популярен в анализе данных и машинном обучении с помощью библиотеки scikit-learn.


1
808
1

Ответ:

Решено

Я ПОНЯЛ!

«сборка» для проекта не выполняется в репозитории, gitlab клонирует репо в другое место, поэтому мне пришлось изменить путь артефакта для задания python, чтобы он находился в клонированном месте «сборки», например:

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