Cha*_*ang 12 gitlab gitlab-ci gitlab-ci-runner
我有以下配置为.gitlab-ci.yml,但我在成功传递构建阶段后发现(这将创建一个名为venv的virtualenv),似乎在测试阶段你会得到一个全新的环境(没有venv目录在所有).所以我想我应该将setup脚本放在before_script中,因为它会在每个阶段运行(build/test/deploy).这是一种正确的方法吗?
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
Run Code Online (Sandbox Code Playgroud)
adasd
小智 2
Gitlab CI 作业应该是独立的,因为它们可以在不同的运行器上运行。这不是问题。在阶段之间传递文件有两种方法:
所以是的,按 gitlab 的方式假设你的工作所依赖的一切都在脚本之前。
工件示例:
artifacts:
when: on_success
expire_in: 1 mos
paths:
- some_project_files/
Run Code Online (Sandbox Code Playgroud)
缓存示例:
cache:
key: "$CI_BUILD_REF_NAME"
untracked: true
paths:
- node_modules/
- src/bower_components/
Run Code Online (Sandbox Code Playgroud)
为了正确的运行环境,我建议使用 docker 和包含 apt-get 依赖项的图像。并使用工件在作业之间传递作业结果。请注意,artefact 还上传到 gitlab Web 界面并能够下载它们。因此,如果它们非常重,请使用较小的expire_in time,以便在所有作业完成后删除它们。
| 归档时间: |
|
| 查看次数: |
2134 次 |
| 最近记录: |