首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在完成目录外的文件时触发CI-job

在完成目录外的文件时触发CI-job
EN

Stack Overflow用户
提问于 2021-03-10 23:10:22
回答 1查看 31关注 0票数 0

我的项目包含一个包含UI相关代码的文件夹。对于我的测试,我有API测试和UI测试,我想触发具有特定场景的作业,如果UI目录中的更改运行UI测试,这可以只使用标签来完成。

代码语言:javascript
复制
only:
    changes:
      - directory/UI/**/*

,然后如果API发生变化,我想运行API测试。问题是我的项目有大约20个目录,并且只有一个目录包含API的UI,有没有一种方法可以做到这一点,

代码语言:javascript
复制
only:
        changes:
          - directory1/project/**/*
          - directory2/project/**/*
          - directory3/project/**/*
          - directory5/project/**/*
          - directory6/project/**/*
          - directory7/project/**/*
          - directory8/project/**/*

我可以使用except,但这仅适用于UI更改和API更改,但不适用于同时更改API和UI的情况。有没有一种方法可以找到计算所有目录的方法?思考类似于仅在目录/UI之外更改的内容

EN

回答 1

Stack Overflow用户

发布于 2021-03-11 02:01:32

如果您有一个用于UI更改的作业,

代码语言:javascript
复制
only:
  changes:
    - directory/UI/*

API更改的另一个任务如下:

代码语言:javascript
复制
only:
  changes:
    - directory/API/*
    - ...

然后,如果同时推送对UI和API的更改,则这两个作业都将在管道中运行。

下面是一个完整的.gitlab-ci.yml示例(这只是一个愚蠢的示例,因为我不知道您的管道是做什么的):

代码语言:javascript
复制
stages:
  - build
  - test
  - deploy

Build The App:
  stage: build
  script:
    - # run some build steps like `npm ci`, `npm run build`, generating config files, etc.

Test UI Changes:
  stage: test
  only:
    changes:
      - /path/to/UI
  script:
    - # test the UI

Test API Changes:
  stage: test
  only:
    changes:
      - /path/to/API
  script:
    - # test the API

Deploy:
  stage: deploy
  when: manual
  script:
    - # deploy the whole app

在本例中,任何针对应用编程接口或UI所需的构建步骤都发生在build阶段,无论是在一个作业中还是在多个作业中-这取决于您。测试阶段有两个作业,因为我们分别测试UI和API,但只有在UI或API发生更改时才需要运行测试。如果我们只将更改推送到UI,则只会运行该作业,API作业也是如此。但是,如果我们对这两个作业都进行了更改,那么这两个作业都将在此阶段运行。

最后,当测试成功时,我们部署应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66567524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档