将 github 机密添加到 CI/CD 操作以进行 Vercel 部署

问题描述 投票:0回答:1

我想使用来自 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 next.js continuous-integration github-actions vercel
1个回答
0
投票

您可以创建两个 GitHub 环境 然后为每个环境定义环境变量。

然后设置

environment: development

environment: production

关于部署步骤。 它将看到环境中设置的环境变量。

© www.soinside.com 2019 - 2024. All rights reserved.