We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在使用 Circleci 做自动化测试发布时,有一种使用场景。
Circleci
我要求每次 push 代码时都进行测试,但只有 push 一个 tag 时才自动发布包,这要怎么做呢?
push
tag
这种情况很容易想到要这样写
workflows: version: 2 build_accept_deploy: jobs: - test - deploy: requires: - test filters: tags: only: /^v[0-9]+(\.[0-9]+)*/ branches: ignore: /.*/
理所当然的想,这样设置的话,每次都会执行 test,但只有 push 一个 tag 时,才会执行完 test 之后才去执行 deploy。那如果这么想,那么恭喜你,入坑了。
test
deploy
这样设置的结果是哪样呢?来看一下上传一个 tag 的结果。
纳尼?deploy 去哪了?
我们来做一个测试,写这样的一个规则,并上传一个 tag。
workflows: version: 2 build_accept_deploy: jobs: - prepare: filters: tags: only: /^v[0-9]+(\.[0-9]+)*/ branches: ignore: /.*/ - test: requires: - prepare - build - deploy: requires: - build filters: tags: only: /^v[0-9]+(\.[0-9]+)*/ branches: ignore: /.*/
结果确是这样的。
我们可以看到,只要 prepare 和 build 执行了,其他两个命令都没有执行。
prepare
build
由此我们可以推测:
workflows
tag v0.0.41
master
job
requires
这个规则真反人类。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
在使用
Circleci
做自动化测试发布时,有一种使用场景。我要求每次
push
代码时都进行测试,但只有push
一个tag
时才自动发布包,这要怎么做呢?这种情况很容易想到要这样写
理所当然的想,这样设置的话,每次都会执行
test
,但只有push
一个tag
时,才会执行完test
之后才去执行deploy
。那如果这么想,那么恭喜你,入坑了。这样设置的结果是哪样呢?来看一下上传一个
tag
的结果。纳尼?
deploy
去哪了?我们来做一个测试,写这样的一个规则,并上传一个
tag
。结果确是这样的。
我们可以看到,只要
prepare
和build
执行了,其他两个命令都没有执行。由此我们可以推测:
Circleci
中workflows
只会在需要判断tag
时才会去检测tag
,也就是prepare
检测到了tag v0.0.41
,而build
却是master
。job
有requires
依赖,那么它只能依赖和自身tag
情况一致的job
,也就造成了test
和deploy
所依赖的prepare
和build
都执行了,但是由于依赖的job
的tag
情况与自身不一致(一个有tag
,另一个没有),所以不能产生正确依赖。这个规则真反人类。
The text was updated successfully, but these errors were encountered: