У меня есть скрипт 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.
Я ПОНЯЛ!
«сборка» для проекта не выполняется в репозитории, 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