我有一个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
但是,它实际上并没有创建应该创建的文件,这是作业“运行”的输出:
...
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都行不通,而且我也不知道问题出在哪里。
答案 0 :(得分:0)
我想通了!
项目的“构建”不是在存储库中创建的,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