【问题标题】:How to set and access an environment variable in GitHub Actions?如何在 GitHub Actions 中设置和访问环境变量?
【发布时间】:2020-10-03 17:06:59
【问题描述】:

我正在自动化我的react-nativeExpo 发布周期。我在 Expo 中使用 release channels 来构建 stagingproduction 构建。例如,每次推送到staging-v1 GitHub 分支时,都会触发以下操作。

//staging.yaml

name: Release to staging
on:
  push:
    branches:
      - staging*
jobs:
  publish:
    name: Install and publish on staging channel
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: 12.x
      - uses: expo/expo-github-action@v5
        with:
          expo-version: 3.x
          expo-username: ${{ secrets.EXPO_CLI_USERNAME }}
          expo-password: ${{ secrets.EXPO_CLI_PASSWORD }}
          expo-packager: npm
      - run: npm install
      - run: expo publish --release-channel ${{ GITHUB_REF }}

{{ GITHUB_REF }} 保存当前分支名称。因此,当我将更改推送到 staging-v1 时,此操作就会运行。但是,我收到此错误。

我试过设置env 变量,它也不起作用。我只想将我的branch_name 附加到expo publish 命令。最终,在构建时,run 命令应如下所示。

 - run: npm install
 - run: expo publish --release-channel staging-v1

任何对此问题的见解将不胜感激。谢谢:)

【问题讨论】:

  • 标题“如何在 GitHub Actions 中设置和访问工作流变量?”这个问题太笼统了。答案只涉及特定值;这与读写任意变量无关。

标签: react-native automation expo devops github-actions


【解决方案1】:

我为此构建了一个 GitHub Action:FranzDiebold/github-env-vars-action

用法如下:

steps:
  - uses: FranzDiebold/github-env-vars-action@v1.2.0
  - name: Print environment variables
    run: |
      echo "GITHUB_REPOSITORY_SLUG=$GITHUB_REPOSITORY_SLUG"
      echo "GITHUB_REPOSITORY_OWNER=$GITHUB_REPOSITORY_OWNER"
      echo "GITHUB_REPOSITORY_OWNER_SLUG=$GITHUB_REPOSITORY_OWNER_SLUG"
      echo "GITHUB_REPOSITORY_NAME=$GITHUB_REPOSITORY_NAME"
      echo "GITHUB_REPOSITORY_NAME_SLUG=$GITHUB_REPOSITORY_NAME_SLUG"
      echo "GITHUB_REF_SLUG=$GITHUB_REF_SLUG"
      echo "GITHUB_REF_NAME=$GITHUB_REF_NAME"
      echo "GITHUB_REF_NAME_SLUG=$GITHUB_REF_NAME_SLUG"
      echo "GITHUB_SHA_SHORT=$GITHUB_SHA_SHORT"

一个示例输出是:

GITHUB_REPOSITORY_SLUG=ajinkabeer-test-repo
GITHUB_REPOSITORY_OWNER=ajinkabeer
GITHUB_REPOSITORY_OWNER_SLUG=ajinkabeer
GITHUB_REPOSITORY_NAME=test-repo
GITHUB_REPOSITORY_NAME_SLUG=test-repo
GITHUB_REF_SLUG=refs-heads-staging-v1
GITHUB_REF_NAME=staging-v1
GITHUB_REF_NAME_SLUG=staging-v1
GITHUB_SHA_SHORT=e2e4f0ab

demo workflows file of the repository! 中还提供了适用于所有操作系统(Linux、macOS 和 Windows)的演示!

【讨论】:

  • 感谢您的回答。看起来不错,我一定要试试这个。再次感谢:)
【解决方案2】:

经过多次反复试验,我找到了解决方案。我使用github-slug-action workflow 访问我的branch_name

name: Release to staging
on:
  push:
    branches:
      - staging*
jobs:
  publish:
    name: Install and publish on staging channel
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: 12.x
      - uses: expo/expo-github-action@v5
        with:
          expo-version: 3.x
          expo-username: ${{ secrets.EXPO_CLI_USERNAME }}
          expo-password: ${{ secrets.EXPO_CLI_PASSWORD }}
          expo-packager: npm
      - run: npm install
      - name: Run tests
        run: |
          npm test
      - uses: rlespinasse/github-slug-action@v2.x
      - run: expo publish --release-channel=${{ env.GITHUB_REF_SLUG }}

这是日志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2020-04-20
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多