如果在github动作中使用环境变量

时间:2020-01-23 16:07:25

标签: github-actions

我正在尝试在类似{@ 1}}的github动作中使用环境变量:

if

如果当前分支等于特定分支,我想退出。

不幸的是,github action控制台显示错误:

name: Worfklow
on:
  push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1

      - name: EXIT step
        if: $GITHUB_REF == 'specific-branch'
        run: exit 1

我可以在Unexpected symbol: '$GITHUB_REF' (其中包含当前分支)中使用$GITHUB_REF,但不能在run:中使用。我在做什么错了?

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

虽然最初的问题已经在没有环境变量的情况下解决了,但我想分享一下如何在 if 条件下使用它。

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:

      - name: Set env BRANCH
        run: echo "BRANCH=$(echo $GITHUB_REF | cut -d'/' -f 3)" >> $GITHUB_ENV

      - name: Set env NEED
        run: |
          if [[ $BRANCH == 'master' && $GITHUB_EVENT_NAME == 'push' ]]; then
              echo "NEED=true" >> "$GITHUB_ENV"
          else
              echo "NEED=false" >> "$GITHUB_ENV"
          fi

      - name: Skip Deploy?
        if: env.NEED != 'true'
        run: echo "Only pushing to 'master' causes automatic deployment"

     ...

前两步设置了 2 个 env 变量,第三步演示了在 if 条件下使用这些变量需要遵循的语法。

答案 2 :(得分:0)

您可以在操作的推送部分使用一些限制

on:
  push:
    branches:    
      - '*'         # matches every branch that doesn't contain a '/'
      - '*/*'       # matches every branch containing a single '/'
      - '**'        # matches every branch
      - '!master'   # excludes master

此答案来自this stack overflow question