Cha*_*ish 18 github github-actions
我正在尝试将我的 CI 工作流程从 CircleCI 转移到 GitHub Actions。我面临的最后一个主要问题是部署。
目前我的工作流程是这样的,当我将标签推送到我的 GitHub 存储库时,它将运行测试,然后运行部署。唯一的一点是CircleCI过滤如果标签的正则表达式匹配的标签,只运行作业:/v[0-9]+(\.[0-9]+)*/
。
在运行部署之前,如何检查以确保我推送的标签与上面的正则表达式模式匹配?
我目前有以下 GitHub 操作 yml 文件:
name: CI
on: [create]
jobs:
# ...
deploy:
runs-on: ubuntu-latest
if: github.event.ref_type == 'tag' && github.event.ref == SOMETHING HERE
steps:
- uses: actions/checkout@v1
# ...
Run Code Online (Sandbox Code Playgroud)
在if
块下,我需要改变github.event.ref == SOMETHING HERE
成为别的东西。我查看了 GitHub 操作文档页面的上下文和表达式语法。但是由于 GitHub Actions 的灵活和强大,似乎应该有一种方法或方式来做到这一点,或者至少是某种类型的解决方法。
如何确保标签 ( github.event.ref
) 与正则表达式模式 ( /v[0-9]+(\.[0-9]+)*/
)匹配?
pet*_*ans 28
不幸的是,我认为还没有任何方法可以对if
条件表达式进行正则表达式匹配。
一种选择是对push
事件使用过滤。
on:
push:
tags:
- 'v*.*.*'
Run Code Online (Sandbox Code Playgroud)
另一种选择是在一个单独的步骤中进行正则表达式检查,它会创建一个步骤输出。然后可以在if
条件中使用它。
- name: Check Tag
id: check-tag
run: |
if [[ ${{ github.event.ref }} =~ ^refs/tags/v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo ::set-output name=match::true
fi
- name: Build
if: steps.check-tag.outputs.match == 'true'
run: |
echo "Tag is a match"
Run Code Online (Sandbox Code Playgroud)
根据docs,您可以执行以下操作:
on:
create:
tags:
- "v[0-9]+.[0-9]+"
Run Code Online (Sandbox Code Playgroud)
我尝试了以上方法,可以确认它有效。这不是完整的正则表达式功能,但应该足以满足您的需求。
我设法通过两部分方法实现了这一点。第一部分包括过滤要运行的标签。第二部分是为你的deploy
工作创造条件。
我的工作流程的简化版本如下所示:
name: CI-CD
on:
push:
branches:
- stable
tags:
- '[0-9]+.[0-9]+.[0-9]+'
- '[0-9]+.[0-9]+.[0-9]+rc[0-9]+'
pull_request:
branches:
- stable
jobs:
test:
steps:
...
deploy:
needs: test
if: startsWith(github.ref, 'refs/tags')
steps:
...
Run Code Online (Sandbox Code Playgroud)
我对特定分支的推送、标签和拉取请求运行我的工作流。您可以根据自己想要的标签过滤方式发挥创意。查看过滤器模式。
我有点挣扎的部分是如何设置正确的条件来运行deploy
作业。我决定了以下几点:
needs: test
Run Code Online (Sandbox Code Playgroud)
这确保它只会在test
作业成功时运行。
然后我虐待的事实,github.ref
将是'refs/heads/stable'
一个推动分支和'refs/tags/<your tag>'
力推的标签。所以我只是用以下条件测试这种差异。
if: startsWith(github.ref, 'refs/tags')
Run Code Online (Sandbox Code Playgroud)
对我来说很有魅力,但可能取决于您的设置。
当然,您也可以创建单独的工作流,但就我而言,我一直想先运行测试套件。
归档时间: |
|
查看次数: |
6227 次 |
最近记录: |