【发布时间】:2022-01-14 14:24:40
【问题描述】:
我需要使用 github 操作将我的堆栈部署到许多环境,例如 development 和 production。我之前的实现不再起作用了,虽然我有一个新的工作流程,但为多个 env 设置 env var 似乎是重复的,这让我认为必须有更好的方法。
我之前的:
jobs:
build-and-deploy:
name: Build Container and Deploy
runs-on: ubuntu-latest
steps:
- name: Set env to development
if: ${{ !endsWith(github.ref, '/main') }}
run: |
echo "GCP_PROJECT=my-project-dev" >> $GITHUB_ENV
echo "NODE_ENV=development" >> $GITHUB_ENV
- name: Set env to production
if: ${{ endsWith(github.ref, '/main') }}
run: |
echo "GCP_PROJECT=my-project-prod" >> $GITHUB_ENV
echo "NODE_ENV=production" >> $GITHUB_ENV
...
我现在拥有的:
jobs:
build-and-deploy:
name: Build Container and Deploy
runs-on: ubuntu-latest
env:
GCP_PROJECT: ${{ (!endsWith(github.ref, '/main') && 'my-project-dev') || 'my-project-prod' }}
NODE_ENV: ${{ (!endsWith(github.ref, '/main') && 'development') || 'production' }}
steps:
...
显然,在示例中看起来并没有那么糟糕,但对于更多环境变量,${{ (!endsWith(github.ref, '/main') && 'dev-value') || 'prod-value' }} 似乎又吵又脏。
那么,这样做的正确方法是什么?
【问题讨论】:
标签: github deployment devops github-actions cicd