当前位置: 首页 > 知识库问答 >
问题:

构建后测试将在gitlab ci的新环境中运行

黄博艺
2023-03-14

我的配置如下所示。gitlab ci。yml,但我发现在成功通过构建阶段(这将创建一个名为venv的virtualenv)后,在测试阶段您将获得一个全新的环境(根本没有venv目录)。因此,我想知道我是否应该在每个阶段(构建/测试/部署)中运行安装脚本之前先将其放入。这样做对吗?

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

阿达斯德

共有1个答案

裴理
2023-03-14

Gitlab CI作业应该是独立的,因为它们可以在不同的运行程序上运行。这不是问题。有两种方法在阶段之间传递文件:

  • 正确的方式。使用人工制品。
  • 错误的方式。使用缓存。用缓存键“黑客”。仍然需要同样的跑步者。

所以,是的,gitlab认为在脚本之前,您的工作所依赖的一切都应该在脚本中实现。

工件示例:

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

缓存示例:

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

对于正确的运行环境,我建议使用带有包含apt get依赖项的映像的docker。并使用人工制品在作业之间传递作业结果。请注意,artefact还上传到gitlab web界面并能够下载它们。因此,如果它们非常繁重,请及时使用小型U,以便在所有作业完成后移除它们。

 类似资料:
  • 我想在与PRODUCTION域相同的范围内构建一个Lotus Notes TEST环境,并从PRODUCTION环境中获得names.nsf的单向副本。您有逐步参考的说明或指南吗?非常感谢。

  • 问题内容: 在我的Scala测试中,我通过读取了一个环境变量。 测试通过詹金斯进行。 我添加了一个作为构建步骤。 通过查看SO上的类似问题,我想到了这个解决方案-即将“操作”字段设置为: 但它不起作用。执行时未设置任何变量。 Jenkins控制台输出包含: last 问题答案: 如果您不使用新的JVM执行测试,则设置不会执行任何操作。SBT摘录: 这解释了为什么不进行分叉测试时不使用您的代码。 您

  • 搭建IPv6环境测试APP 本地如何搭建IPv6环境测试你的APP? 一、IPV6-Only支持是啥? 首先IPV6,是对IPV4地址空间的扩充。目前当我们用iOS设备连接上Wifi、4G、3G等网络时,设备被分配的地址均是IPV4地址,但是随着运营商和企业逐渐部署IPV6 DNS64/NAT64网络之后,设备被分配的地址会变成IPV6的地址,而这些网络就是所谓的IPV6-Only网络,并且仍然可

  • 我有不同的Java测试行为(可能是在MacOS更新到Big Sur 11.2.3或其他系统之后)。 我的JUnit测试需要Mac上的变量DYLD_LIBRARY_PATH和Ubuntu上的LD_LIBRARY_PATH(使用mvn sureFire,见下文)来查找一些dylibs/共享对象。 Test在IntelliJ中工作,在两个操作系统上都没有任何问题。但是在mvn构建过程中,使用DYLD_L

  • 问题内容: 我想检查代码是否正在运行,以便可以进行一些配置。 有功能吗?喜欢: runtime.IsBeingTested() 问题答案: 只需指定您在test的中运行测试即可。例如,在pkg.go中: 在pkg_test.go中: 该技术不仅可以与s 一起使用,还可以与任何数据或函数一起使用。如果您的软件包中有一些变量(在您的情况下为配置变量),则可以在中将其覆盖。

  • 我正在jenkins上运行一组测试,我得到以下结果: 好的东西告诉我行: maven-surefire-插件: 2.16是这里的问题,所以这里是我的pom文件检查: 我已经检查了maven仓库中的插件,我看到的唯一区别是插件标签中有插件,而在网站中它是在依赖标签中。 这里可能有什么错误? 谢谢 注:抱歉纯文本,但我不知道如何给代码上色=/