同一阶段的 Travis CI 测试是否发生在同一实例中?
Do Travis CI tests in the same stage happen in the same instance?
Travis 文档中指出 Build stages is a way to group jobs, and run jobs in each stage in parallel, but run one stage after another sequentially.
我知道 运行 中一个阶段的所有作业都是并行的,但是这些测试 运行 在同一个实例中进行,即它们是否共享相同的环境变量?
假设我在一个阶段有 3 个测试。
- stage: 'Tests'
name: 'Test1'
script: ./dotest1
-
name: 'Test2'
script: ./dotest2
-
name: 'Test3'
script: ./dotest3
如果我在 test1 中设置 export $bleh_credential=$some_credential
,它会被转移到 test2 吗?似乎不应该,因为它们 运行 并行,对吗?如果是这样的话,我可以设置一个阶段范围的环境变量,还是应该在每次 运行 新测试时设置它们?
不,作业都是 运行 在新容器上,因此作业进程中的任何内容都不能在它们之间共享。如果您需要它们之间的一些持久性,Travis 要求您使用外部存储系统,如 S3。在这里阅读更多相关信息:https://docs.travis-ci.com/user/build-stages/#data-persistence-between-stages-and-jobs
我会为每个作业设置环境变量,可能使用 YAML 锚作为默认值:https://gist.github.com/bowsersenior/979804
Travis 文档中指出 Build stages is a way to group jobs, and run jobs in each stage in parallel, but run one stage after another sequentially.
我知道 运行 中一个阶段的所有作业都是并行的,但是这些测试 运行 在同一个实例中进行,即它们是否共享相同的环境变量?
假设我在一个阶段有 3 个测试。
- stage: 'Tests'
name: 'Test1'
script: ./dotest1
-
name: 'Test2'
script: ./dotest2
-
name: 'Test3'
script: ./dotest3
如果我在 test1 中设置 export $bleh_credential=$some_credential
,它会被转移到 test2 吗?似乎不应该,因为它们 运行 并行,对吗?如果是这样的话,我可以设置一个阶段范围的环境变量,还是应该在每次 运行 新测试时设置它们?
不,作业都是 运行 在新容器上,因此作业进程中的任何内容都不能在它们之间共享。如果您需要它们之间的一些持久性,Travis 要求您使用外部存储系统,如 S3。在这里阅读更多相关信息:https://docs.travis-ci.com/user/build-stages/#data-persistence-between-stages-and-jobs
我会为每个作业设置环境变量,可能使用 YAML 锚作为默认值:https://gist.github.com/bowsersenior/979804