Files
webstudio/.github/actions/vercel/action.yaml
T
Bogdan Chadkin 8cb6a2a666 build: upgrade to node v20 (#3217)
Node 20 brings a few cool features
- stable test runner
- recursive readdir
- global crypto.randomUUID()
2024-04-21 13:40:44 +07:00

108 lines
2.8 KiB
YAML

name: "VERCEL BUILD AND DEPLOY"
description: "Builds and deploy vercel project"
inputs:
vercel-token:
description: "Vercel token"
required: true
vercel-org-id:
description: "Vercel Organization ID"
required: true
vercel-project-id:
description: "Vercel Project ID"
required: true
ref-name:
description: "Branch"
required: true
sha:
description: "Sha"
required: true
environment:
description: "Sha"
required: true
outputs:
domain:
description: "Domain"
value: ${{ steps.deploy.outputs.domain }}
inspect-url:
description: "Inspect URL"
value: ${{ steps.deploy.outputs.inspect-url }}
alias:
description: "Alias"
value: ${{ steps.alias.outputs.value }}
runs:
using: "composite"
steps:
- id: branch
run: |
CLEAN_NAME="${REF_NAME/.staging/}"
CLEAN_NAME=$( echo "${CLEAN_NAME}" | sed 's/[^a-zA-Z0-9_-]//g' | tr A-Z a-z | tr _ - | sed 's/-\{2,\}/-/g' )
echo "value=${CLEAN_NAME}" >> $GITHUB_OUTPUT
shell: bash
env:
REF_NAME: ${{ inputs.ref-name }}
- id: short_sha
run: |
SHORT_SHA=$( echo "value=$(echo ${{ inputs.sha }} | cut -c1-7)" )
echo "value=${SHORT_SHA}" >> $GITHUB_OUTPUT
shell: bash
- name: CREATE VERCEL PROJECT FILE
run: |
mkdir -p .vercel
cat <<"EOF" > .vercel/project.json
{
"projectId": "${{ inputs.vercel-project-id }}",
"orgId": "${{ inputs.vercel-org-id }}",
"settings": {
"framework": "remix",
"devCommand": "pnpm dev",
"installCommand": "pnpm install",
"buildCommand": "pnpm --filter=@webstudio-is/prisma-client build:prod && pnpm --filter=@webstudio-is/builder build",
"outputDirectory": null,
"rootDirectory": "apps/builder",
"directoryListing": false,
"nodeVersion": "20.x"
}
}
EOF
shell: bash
- name: Build
run: |
export GITHUB_SHA=${{ inputs.sha }}
export GITHUB_REF_NAME=${{ inputs.ref-name }}
vercel build
shell: bash
- name: Deploy
id: deploy
run: |
vercel deploy \
--prebuilt \
--token ${{ inputs.vercel-token }} \
2> >(tee info.txt >&2) | tee domain.txt
echo "domain=$(cat ./domain.txt)" >> $GITHUB_OUTPUT
echo "inspect-url=$(cat info.txt | grep 'Inspect:' | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash
- name: Set Alias
id: alias
run: |
ALIAS="${{ steps.branch.outputs.value }}"
vercel alias set \
"${{ steps.deploy.outputs.domain }}" \
"${ALIAS}-wstd-00-${{ inputs.environment }}" \
--token ${{ inputs.vercel-token }} \
--scope getwebstudio
echo "value=${ALIAS}" >> $GITHUB_OUTPUT
shell: bash