mirror of
https://github.com/ToolJet/ToolJet
synced 2026-04-26 07:57:17 +00:00
624 lines
27 KiB
YAML
624 lines
27 KiB
YAML
name: Cypress Platform
|
|
|
|
on:
|
|
pull_request_target:
|
|
types: [labeled]
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
PR_NUMBER: ${{ github.event.number }}
|
|
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
|
|
|
jobs:
|
|
Cypress-Platform:
|
|
runs-on: ubuntu-22.04
|
|
if: contains(github.event.pull_request.labels.*.name, 'run-cypress') ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-cypress-platform-ce') ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-cypress-platform-ee') ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-cypress-ce')
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
edition:
|
|
- ${{ contains(github.event.pull_request.labels.*.name, 'run-cypress') && 'ce' || contains(github.event.pull_request.labels.*.name, 'run-cypress-platform-ce') && 'ce' || contains(github.event.pull_request.labels.*.name, 'run-cypress-ce') && 'ce' || '' }}
|
|
- ${{ contains(github.event.pull_request.labels.*.name, 'run-cypress') && 'ee' || contains(github.event.pull_request.labels.*.name, 'run-cypress-platform-ee') && 'ee' || '' }}
|
|
exclude:
|
|
- edition: ""
|
|
|
|
steps:
|
|
- name: Debug labels and matrix edition
|
|
run: |
|
|
echo "Labels: ${{ toJSON(github.event.pull_request.labels.*.name) }}"
|
|
echo "Matrix edition: ${{ matrix.edition }}"
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
|
|
- name: Set DOCKER_CLI_EXPERIMENTAL
|
|
run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV
|
|
|
|
- name: Docker Login
|
|
uses: docker/login-action@v2
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Set SAFE_BRANCH_NAME
|
|
run: echo "SAFE_BRANCH_NAME=$(echo ${{ env.BRANCH_NAME }} | tr '/' '-')" >> $GITHUB_ENV
|
|
|
|
- name: Build CE Docker image
|
|
if: matrix.edition == 'ce'
|
|
uses: docker/build-push-action@v4
|
|
with:
|
|
context: .
|
|
file: docker/ce-production.Dockerfile
|
|
push: true
|
|
tags: tooljet/tj-osv:${{ env.SAFE_BRANCH_NAME }}-ce
|
|
platforms: linux/amd64
|
|
env:
|
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Build EE Docker image
|
|
if: matrix.edition == 'ee'
|
|
uses: docker/build-push-action@v4
|
|
with:
|
|
context: .
|
|
build-args: |
|
|
CUSTOM_GITHUB_TOKEN=${{ secrets.CUSTOM_GITHUB_TOKEN }}
|
|
BRANCH_NAME=${{ github.event.pull_request.head.ref }}
|
|
file: cypress-tests/cypress.Dockerfile
|
|
push: true
|
|
tags: tooljet/tj-osv:${{ env.SAFE_BRANCH_NAME }}-ee
|
|
platforms: linux/amd64
|
|
env:
|
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Set up environment variables
|
|
run: |
|
|
echo "TOOLJET_EDITION=${{ matrix.edition }}" >> .env
|
|
echo "TOOLJET_HOST=http://localhost:3000" >> .env
|
|
echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env
|
|
echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env
|
|
echo "PG_DB=tooljet_development" >> .env
|
|
echo "PG_USER=postgres" >> .env
|
|
echo "PG_HOST=postgres" >> .env
|
|
echo "PG_PASS=postgres" >> .env
|
|
echo "PG_PORT=5432" >> .env
|
|
echo "ENABLE_TOOLJET_DB=true" >> .env
|
|
echo "TOOLJET_DB=tooljet_db" >> .env
|
|
echo "TOOLJET_DB_USER=postgres" >> .env
|
|
echo "TOOLJET_DB_HOST=postgres" >> .env
|
|
echo "TOOLJET_DB_PASS=postgres" >> .env
|
|
echo "TOOLJET_DB_STATEMENT_TIMEOUT=60000" >> .env
|
|
echo "TOOLJET_DB_RECONFIG=true" >> .env
|
|
echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env
|
|
echo "PGRST_HOST=localhost:3001" >> .env
|
|
echo "PGRST_DB_PRE_CONFIG=postgrest.pre_config" >> .env
|
|
echo "PGRST_DB_URI=postgres://postgres:postgres@postgres/tooljet_db" >> .env
|
|
echo "ENABLE_MARKETPLACE_FEATURE=true" >> .env
|
|
echo "ENABLE_MARKETPLACE_DEV_MODE=true" >> .env
|
|
echo "ENABLE_PRIVATE_APP_EMBED=true" >> .env
|
|
echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=123456789.apps.googleusercontent.com" >> .env
|
|
echo "SSO_GOOGLE_OAUTH2_CLIENT_SECRET=ABCGFDNF-FHSDVFY-bskfh6234" >> .env
|
|
echo "SSO_GIT_OAUTH2_CLIENT_ID=1234567890" >> .env
|
|
echo "SSO_GIT_OAUTH2_CLIENT_SECRET=3346shfvkdjjsfkvxce32854e026a4531ed" >> .env
|
|
|
|
# Only add EE-specific env vars if edition is ee
|
|
if [ "${{ matrix.edition }}" = "ee" ]; then
|
|
echo "SSO_OPENID_NAME=tj-oidc-simulator" >> .env
|
|
echo "SSO_OPENID_CLIENT_ID=${{ secrets.SSO_OPENID_CLIENT_ID }}" >> .env
|
|
echo "SSO_OPENID_CLIENT_SECRET=${{ secrets.SSO_OPENID_CLIENT_SECRET }}" >> .env
|
|
echo "SSO_OPENID_WELL_KNOWN_URL=http://34.66.166.236:8080/.well-known/openid-configuration" >> .env
|
|
echo "LICENSE_KEY=${{ secrets.RENDER_LICENSE_KEY }}" >> .env
|
|
fi
|
|
|
|
- name: Pulling the docker-compose file
|
|
run: curl -LO https://tooljet-test.s3.us-west-1.amazonaws.com/docker-compose.yaml && mkdir postgres_data
|
|
|
|
- name: Update docker-compose file
|
|
run: |
|
|
# Update docker-compose.yaml with the appropriate image based on edition
|
|
if [ "${{ matrix.edition }}" = "ce" ]; then
|
|
sed -i '/^[[:space:]]*tooljet:/,/^$/ s|^\([[:space:]]*image:[[:space:]]*\).*|\1tooljet/tj-osv:${{ env.SAFE_BRANCH_NAME }}-ce|' docker-compose.yaml
|
|
elif [ "${{ matrix.edition }}" = "ee" ]; then
|
|
sed -i '/^[[:space:]]*tooljet:/,/^$/ s|^\([[:space:]]*image:[[:space:]]*\).*|\1tooljet/tj-osv:${{ env.SAFE_BRANCH_NAME }}-ee|' docker-compose.yaml
|
|
fi
|
|
|
|
- name: Install Docker Compose
|
|
run: |
|
|
curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
|
chmod +x /usr/local/bin/docker-compose
|
|
|
|
- name: Run docker-compose file
|
|
run: docker-compose up -d
|
|
|
|
- name: Checking containers
|
|
run: docker ps -a
|
|
|
|
- name: docker logs
|
|
run: sudo docker logs Tooljet-app
|
|
|
|
- name: Wait for the server to be ready
|
|
run: |
|
|
timeout 500 bash -c '
|
|
until curl --silent --fail http://localhost:3000; do
|
|
sleep 5
|
|
done'
|
|
|
|
- name: Create Cypress environment file for CE
|
|
if: matrix.edition == 'ce'
|
|
id: create-json
|
|
uses: jsdaniell/create-json@1.1.2
|
|
with:
|
|
name: "cypress.env.json"
|
|
json: ${{ secrets.CYPRESS_SECRETS }}
|
|
dir: "./cypress-tests"
|
|
|
|
- name: Run Cypress tests for CE
|
|
if: matrix.edition == 'ce'
|
|
uses: cypress-io/github-action@v6
|
|
with:
|
|
working-directory: ./cypress-tests
|
|
config: "baseUrl=http://localhost:3000"
|
|
config-file: cypress-platform.config.js
|
|
|
|
- name: Create Cypress environment file for EE
|
|
if: matrix.edition == 'ee'
|
|
uses: jsdaniell/create-json@1.1.2
|
|
with:
|
|
name: "cypress.env.json"
|
|
json: ${{ secrets.CYPRESS_EE_SECRETS }}
|
|
dir: "./cypress-tests"
|
|
|
|
- name: Run Cypress tests for EE
|
|
if: matrix.edition == 'ee'
|
|
uses: cypress-io/github-action@v6
|
|
with:
|
|
working-directory: ./cypress-tests
|
|
config: "baseUrl=http://localhost:3000"
|
|
config-file: cypress-ee-platform.config.js
|
|
|
|
- name: Capture Screenshots
|
|
uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: screenshots-${{ matrix.edition }}
|
|
path: cypress-tests/cypress/screenshots
|
|
|
|
Cypress-Platform-Subpath:
|
|
runs-on: ubuntu-22.04
|
|
if: |
|
|
github.event.action == 'labeled' &&
|
|
(
|
|
github.event.label.name == 'run-cypress-platform-subpath' ||
|
|
github.event.label.name == 'run-proxy-platform' ||
|
|
github.event.label.name == 'run-ce-cypress-platform-subpath' ||
|
|
github.event.label.name == 'run-ee-cypress-platform-subpath'
|
|
)
|
|
|
|
strategy:
|
|
matrix:
|
|
edition: >-
|
|
${{
|
|
contains(github.event.pull_request.labels.*.name, 'run-cypress-platform-subpath') && fromJson('["ce", "ee"]') ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-proxy-platform') && fromJson('["ce", "ee"]') ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-ce-cypress-platform-subpath') && fromJson('["ce"]') ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-ee-cypress-platform-subpath') && fromJson('["ee"]') ||
|
|
fromJson('[]')
|
|
}}
|
|
|
|
steps:
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v2
|
|
with:
|
|
node-version: 22.15.1
|
|
|
|
- name: Set up Git authentication for private submodules
|
|
run: |
|
|
git config --global url."https://x-access-token:${{ secrets.CUSTOM_GITHUB_TOKEN }}@github.com/".insteadOf "https://github.com/"
|
|
|
|
- name: Checkout with Submodules
|
|
uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
|
|
- name: Checking out the correct branch for submodules EE
|
|
if: matrix.edition == 'ee'
|
|
run: |
|
|
git submodule update --init --recursive
|
|
git submodule foreach --recursive '
|
|
git checkout ${{ env.BRANCH_NAME }} 2>/dev/null || git checkout main'
|
|
|
|
- name: Set up Docker configuration
|
|
run: |
|
|
mkdir -p ~/.docker/cli-plugins
|
|
curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx
|
|
chmod a+x ~/.docker/cli-plugins/docker-buildx
|
|
docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
|
|
docker buildx use mybuilder
|
|
echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV
|
|
echo "SAFE_BRANCH_NAME=$(echo ${{ env.BRANCH_NAME }} | tr '/' '-')" >> $GITHUB_ENV
|
|
|
|
- name: Docker Login
|
|
uses: docker/login-action@v2
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Build and Push Docker image
|
|
uses: docker/build-push-action@v4
|
|
with:
|
|
context: .
|
|
file: ${{ matrix.edition == 'ee' && 'docker/ee/ee-production.Dockerfile' || 'docker/ce-production.Dockerfile' }}
|
|
push: true
|
|
tags: tooljet/tj-osv:${{ env.SAFE_BRANCH_NAME }}
|
|
platforms: linux/amd64
|
|
|
|
- name: Set up environment variables
|
|
run: |
|
|
echo "TOOLJET_EDITION=${{ matrix.edition == 'ee' && 'ee' || 'ce' }}" >> .env
|
|
echo "TOOLJET_HOST=http://localhost:3000" >> .env
|
|
echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env
|
|
echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env
|
|
echo "PG_DB=tooljet_development" >> .env
|
|
echo "PG_USER=postgres" >> .env
|
|
echo "PG_HOST=postgres" >> .env
|
|
echo "PG_PASS=postgres" >> .env
|
|
echo "PG_PORT=5432" >> .env
|
|
echo "ENABLE_TOOLJET_DB=true" >> .env
|
|
echo "TOOLJET_DB=tooljet_db" >> .env
|
|
echo "TOOLJET_DB_USER=postgres" >> .env
|
|
echo "TOOLJET_DB_HOST=postgres" >> .env
|
|
echo "TOOLJET_DB_PASS=postgres" >> .env
|
|
echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env
|
|
echo "PGRST_HOST=postgrest" >> .env
|
|
echo "NODE_ENV=production" >> .env
|
|
echo "SERVE_CLIENT=true" >> .env
|
|
echo "SUB_PATH=/apps/" >> .env
|
|
echo "ENABLE_MARKETPLACE_FEATURE=true" >> .env
|
|
echo "ENABLE_MARKETPLACE_DEV_MODE=true" >> .env
|
|
echo "ENABLE_PRIVATE_APP_EMBED=true" >> .env
|
|
echo "TOOLJET_DB_STATEMENT_TIMEOUT=60000" >> .env
|
|
echo "TOOLJET_DB_RECONFIG=true" >> .env
|
|
echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=123456789.apps.googleusercontent.com" >> .env
|
|
echo "SSO_GOOGLE_OAUTH2_CLIENT_SECRET=ABCGFDNF-FHSDVFY-bskfh6234" >> .env
|
|
echo "SSO_GIT_OAUTH2_CLIENT_ID=1234567890" >> .env
|
|
echo "SSO_GIT_OAUTH2_CLIENT_SECRET=3346shfvkdjjsfkvxce32854e026a4531ed" >> .env
|
|
echo "PGRST_DB_PRE_CONFIG=postgrest.pre_config" >> .env
|
|
|
|
- name: Deploy with Docker Compose
|
|
run: |
|
|
curl -LO https://tooljet-test.s3.us-west-1.amazonaws.com/docker-compose.yaml
|
|
mkdir postgres_data
|
|
sed -i '/^[[:space:]]*tooljet:/,/^$/ s|^\([[:space:]]*image:[[:space:]]*\).*|\1tooljet/tj-osv:${{ env.SAFE_BRANCH_NAME }}|' docker-compose.yaml
|
|
curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
|
chmod +x /usr/local/bin/docker-compose
|
|
docker-compose up -d
|
|
|
|
- name: Wait for server
|
|
run: |
|
|
timeout 300 bash -c 'until curl --silent --fail http://localhost:3000/apps/; do sleep 5; done'
|
|
|
|
- name: Create Cypress environment file
|
|
id: create-json
|
|
uses: jsdaniell/create-json@1.1.2
|
|
with:
|
|
name: "cypress.env.json"
|
|
json: ${{ secrets.CYPRESS_SECRETS_SUBPATH }}
|
|
dir: "./cypress-tests"
|
|
|
|
- name: Run Cypress tests
|
|
uses: cypress-io/github-action@v6
|
|
with:
|
|
working-directory: ./cypress-tests
|
|
config: "baseUrl=http://localhost:3000/apps"
|
|
config-file: cypress-platform.config.js
|
|
|
|
- name: Capture Screenshots
|
|
uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: screenshots-${{ matrix.edition }}
|
|
path: cypress-tests/cypress/screenshots
|
|
|
|
Cypress-Platform-Proxy:
|
|
runs-on: ubuntu-22.04
|
|
if: |
|
|
github.event.action == 'labeled' &&
|
|
(
|
|
github.event.label.name == 'run-cypress-platform-proxy' ||
|
|
github.event.label.name == 'run-proxy-platform' ||
|
|
github.event.label.name == 'run-ce-cypress-platform-proxy' ||
|
|
github.event.label.name == 'run-ee-cypress-platform-proxy'
|
|
)
|
|
|
|
strategy:
|
|
matrix:
|
|
edition: >-
|
|
${{
|
|
contains(github.event.pull_request.labels.*.name, 'run-cypress-platform-proxy') && fromJson('["ce", "ee"]') ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-proxy-platform') && fromJson('["ce", "ee"]') ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-ce-cypress-platform-proxy') && fromJson('["ce"]') ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-ee-cypress-platform-proxy') && fromJson('["ee"]') ||
|
|
fromJson('[]')
|
|
}}
|
|
|
|
steps:
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v2
|
|
with:
|
|
node-version: 22.15.1
|
|
|
|
- name: Set up Git authentication for private submodules
|
|
run: |
|
|
git config --global url."https://x-access-token:${{ secrets.CUSTOM_GITHUB_TOKEN }}@github.com/".insteadOf "https://github.com/"
|
|
|
|
- name: Checkout with Submodules
|
|
uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
|
|
- name: Checking out the correct branch for submodules EE
|
|
if: matrix.edition == 'ee'
|
|
run: |
|
|
git submodule update --init --recursive
|
|
git submodule foreach --recursive '
|
|
git checkout ${{ env.BRANCH_NAME }} 2>/dev/null || git checkout main'
|
|
|
|
- name: Set up Docker configuration
|
|
run: |
|
|
mkdir -p ~/.docker/cli-plugins
|
|
curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx
|
|
chmod a+x ~/.docker/cli-plugins/docker-buildx
|
|
docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
|
|
docker buildx use mybuilder
|
|
echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV
|
|
echo "SAFE_BRANCH_NAME=$(echo ${{ env.BRANCH_NAME }} | tr '/' '-')" >> $GITHUB_ENV
|
|
|
|
- name: Docker Login
|
|
uses: docker/login-action@v2
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Build and Push Docker image
|
|
uses: docker/build-push-action@v4
|
|
with:
|
|
context: .
|
|
file: ${{ matrix.edition == 'ee' && 'docker/ee/ee-production.Dockerfile' || 'docker/ce-production.Dockerfile' }}
|
|
push: true
|
|
tags: tooljet/tj-osv:${{ env.SAFE_BRANCH_NAME }}
|
|
platforms: linux/amd64
|
|
|
|
- name: Set up environment variables
|
|
run: |
|
|
echo "TOOLJET_EDITION=${{ matrix.edition == 'ee' && 'ee' || 'ce' }}" >> .env
|
|
echo "TOOLJET_HOST=http://localhost:3000" >> .env
|
|
echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env
|
|
echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env
|
|
echo "PG_DB=tooljet_development" >> .env
|
|
echo "PG_USER=postgres" >> .env
|
|
echo "PG_HOST=postgres" >> .env
|
|
echo "PG_PASS=postgres" >> .env
|
|
echo "PG_PORT=5432" >> .env
|
|
echo "ENABLE_TOOLJET_DB=true" >> .env
|
|
echo "TOOLJET_DB=tooljet_db" >> .env
|
|
echo "TOOLJET_DB_USER=postgres" >> .env
|
|
echo "TOOLJET_DB_HOST=postgres" >> .env
|
|
echo "TOOLJET_DB_PASS=postgres" >> .env
|
|
echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env
|
|
echo "PGRST_HOST=postgrest" >> .env
|
|
echo "NODE_ENV=production" >> .env
|
|
echo "SERVE_CLIENT=true" >> .env
|
|
echo "ENABLE_MARKETPLACE_FEATURE=true" >> .env
|
|
echo "ENABLE_MARKETPLACE_DEV_MODE=true" >> .env
|
|
echo "ENABLE_PRIVATE_APP_EMBED=true" >> .env
|
|
echo "TOOLJET_DB_STATEMENT_TIMEOUT=60000" >> .env
|
|
echo "TOOLJET_DB_RECONFIG=true" >> .env
|
|
echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=123456789.apps.googleusercontent.com" >> .env
|
|
echo "SSO_GOOGLE_OAUTH2_CLIENT_SECRET=ABCGFDNF-FHSDVFY-bskfh6234" >> .env
|
|
echo "SSO_GIT_OAUTH2_CLIENT_ID=1234567890" >> .env
|
|
echo "SSO_GIT_OAUTH2_CLIENT_SECRET=3346shfvkdjjsfkvxce32854e026a4531ed" >> .env
|
|
echo "PGRST_DB_PRE_CONFIG=postgrest.pre_config" >> .env
|
|
|
|
- name: Deploy with Docker Compose
|
|
run: |
|
|
curl -LO https://tooljet-test.s3.us-west-1.amazonaws.com/docker-compose.yaml
|
|
mkdir postgres_data
|
|
sed -i '/^[[:space:]]*tooljet:/,/^$/ s|^\([[:space:]]*image:[[:space:]]*\).*|\1tooljet/tj-osv:${{ env.SAFE_BRANCH_NAME }}|' docker-compose.yaml
|
|
curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
|
chmod +x /usr/local/bin/docker-compose
|
|
docker-compose up -d
|
|
|
|
- name: Setup Nginx
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install -y nginx
|
|
sudo systemctl stop apache2 || true
|
|
sudo apt remove apache2 -y || true
|
|
sudo cp cypress-tests/proxy.nginx /etc/nginx/sites-available/nginx-config
|
|
sudo ln -sf /etc/nginx/sites-available/nginx-config /etc/nginx/sites-enabled/nginx-config
|
|
sudo nginx -t
|
|
sudo systemctl start nginx
|
|
sudo systemctl reload nginx
|
|
sudo netstat -tulpn | grep 4001
|
|
|
|
- name: Wait for server
|
|
run: |
|
|
timeout 300 bash -c 'until curl --silent --fail http://localhost:4001/; do sleep 5; done'
|
|
|
|
- name: Create Cypress environment file
|
|
id: create-json
|
|
uses: jsdaniell/create-json@1.1.2
|
|
with:
|
|
name: "cypress.env.json"
|
|
json: ${{ secrets.CYPRESS_SECRETS_PROXY }}
|
|
dir: "./cypress-tests"
|
|
|
|
- name: Run Cypress tests
|
|
uses: cypress-io/github-action@v6
|
|
with:
|
|
working-directory: ./cypress-tests
|
|
config: "baseUrl=http://localhost:4001"
|
|
config-file: cypress-platform.config.js
|
|
|
|
- name: Capture Screenshots
|
|
uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: screenshots-${{ matrix.edition }}
|
|
path: cypress-tests/cypress/screenshots
|
|
|
|
Cypress-Platform-Proxy-Subpath:
|
|
runs-on: ubuntu-22.04
|
|
if: |
|
|
github.event.action == 'labeled' &&
|
|
(
|
|
github.event.label.name == 'run-cypress-platform-proxy-subpath' ||
|
|
github.event.label.name == 'run-proxy-platform' ||
|
|
github.event.label.name == 'run-ce-cypress-platform-proxy-subpath' ||
|
|
github.event.label.name == 'run-ee-cypress-platform-proxy-subpath'
|
|
)
|
|
|
|
strategy:
|
|
matrix:
|
|
edition: >-
|
|
${{
|
|
contains(github.event.pull_request.labels.*.name, 'run-cypress-platform-proxy-subpath') && fromJson('["ce", "ee"]') ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-proxy-platform') && fromJson('["ce", "ee"]') ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-ce-cypress-platform-proxy-subpath') && fromJson('["ce"]') ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-ee-cypress-platform-proxy-subpath') && fromJson('["ee"]') ||
|
|
fromJson('[]')
|
|
}}
|
|
|
|
steps:
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v2
|
|
with:
|
|
node-version: 22.15.1
|
|
|
|
- name: Set up Git authentication for private submodules
|
|
run: |
|
|
git config --global url."https://x-access-token:${{ secrets.CUSTOM_GITHUB_TOKEN }}@github.com/".insteadOf "https://github.com/"
|
|
|
|
- name: Checkout with Submodules
|
|
uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
|
|
- name: Checking out the correct branch for submodules EE
|
|
if: matrix.edition == 'ee'
|
|
run: |
|
|
git submodule update --init --recursive
|
|
git submodule foreach --recursive '
|
|
git checkout ${{ env.BRANCH_NAME }} 2>/dev/null || git checkout main'
|
|
|
|
- name: Set up Docker configuration
|
|
run: |
|
|
mkdir -p ~/.docker/cli-plugins
|
|
curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx
|
|
chmod a+x ~/.docker/cli-plugins/docker-buildx
|
|
docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
|
|
docker buildx use mybuilder
|
|
echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV
|
|
echo "SAFE_BRANCH_NAME=$(echo ${{ env.BRANCH_NAME }} | tr '/' '-')" >> $GITHUB_ENV
|
|
|
|
- name: Docker Login
|
|
uses: docker/login-action@v2
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Build and Push Docker image
|
|
uses: docker/build-push-action@v4
|
|
with:
|
|
context: .
|
|
file: ${{ matrix.edition == 'ee' && 'docker/ee/ee-production.Dockerfile' || 'docker/ce-production.Dockerfile' }}
|
|
push: true
|
|
tags: tooljet/tj-osv:${{ env.SAFE_BRANCH_NAME }}
|
|
platforms: linux/amd64
|
|
|
|
- name: Set up environment variables
|
|
run: |
|
|
echo "TOOLJET_EDITION=${{ matrix.edition == 'ee' && 'ee' || 'ce' }}" >> .env
|
|
echo "TOOLJET_HOST=http://localhost:3000" >> .env
|
|
echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env
|
|
echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env
|
|
echo "PG_DB=tooljet_development" >> .env
|
|
echo "PG_USER=postgres" >> .env
|
|
echo "PG_HOST=postgres" >> .env
|
|
echo "PG_PASS=postgres" >> .env
|
|
echo "PG_PORT=5432" >> .env
|
|
echo "ENABLE_TOOLJET_DB=true" >> .env
|
|
echo "TOOLJET_DB=tooljet_db" >> .env
|
|
echo "TOOLJET_DB_USER=postgres" >> .env
|
|
echo "TOOLJET_DB_HOST=postgres" >> .env
|
|
echo "TOOLJET_DB_PASS=postgres" >> .env
|
|
echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env
|
|
echo "PGRST_HOST=postgrest" >> .env
|
|
echo "NODE_ENV=production" >> .env
|
|
echo "SERVE_CLIENT=true" >> .env
|
|
echo "SUB_PATH=/apps/" >> .env
|
|
echo "ENABLE_MARKETPLACE_FEATURE=true" >> .env
|
|
echo "ENABLE_MARKETPLACE_DEV_MODE=true" >> .env
|
|
echo "ENABLE_PRIVATE_APP_EMBED=true" >> .env
|
|
echo "TOOLJET_DB_STATEMENT_TIMEOUT=60000" >> .env
|
|
echo "TOOLJET_DB_RECONFIG=true" >> .env
|
|
echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=123456789.apps.googleusercontent.com" >> .env
|
|
echo "SSO_GOOGLE_OAUTH2_CLIENT_SECRET=ABCGFDNF-FHSDVFY-bskfh6234" >> .env
|
|
echo "SSO_GIT_OAUTH2_CLIENT_ID=1234567890" >> .env
|
|
echo "SSO_GIT_OAUTH2_CLIENT_SECRET=3346shfvkdjjsfkvxce32854e026a4531ed" >> .env
|
|
echo "PGRST_DB_PRE_CONFIG=postgrest.pre_config" >> .env
|
|
|
|
- name: Deploy with Docker Compose
|
|
run: |
|
|
curl -LO https://tooljet-test.s3.us-west-1.amazonaws.com/docker-compose.yaml
|
|
mkdir postgres_data
|
|
sed -i '/^[[:space:]]*tooljet:/,/^$/ s|^\([[:space:]]*image:[[:space:]]*\).*|\1tooljet/tj-osv:${{ env.SAFE_BRANCH_NAME }}|' docker-compose.yaml
|
|
curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
|
chmod +x /usr/local/bin/docker-compose
|
|
docker-compose up -d
|
|
|
|
- name: Setup Nginx
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install -y nginx
|
|
sudo systemctl stop apache2 || true
|
|
sudo apt remove apache2 -y || true
|
|
sudo cp cypress-tests/subpath.nginx /etc/nginx/sites-available/nginx-config
|
|
sudo ln -sf /etc/nginx/sites-available/nginx-config /etc/nginx/sites-enabled/nginx-config
|
|
sudo nginx -t
|
|
sudo systemctl start nginx
|
|
sudo systemctl reload nginx
|
|
sudo netstat -tulpn | grep 4001
|
|
|
|
- name: Wait for server
|
|
run: |
|
|
timeout 300 bash -c 'until curl --silent --fail http://localhost:4001/apps/; do sleep 5; done'
|
|
|
|
- name: Create Cypress environment file
|
|
id: create-json
|
|
uses: jsdaniell/create-json@1.1.2
|
|
with:
|
|
name: "cypress.env.json"
|
|
json: ${{ secrets.CYPRESS_SECRETS_PROXY_SUBPATH }}
|
|
dir: "./cypress-tests"
|
|
|
|
- name: Run Cypress tests
|
|
uses: cypress-io/github-action@v6
|
|
with:
|
|
working-directory: ./cypress-tests
|
|
config: "baseUrl=http://localhost:4001/apps"
|
|
config-file: cypress-platform.config.js
|
|
|
|
- name: Capture Screenshots
|
|
uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: screenshots-${{ matrix.edition }}
|
|
path: cypress-tests/cypress/screenshots
|