Можно ли записывать файлы на свой компьютер (локальный диск) с помощью GitLab CI? - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь запустить сценарий Python, используя GitLab CI, который создаст на моем компьютере Pandas фрейм данных и запишет его в виде файла .csv.

В качестве тестового сценария я создали следующий do_stuff_2.py файл:

import datetime
import pandas as pd
import numpy as np

current_time = datetime.datetime.now()
print(f'Hello.\nCurrent date/time is:{current_time}')

df = pd.DataFrame(np.random.randint(0,100,size=(10, 4)), columns=list('ABCD'))
print(df)

df.to_csv('C:\\<USER_PATH>\\Desktop\\df_out.csv', index = False)

Это должно:

  • напечатать текущее время
  • генерирует кадр данных с 10 строками и 4 столбцами, который заполняется случайным образом значениями от 0 до 100
  • печать указанного кадра данных
  • сохраняет кадр данных на локальном диске

Когда выполняется конвейер CI, я не получаю ошибок, и первые 3 шага успешно выполняются: Pipeline execution screenshot

У меня есть .gitlab-ci. yml файл со следующими данными:

stages:
    - build

build:
    stage: build
    image: python:3.6
    script: 
        - echo "Running python..."
        - pip install -r requirements.txt
        - python do_stuff_2.py

и needs.txt file:

numpy
pandas

It похоже, у меня все настроено правильно, так как отображается время и функция print возвращает фрейм данных. Однако файл не записывается в указанное место. Когда я запускаю скрипт локально, все работает как положено, и на моем рабочем столе сохраняется датафрейм как df_out.csv .

Я использую Python 3.6, на компьютере Windows 10.

Есть ли альтернативный способ сделать это из конвейера CI в GitLab?

1 Ответ

1 голос
/ 08 января 2020

Вам необходимо установить gitlab-runner на локальном компьютере.

Если вы не можете, вы можете использовать ключевое слово artifact:, чтобы загрузить результат вашего скрипта в сервер gitlab и загрузите его позже из пользовательского интерфейса. Ваш gitlab-ci.yml будет выглядеть следующим образом:

stages:
    - build

build:
    stage: build
    image: python:3.6
    script: 
        - echo "Running python..."
        - pip install -r requirements.txt
        - python do_stuff_2.py
    artifacts: 
        paths:
        - df_out.csv

и ваш код должен измениться на:

df.to_csv('df_out.csv', index = False)
...