在gitlab-ci

时间:2019-01-29 21:57:50

标签: python jekyll gitlab-ci jobs gitlab-pages

我有一个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都行不通,而且我也不知道问题出在哪里。

1 个答案:

答案 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