无法在Gitlab CI上使用Python写入文件

时间:2019-07-16 20:31:35

标签: python gitlab

我在Gitlab的CI中看到一些奇怪的行为。

我有一个写入文件的单元测试,例如:

def test_data(self):
    data = 123
    with open('data/model.pkl', 'wb') as fout:
        pickle.dump(data, fout)

当它在本地运行时可以通过,但是当它在Gitlab的CI管道上运行时会失败,并显示以下错误:

FileNotFoundError: [Errno 2] No such file or directory: 'data/model.pkl'

我对此感到困惑,因为如果丢失了文件,应该编写文件来创建文件,但是我想也许./data文件夹被排除在外了,即使它包含在我的仓库中,所以我将测试更改为:

def test_data(self):
    data = 123
    if not os.path.exists('data')
        os.makedirs('data')
    with open('data/model.pkl', 'wb') as fout:
        pickle.dump(data, fout)

再次,该方法在本地运行良好,但是在Gitlab上,它现在在os.makedirs('data')行中失败,显示为:

[Errno 2] No such file or directory: 'data'

这是怎么回事?看起来Python无法写入本地文件系统。 Gitlab是否仅在只读环境中运行代码?我该如何解决?

我的.gitlab-ci.yml如下:

image: ubuntu:latest

before_script:
  - apt-get -yq update
  - apt-get -yq install python3-minimal python3.7 python3.7-dev python3-pip
  - pip3 install -r requirements-test.txt

test:
  script:
  - virtualenv -p python3.7 .env
  - . .env/bin/activate
  - pip3 install -r requirements.txt
  - tox

0 个答案:

没有答案