最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Gitlab:通过工作和阶段传递文物

IT培训 admin 5浏览 0评论

Gitlab:通过工作和阶段传递文物

我使用Node.js的摩卡和硒的webdriver的端到端测试。我有不同的阶段,如安装,测试按钮1,测试按钮2.每一阶段(除了安装)有2个作业(铬和用于狩猎)。我的目标,最终,得到来自各个阶段的所有作业试验结果1个txt文件。

我尝试了许多不同的配置:

  1. 总是传递神器report.txt文件,并在每个作业运行./mocha >> REPORT.TXT。 导致文件(未所有作业写入,部分罗滕等)不一致的数据
  2. 总是传递2个文物REPORT1.TXT,REPORT2.TXT,所以这项工作对铬只写在#1,作业在#2的Safari浏览器 不工作的时候,天知道为什么
  3. 带2米的工件REPORT1.TXT,REPORT2.TXT依赖性 对于产生在安装阶段没有传递给下一阶段的某些原因神器node_modules。

我没有再例子此设置,他们是乱,但我给你我.gitlab-ci.yml的例子也许你可以帮我一下吧。

stages:
  - install
  - startup
  - quality
  - language
  - report

.chrome_template: &chrome_template
  environment:
    name: chrome
  variables: &chrome_template_var
    SELENIUM_BROWSER: chrome
  tags:
    - "macbook"

.safari_template: &safari_template
  environment:
    name: safari
  variables: &safari_template_var
    SELENIUM_BROWSER: safari
  tags:
    - "macbook"

# install job

install:
  stage: install
  tags:
    - "macbook"
  script:
    - npm install
  artifacts:
    paths:
      - node_modules/
  except:
    - tags

# testing jobs

.startup: &startup
  stage: startup
  variables: &startup-var
    SPEC: startup
  script:
    - npm run test
  retry: 1
  artifacts:
    when: on_failure
    paths:
      - screenshot

.quality: &quality
  stage: quality
  variables: &quality-var
    SPEC: quality
  script:
    - npm run test
  retry: 1
  artifacts:
    when: on_failure
    paths:
      - screenshot/

.language: &language
  stage: language
  variables: &language-var
    SPEC: language
  script:
    - npm run test
  retry: 1
  artifacts:
    when: on_failure
    paths:
      - screenshot/

startup:chrome:
  <<: *startup
  <<: *chrome_template
  variables:
    <<: *startup-var
    <<: *chrome_template_var

language:chrome:
  <<: *language
  <<: *chrome_template
  variables:
    <<: *language-var
    <<: *chrome_template_var

quality:chrome:
  <<: *quality
  <<: *chrome_template
  variables:
    <<: *quality-var
    <<: *chrome_template_var

startup:safari:
  <<: *startup
  <<: *safari_template
  variables:
    <<: *startup-var
    <<: *safari_template_var

language:safari:
  <<: *language
  <<: *safari_template
  variables:
    <<: *language-var
    <<: *safari_template_var

quality:safari:
  <<: *quality
  <<: *safari_template
  variables:
    <<: *quality-var
    <<: *safari_template_var

report:
  stage: report
  tags:
    - "macbook"
  script:
    - cat *.txt > report.txt
  artifacts:
    paths:
      - report.txt
回答如下:

至少有几个您发布的文件中可能出现的问题:

  1. artifacts.name没有定义,因此默认的“神器”的字符串将被使用。这对覆盖一个伪文件与其他多个作业时,在同一台主机上并行运行的风险。定义自定义artifacts:name修复覆盖。
  2. 如果在同一个文件夹存放report.txt,那么请在完成工作之前将其重命名,所以报告文件不会将您的report阶段的工作,所有的请求的神器档案将被解压到同一位置被覆盖。
  3. 好像没有工作(启动,质量,语言)出口report.txt文件。添加report.txtscreenshots文件夹一起导出。
  4. 截图(和报告)将在作业失败,只能出口。如果这不是想要的行为,改变artifacts:when到on_successalways
  5. 如果测试工作的人会失败,整个管道失败。如果这条管道大约只有测试和出口的结果,你应该让测试作业不会失败与allow_failure整个管道失败

总结上面的一切写的,这里的提出改变了YML文件:

stages:
  - install
  - test
  - report

#
# Templates
#

# Tags can't be defined on a global scope for now
# Ref: https://gitlab/gitlab-org/gitlab-ce/issues/23434
.default: &default
  tags: ['macbook']

.node_modules:
  artifacts: &node_modules
    paths: ['node_modules']
    when: always

.test_reports:
  artifacts: &test_reports
    paths:
      - screenshot
      - reports
    when: always

.chrome_template: &chrome_template
  environment:
    name: chrome
  variables: &chrome_template_var
    SELENIUM_BROWSER: chrome

.safari_template: &safari_template
  environment:
    name: safari
  variables: &safari_template_var
    SELENIUM_BROWSER: safari

#
# Jobs
#

# Install

install:
  <<: *default
  stage: install
  except: ['tags']
  script:
    - npm install
  artifacts: *node_modules

# Test

.test: &test
  <<: *default
  stage: test
  script:
    - npm run test
    # Move report to individual file to fix overwriting it by other artifacts
    - mkdir -p reports
    - mv report.txt reports/report_${CI_JOB_NAME}.txt
  retry: 1
  artifacts: *test_reports
  # Allow tests to fail, exporting artifacts to the final stage
  allow_failure: true

.test_startup: &test_startup
  <<: *test
  variables: &startup_var
    SPEC: startup

.test_quality: &test_quality
  <<: *test
  variables: &quality_var
    SPEC: quality

.test_language: &test_language
  <<: *test
  variables: &language_var
    SPEC: language


test:startup:chrome:
  <<: *test_startup
  <<: *chrome_template
  variables:
    <<: *startup_var
    <<: *chrome_template_var

test:language:chrome:
  <<: *test_language
  <<: *chrome_template
  variables:
    <<: *language_var
    <<: *chrome_template_var

test:quality:chrome:
  <<: *test_quality
  <<: *chrome_template
  variables:
    <<: *quality_var
    <<: *chrome_template_var

test:startup:safari:
  <<: *test_startup
  <<: *safari_template
  variables:
    <<: *startup_var
    <<: *safari_template_var

test:language:safari:
  <<: *test_language
  <<: *safari_template
  variables:
    <<: *language_var
    <<: *safari_template_var

test:quality:safari:
  <<: *test_quality
  <<: *safari_template
  variables:
    <<: *quality_var
    <<: *safari_template_var

# Report

report:
  <<: *default
  stage: report
  script:
    # Summarize reports before exporting
    # Ignore errors when there are no reports to export
    - cat reports/*.txt > report.txt | true
  artifacts:
    paths:
      - screenshot
      - report.txt

请检查多次失败的测试作业不会覆盖“屏幕截图”文件夹中的内容。否则,你需要为它与“一个report.txt”文件所做的相同方式移动截图。

Gitlab:通过工作和阶段传递文物

我使用Node.js的摩卡和硒的webdriver的端到端测试。我有不同的阶段,如安装,测试按钮1,测试按钮2.每一阶段(除了安装)有2个作业(铬和用于狩猎)。我的目标,最终,得到来自各个阶段的所有作业试验结果1个txt文件。

我尝试了许多不同的配置:

  1. 总是传递神器report.txt文件,并在每个作业运行./mocha >> REPORT.TXT。 导致文件(未所有作业写入,部分罗滕等)不一致的数据
  2. 总是传递2个文物REPORT1.TXT,REPORT2.TXT,所以这项工作对铬只写在#1,作业在#2的Safari浏览器 不工作的时候,天知道为什么
  3. 带2米的工件REPORT1.TXT,REPORT2.TXT依赖性 对于产生在安装阶段没有传递给下一阶段的某些原因神器node_modules。

我没有再例子此设置,他们是乱,但我给你我.gitlab-ci.yml的例子也许你可以帮我一下吧。

stages:
  - install
  - startup
  - quality
  - language
  - report

.chrome_template: &chrome_template
  environment:
    name: chrome
  variables: &chrome_template_var
    SELENIUM_BROWSER: chrome
  tags:
    - "macbook"

.safari_template: &safari_template
  environment:
    name: safari
  variables: &safari_template_var
    SELENIUM_BROWSER: safari
  tags:
    - "macbook"

# install job

install:
  stage: install
  tags:
    - "macbook"
  script:
    - npm install
  artifacts:
    paths:
      - node_modules/
  except:
    - tags

# testing jobs

.startup: &startup
  stage: startup
  variables: &startup-var
    SPEC: startup
  script:
    - npm run test
  retry: 1
  artifacts:
    when: on_failure
    paths:
      - screenshot

.quality: &quality
  stage: quality
  variables: &quality-var
    SPEC: quality
  script:
    - npm run test
  retry: 1
  artifacts:
    when: on_failure
    paths:
      - screenshot/

.language: &language
  stage: language
  variables: &language-var
    SPEC: language
  script:
    - npm run test
  retry: 1
  artifacts:
    when: on_failure
    paths:
      - screenshot/

startup:chrome:
  <<: *startup
  <<: *chrome_template
  variables:
    <<: *startup-var
    <<: *chrome_template_var

language:chrome:
  <<: *language
  <<: *chrome_template
  variables:
    <<: *language-var
    <<: *chrome_template_var

quality:chrome:
  <<: *quality
  <<: *chrome_template
  variables:
    <<: *quality-var
    <<: *chrome_template_var

startup:safari:
  <<: *startup
  <<: *safari_template
  variables:
    <<: *startup-var
    <<: *safari_template_var

language:safari:
  <<: *language
  <<: *safari_template
  variables:
    <<: *language-var
    <<: *safari_template_var

quality:safari:
  <<: *quality
  <<: *safari_template
  variables:
    <<: *quality-var
    <<: *safari_template_var

report:
  stage: report
  tags:
    - "macbook"
  script:
    - cat *.txt > report.txt
  artifacts:
    paths:
      - report.txt
回答如下:

至少有几个您发布的文件中可能出现的问题:

  1. artifacts.name没有定义,因此默认的“神器”的字符串将被使用。这对覆盖一个伪文件与其他多个作业时,在同一台主机上并行运行的风险。定义自定义artifacts:name修复覆盖。
  2. 如果在同一个文件夹存放report.txt,那么请在完成工作之前将其重命名,所以报告文件不会将您的report阶段的工作,所有的请求的神器档案将被解压到同一位置被覆盖。
  3. 好像没有工作(启动,质量,语言)出口report.txt文件。添加report.txtscreenshots文件夹一起导出。
  4. 截图(和报告)将在作业失败,只能出口。如果这不是想要的行为,改变artifacts:when到on_successalways
  5. 如果测试工作的人会失败,整个管道失败。如果这条管道大约只有测试和出口的结果,你应该让测试作业不会失败与allow_failure整个管道失败

总结上面的一切写的,这里的提出改变了YML文件:

stages:
  - install
  - test
  - report

#
# Templates
#

# Tags can't be defined on a global scope for now
# Ref: https://gitlab/gitlab-org/gitlab-ce/issues/23434
.default: &default
  tags: ['macbook']

.node_modules:
  artifacts: &node_modules
    paths: ['node_modules']
    when: always

.test_reports:
  artifacts: &test_reports
    paths:
      - screenshot
      - reports
    when: always

.chrome_template: &chrome_template
  environment:
    name: chrome
  variables: &chrome_template_var
    SELENIUM_BROWSER: chrome

.safari_template: &safari_template
  environment:
    name: safari
  variables: &safari_template_var
    SELENIUM_BROWSER: safari

#
# Jobs
#

# Install

install:
  <<: *default
  stage: install
  except: ['tags']
  script:
    - npm install
  artifacts: *node_modules

# Test

.test: &test
  <<: *default
  stage: test
  script:
    - npm run test
    # Move report to individual file to fix overwriting it by other artifacts
    - mkdir -p reports
    - mv report.txt reports/report_${CI_JOB_NAME}.txt
  retry: 1
  artifacts: *test_reports
  # Allow tests to fail, exporting artifacts to the final stage
  allow_failure: true

.test_startup: &test_startup
  <<: *test
  variables: &startup_var
    SPEC: startup

.test_quality: &test_quality
  <<: *test
  variables: &quality_var
    SPEC: quality

.test_language: &test_language
  <<: *test
  variables: &language_var
    SPEC: language


test:startup:chrome:
  <<: *test_startup
  <<: *chrome_template
  variables:
    <<: *startup_var
    <<: *chrome_template_var

test:language:chrome:
  <<: *test_language
  <<: *chrome_template
  variables:
    <<: *language_var
    <<: *chrome_template_var

test:quality:chrome:
  <<: *test_quality
  <<: *chrome_template
  variables:
    <<: *quality_var
    <<: *chrome_template_var

test:startup:safari:
  <<: *test_startup
  <<: *safari_template
  variables:
    <<: *startup_var
    <<: *safari_template_var

test:language:safari:
  <<: *test_language
  <<: *safari_template
  variables:
    <<: *language_var
    <<: *safari_template_var

test:quality:safari:
  <<: *test_quality
  <<: *safari_template
  variables:
    <<: *quality_var
    <<: *safari_template_var

# Report

report:
  <<: *default
  stage: report
  script:
    # Summarize reports before exporting
    # Ignore errors when there are no reports to export
    - cat reports/*.txt > report.txt | true
  artifacts:
    paths:
      - screenshot
      - report.txt

请检查多次失败的测试作业不会覆盖“屏幕截图”文件夹中的内容。否则,你需要为它与“一个report.txt”文件所做的相同方式移动截图。

发布评论

评论列表 (0)

  1. 暂无评论