我的项目包含一个包含UI相关代码的文件夹。对于我的测试,我有API测试和UI测试,我想触发具有特定场景的作业,如果UI目录中的更改运行UI测试,这可以只使用标签来完成。
only:
changes:
- directory/UI/**/*,然后如果API发生变化,我想运行API测试。问题是我的项目有大约20个目录,并且只有一个目录包含API的UI,有没有一种方法可以做到这一点,
only:
changes:
- directory1/project/**/*
- directory2/project/**/*
- directory3/project/**/*
- directory5/project/**/*
- directory6/project/**/*
- directory7/project/**/*
- directory8/project/**/*我可以使用except,但这仅适用于UI更改和API更改,但不适用于同时更改API和UI的情况。有没有一种方法可以找到计算所有目录的方法?思考类似于仅在目录/UI之外更改的内容
发布于 2021-03-11 02:01:32
如果您有一个用于UI更改的作业,
only:
changes:
- directory/UI/*API更改的另一个任务如下:
only:
changes:
- directory/API/*
- ...然后,如果同时推送对UI和API的更改,则这两个作业都将在管道中运行。
下面是一个完整的.gitlab-ci.yml示例(这只是一个愚蠢的示例,因为我不知道您的管道是做什么的):
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作业也是如此。但是,如果我们对这两个作业都进行了更改,那么这两个作业都将在此阶段运行。
最后,当测试成功时,我们部署应用程序。
https://stackoverflow.com/questions/66567524
复制相似问题