b37ef3e7da
Supports monorepo layouts where the app isn't at the repo root. Defaults to '.' for backward compatibility. Made-with: Cursor
54 lines
1.5 KiB
YAML
54 lines
1.5 KiB
YAML
name: Deploy Twenty App
|
|
description: Build and deploy a Twenty app to a remote instance
|
|
|
|
inputs:
|
|
api-url:
|
|
description: Base URL of the target Twenty instance (e.g. https://my.twenty.instance)
|
|
required: true
|
|
api-key:
|
|
description: API key or access token for the target instance
|
|
required: true
|
|
app-path:
|
|
description: Path to the app directory (relative to repo root). Defaults to repo root.
|
|
required: false
|
|
default: '.'
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Enable Corepack
|
|
shell: bash
|
|
run: corepack enable
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: '${{ inputs.app-path }}/.nvmrc'
|
|
cache: yarn
|
|
cache-dependency-path: '${{ inputs.app-path }}/yarn.lock'
|
|
|
|
- name: Install dependencies
|
|
shell: bash
|
|
working-directory: ${{ inputs.app-path }}
|
|
run: yarn install --immutable
|
|
|
|
- name: Configure remote
|
|
shell: bash
|
|
run: |
|
|
mkdir -p ~/.twenty
|
|
node -e "
|
|
const fs = require('fs'), path = require('path'), os = require('os');
|
|
fs.writeFileSync(path.join(os.homedir(), '.twenty', 'config.json'), JSON.stringify({
|
|
version: 1,
|
|
remotes: { target: { apiUrl: process.env.API_URL, apiKey: process.env.API_KEY } }
|
|
}, null, 2));
|
|
"
|
|
env:
|
|
API_URL: ${{ inputs.api-url }}
|
|
API_KEY: ${{ inputs.api-key }}
|
|
|
|
- name: Deploy
|
|
shell: bash
|
|
working-directory: ${{ inputs.app-path }}
|
|
run: yarn twenty deploy --remote target
|