2015-07-25 14 views
12

Tôi có cấu hình sau là .gitlab-ci.yml nhưng tôi phát hiện ra sau khi vượt qua thành công giai đoạn xây dựng (trong đó sẽ tạo ra một virtualenv gọi là venv), có vẻ như rằng trong giai đoạn thử nghiệm, bạn sẽ nhận được một môi trường hoàn toàn mới (có không có thư mục venv nào). Vì vậy, tôi tự hỏi tôi nên đặt thiết lập kịch bản trong before_script cho nó sẽ chạy trong mỗi giai đoạn (xây dựng/thử nghiệm/triển khai). Nó là một cách đúng đắn để làm điều đó?kiểm tra sau khi xây dựng sẽ chạy trong môi trường mới trên gitlab-ci

before_script: 
    - uname -r 

types: 
    - build 
    - test 
    - deploy 

job_install: 
    type: build 
    script: 
    - apt-get update 
    - apt-get install -y libncurses5-dev 
    - apt-get install -y libxml2-dev libxslt1-dev 
    - apt-get install -y python-dev libffi-dev libssl-dev 
    - apt-get install -y python-virtualenv 
    - apt-get install -y python-pip 
    - virtualenv --no-site-packages venv 
    - source venv/bin/activate 
    - pip install -q -r requirements.txt 
    - ls -al 
    only: 
    - master 

job_test: 
    type: test 
    script: 
    - ls -al 
    - source venv/bin/activate 
    - cp crawler/settings.sample.py crawler/settings.py 
    - cd crawler 
    - py.test -s -v 
    only: 
    - master 

adasd

+2

Tôi có cùng một vấn đề. Tôi đã mở một vấn đề tại https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/124 – pholz

Trả lời

1

việc Gitlab CI nghĩa vụ phải được độc lập, bởi vì họ có thể chạy trên vận động viên khác nhau. Nó không phải là vấn đề. Có hai cách để truyền tệp giữa các giai đoạn:

  • Cách đúng. Sử dụng đồ tạo tác.
  • Cách sai. Sử dụng bộ nhớ cache. Với khóa bộ nhớ cache "hack". Vẫn cần cùng một nhân vật.

Vì vậy, có nghĩa là theo cách gitlab để có mọi thứ công việc của bạn phụ thuộc vào trước khi tập lệnh.

Artifacts dụ:

artifacts: 
    when: on_success 
    expire_in: 1 mos 
    paths: 
    - some_project_files/ 

cache dụ:

cache: 
    key: "$CI_BUILD_REF_NAME" 
    untracked: true 
    paths: 
    - node_modules/ 
    - src/bower_components/ 

Đối với môi trường hoạt động đúng tôi đề nghị sử dụng Docker với hình ảnh có chứa apt-get phụ thuộc. Và sử dụng đồ tạo tác để chuyển kết quả công việc giữa các công việc. Lưu ý rằng đồ tạo tác cũng được tải lên giao diện web gitlab và có thể tải chúng xuống. Vì vậy, nếu họ đang sử dụng khá nhiều thời gian expire_in nhỏ, để loại bỏ chúng sau khi tất cả các công việc làm.

+0

Cảm ơn bạn đã trả lời. –

+0

Tôi đã không kết hợp thành công các 'tạo tác:' trong 'job_test',' job_install' ở trên – user3313834

Các vấn đề liên quan