我想使用来自 github 秘密的环境(不是来自 env 文件或直接来自 vercel)构建和部署我的 NextJS 应用程序到 Vercel。
这是我的工作流程(开发流程):
on:
push:
branches:
- development
jobs:
Deploy-Development:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Configure node
uses: ./.github/actions/setup-project
- name: Format & Lint code
uses: ./.github/actions/format-code
- name: Build app
run: npm run build
env:
DATABASE_URL: ${{ secrets.DEV_DATABASE_URL }}
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }}
NEXT_ENV: 'development'
- name: Deploy app to Vercel development env
uses: ./.github/actions/vercel-deployment
with:
mode: 'development'
vercel-token: ${{ secrets.VERCEL_TOKEN }}
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
VERCEL_FORCE_NO_BUILD_CACHE: 1
DATABASE_URL: ${{ secrets.DEV_DATABASE_URL }}
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }}
API_KEY: ${{ secrets.API_KEY }}
NEXT_ENV: 'development'
以下是我的行动:
inputs:
vercel-token:
description: 'Vercel token'
required: true
mode:
description: 'Deployment mode'
required: true
runs:
using: 'composite'
steps:
- name: Install Vercel CLI
run: npm install --global vercel@canary
shell: bash
- name: PRODUCTION Vercel Deployment
if: ${{ inputs.mode == 'production' }}
run: |
vercel pull --yes --environment=production --token=${{ inputs.vercel-token }}
vercel build --prod --token=${{ inputs.vercel-token }}
vercel deploy --prebuilt --prod --token=${{ inputs.vercel-token }}
shell: bash
- name: DEVELOPMENT Vercel Deployment
if: ${{ inputs.mode == 'development' }}
run: |
vercel pull --yes --environment=development --token=${{ inputs.vercel-token }}
vercel build --token=${{ inputs.vercel-token }}
vercel deploy --prebuilt --token=${{ inputs.vercel-token }}
shell: bash
我应该做哪些改变来注入正确的变量?我想要在开发模式和生产模式上有不同的数据库。我知道 NextJS 有一个 env 层次结构。
您可以创建两个 GitHub 环境 然后为每个环境定义环境变量。
然后设置
environment: development
或
environment: production
关于部署步骤。 它将看到环境中设置的环境变量。