GitHub Actions条件正则表达式

我正在尝试将CI工作流程从CircleCI迁移到GitHub actions。我面临的最后一个主要困难是部署。

目前,我的工作流程是,当我将标签推入GitHub存储库时,它将运行测试,然后运行部署。唯一的问题是CircleCI过滤器标签仅在标签与正则表达式/v[0-9]+(\.[0-9]+)*/相匹配时才运行作业。

在运行部署之前,如何检查确保推送的标签与上面的正则表达式模式匹配?

我目前有以下GitHub actions 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
      # ...

if块下,我需要将github.event.ref == SOMETHING HERE更改为其他名称。我查看了Contexts and expression syntax for GitHub Actions文档页面。但是由于GitHub actions的灵活性和强大性,似乎应该有一种方法或方法来执行此操作,或者至少应采取某种解决方法。

如何确保标签(github.event.ref)与正则表达式(/v[0-9]+(\.[0-9]+)*/)相匹配?

hitzhaotianxu 回答:GitHub Actions条件正则表达式

根据docs,您可以执行以下操作:

(gdb) layout asm
Undefined command: "layout".  Try "help".

我尝试了上面的方法,可以确认它是否有效。这不是完整的正则表达式功能,但足以满足您的需求。

,

我设法通过两部分方法来实现这一目标。第一部分包括过滤要运行的标签。第二部分是为您的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:
      ...

我在推,标签和拉请求到特定分支上运行我的工作流。您可以创造性地了解要如何精确地过滤标签。 Check out the filter patterns

我苦苦挣扎的部分是如何设置正确的条件来运行deploy作业。我决定满足以下条件:

needs: test

确保仅在test作业成功后才能运行。

然后我滥用了一个事实,即github.ref在推送​​到分支时将'refs/heads/stable',在推送标签时将'refs/tags/<your tag>'。因此,我简单地通过以下条件测试这种差异。

if: startsWith(github.ref,'refs/tags')

对我来说,工作很吸引人,但可能取决于您的设置。

当然,您也可以创建单独的工作流程,但就我而言,我一直想先运行测试套件。

,

不幸的是,我认为尚无任何方法可以对char buffer[16] = { 0 }; strcat(buffer,"one"); write(fd,buffer,16); 条件表达式进行正则表达式匹配。

一种选择是对if事件使用过滤。

push

另一种选择是在单独的步骤中进行正则表达式检查,并在on: push: tags: - 'v*.*.*' 条件下检查结果。

if
本文链接:https://www.f2er.com/3100382.html

大家都在问