mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-11-07 12:33:36 +09:00
Node 20 brings a few cool features - stable test runner - recursive readdir - global crypto.randomUUID()
108 lines
2.8 KiB
YAML
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
|