diff --git a/.github/workflows/deploy-qa.yml b/.github/workflows/deploy-qa.yml
index d850d289ff..1339ad2eb9 100644
--- a/.github/workflows/deploy-qa.yml
+++ b/.github/workflows/deploy-qa.yml
@@ -11,10 +11,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: peter-evans/repository-dispatch@v2
- env:
- PAYLOAD_VERSION: ${{ github.sha }}
- REF_NAME: ${{ github.ref_name}}
with:
repository: budibase/budibase-deploys
event-type: budicloud-qa-deploy
token: ${{ secrets.GH_ACCESS_TOKEN }}
+ client-payload: |-
+ {
+ "VERSION": "${{ github.sha }}",
+ "REF_NAME": "${{ github.ref_name}}"
+ }
diff --git a/.github/workflows/release-master.yml b/.github/workflows/release-master.yml
index df25182cd6..2edb470405 100644
--- a/.github/workflows/release-master.yml
+++ b/.github/workflows/release-master.yml
@@ -165,17 +165,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- - name: Get the current budibase release version
- id: version
- run: |
- release_version=$(cat lerna.json | jq -r '.version')
- echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV
- - uses: passeidireto/trigger-external-workflow-action@main
- env:
- PAYLOAD_VERSION: ${{ env.RELEASE_VERSION }}
- REF_NAME: ${{ github.ref_name}}
+ - uses: peter-evans/repository-dispatch@v2
with:
repository: budibase/budibase-deploys
- event: budicloud-qa-deploy
- github_pat: ${{ secrets.GH_ACCESS_TOKEN }}
+ event-type: budicloud-qa-deploy
+ token: ${{ secrets.GH_ACCESS_TOKEN }}
+ client-payload: |-
+ {
+ "VERSION": "${{ github.ref_name }}",
+ "REF_NAME": "${{ github.ref_name}}"
+ }
diff --git a/.github/workflows/release-singleimage.yml b/.github/workflows/release-singleimage.yml
index 4d35916f4d..16b1da186a 100644
--- a/.github/workflows/release-singleimage.yml
+++ b/.github/workflows/release-singleimage.yml
@@ -66,14 +66,21 @@ jobs:
context: .
push: true
platforms: linux/amd64,linux/arm64
+ build-args: BUDIBASE_VERSION=${{ env.BUDIBASE_VERSION }}
tags: budibase/budibase,budibase/budibase:${{ env.RELEASE_VERSION }}
file: ./hosting/single/Dockerfile.v2
+ env:
+ BUDIBASE_VERSION: ${{ env.RELEASE_VERSION }}
- name: Tag and release Budibase Azure App Service docker image
uses: docker/build-push-action@v2
with:
context: .
push: true
platforms: linux/amd64
- build-args: TARGETBUILD=aas
+ build-args: |
+ TARGETBUILD=aas
+ BUDIBASE_VERSION=${{ env.BUDIBASE_VERSION }}
tags: budibase/budibase-aas,budibase/budibase-aas:${{ env.RELEASE_VERSION }}
file: ./hosting/single/Dockerfile.v2
+ env:
+ BUDIBASE_VERSION: ${{ env.RELEASE_VERSION }}
diff --git a/hosting/scripts/install-minio.sh b/hosting/scripts/install-minio.sh
deleted file mode 100755
index 8297593599..0000000000
--- a/hosting/scripts/install-minio.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-if [[ $TARGETARCH == arm* ]] ;
-then
- echo "INSTALLING ARM64 MINIO"
- wget https://dl.min.io/server/minio/release/linux-arm64/minio
-else
- echo "INSTALLING AMD64 MINIO"
- wget https://dl.min.io/server/minio/release/linux-amd64/minio
-fi
-chmod +x minio
diff --git a/hosting/single/Dockerfile.v2 b/hosting/single/Dockerfile.v2
index 5b07a51b27..ec03a1b5a2 100644
--- a/hosting/single/Dockerfile.v2
+++ b/hosting/single/Dockerfile.v2
@@ -42,6 +42,7 @@ COPY packages/string-templates packages/string-templates
FROM budibase/couchdb as runner
ARG TARGETARCH
ENV TARGETARCH $TARGETARCH
+ENV NODE_MAJOR 18
#TARGETBUILD can be set to single (for single docker image) or aas (for azure app service)
# e.g. docker build --build-arg TARGETBUILD=aas ....
ARG TARGETBUILD=single
@@ -49,10 +50,10 @@ ENV TARGETBUILD $TARGETBUILD
# install base dependencies
RUN apt-get update && \
- apt-get install -y --no-install-recommends software-properties-common nginx uuid-runtime redis-server
+ apt-get install -y --no-install-recommends software-properties-common nginx uuid-runtime redis-server libaio1
# Install postgres client for pg_dump utils
-RUN apt install software-properties-common apt-transport-https gpg -y \
+RUN apt install -y software-properties-common apt-transport-https ca-certificates gnupg \
&& curl -fsSl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/postgresql.gpg > /dev/null \
&& echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | tee /etc/apt/sources.list.d/postgresql.list \
&& apt update -y \
@@ -61,10 +62,8 @@ RUN apt install software-properties-common apt-transport-https gpg -y \
# install other dependencies, nodejs, oracle requirements, jdk8, redis, nginx
WORKDIR /nodejs
-RUN curl -sL https://deb.nodesource.com/setup_18.x -o /tmp/nodesource_setup.sh && \
- bash /tmp/nodesource_setup.sh && \
- apt-get install -y --no-install-recommends libaio1 nodejs && \
- npm install --global yarn pm2
+COPY scripts/install-node.sh ./install.sh
+RUN chmod +x install.sh && ./install.sh
# setup nginx
COPY hosting/single/nginx/nginx.conf /etc/nginx
diff --git a/lerna.json b/lerna.json
index 6df4a4c4cd..d102c3f41f 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "2.12.1",
+ "version": "2.12.11",
"npmClient": "yarn",
"packages": [
"packages/*"
diff --git a/package.json b/package.json
index 417fb31e0e..8a27cde104 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
"scripts": {
"preinstall": "node scripts/syncProPackage.js",
"setup": "git config submodule.recurse true && git submodule update && node ./hosting/scripts/setup.js && yarn && yarn build && yarn dev",
- "build": "lerna run build --stream",
+ "build": "NODE_OPTIONS=--max-old-space-size=1500 lerna run build --stream",
"build:dev": "lerna run --stream prebuild && yarn nx run-many --target=build --output-style=dynamic --watch --preserveWatchOutput",
"check:types": "lerna run check:types",
"build:sdk": "lerna run --stream build:sdk",
diff --git a/packages/backend-core/__mocks__/aws-sdk.ts b/packages/backend-core/__mocks__/aws-sdk.ts
index b8d91dbaa9..e3be511d08 100644
--- a/packages/backend-core/__mocks__/aws-sdk.ts
+++ b/packages/backend-core/__mocks__/aws-sdk.ts
@@ -3,6 +3,7 @@ const mockS3 = {
deleteObject: jest.fn().mockReturnThis(),
deleteObjects: jest.fn().mockReturnThis(),
createBucket: jest.fn().mockReturnThis(),
+ getObject: jest.fn().mockReturnThis(),
listObject: jest.fn().mockReturnThis(),
getSignedUrl: jest.fn((operation: string, params: any) => {
return `http://s3.example.com/${params.Bucket}/${params.Key}`
diff --git a/packages/backend-core/src/objectStore/utils.ts b/packages/backend-core/src/objectStore/utils.ts
index dba5f3d1c2..4c3a84ba91 100644
--- a/packages/backend-core/src/objectStore/utils.ts
+++ b/packages/backend-core/src/objectStore/utils.ts
@@ -18,8 +18,12 @@ export const ObjectStoreBuckets = {
}
const bbTmp = join(tmpdir(), ".budibase")
-if (!fs.existsSync(bbTmp)) {
+try {
fs.mkdirSync(bbTmp)
+} catch (e: any) {
+ if (e.code !== "EEXIST") {
+ throw e
+ }
}
export function budibaseTempDir() {
diff --git a/packages/backend-core/src/users/users.ts b/packages/backend-core/src/users/users.ts
index ea4a17214d..6dc8750b62 100644
--- a/packages/backend-core/src/users/users.ts
+++ b/packages/backend-core/src/users/users.ts
@@ -249,7 +249,8 @@ export const paginatedUsers = async ({
limit,
}: SearchUsersRequest = {}) => {
const db = getGlobalDB()
- const pageLimit = limit ? limit + 1 : PAGE_LIMIT + 1
+ const pageSize = limit ?? PAGE_LIMIT
+ const pageLimit = pageSize + 1
// get one extra document, to have the next page
const opts: DatabaseQueryOpts = {
include_docs: true,
@@ -276,7 +277,7 @@ export const paginatedUsers = async ({
const response = await db.allDocs(getGlobalUserParams(null, opts))
userList = response.rows.map((row: any) => row.doc)
}
- return pagination(userList, pageLimit, {
+ return pagination(userList, pageSize, {
paginate: true,
property,
getKey,
diff --git a/packages/backend-core/tests/core/utilities/mocks/date.ts b/packages/backend-core/tests/core/utilities/mocks/date.ts
index f580b68349..1e6d105d93 100644
--- a/packages/backend-core/tests/core/utilities/mocks/date.ts
+++ b/packages/backend-core/tests/core/utilities/mocks/date.ts
@@ -1,2 +1,3 @@
export const MOCK_DATE = new Date("2020-01-01T00:00:00.000Z")
+
export const MOCK_DATE_TIMESTAMP = 1577836800000
diff --git a/packages/builder/src/components/backend/Datasources/CreateEditRelationship.svelte b/packages/builder/src/components/backend/Datasources/CreateEditRelationship.svelte
index abec380b46..f6621c1508 100644
--- a/packages/builder/src/components/backend/Datasources/CreateEditRelationship.svelte
+++ b/packages/builder/src/components/backend/Datasources/CreateEditRelationship.svelte
@@ -30,15 +30,15 @@
part2: PrettyRelationshipDefinitions.MANY,
},
[RelationshipType.MANY_TO_ONE]: {
- part1: PrettyRelationshipDefinitions.ONE,
- part2: PrettyRelationshipDefinitions.MANY,
+ part1: PrettyRelationshipDefinitions.MANY,
+ part2: PrettyRelationshipDefinitions.ONE,
},
}
let relationshipOpts1 = Object.values(PrettyRelationshipDefinitions)
let relationshipOpts2 = Object.values(PrettyRelationshipDefinitions)
- let relationshipPart1 = PrettyRelationshipDefinitions.MANY
- let relationshipPart2 = PrettyRelationshipDefinitions.ONE
+ let relationshipPart1 = PrettyRelationshipDefinitions.ONE
+ let relationshipPart2 = PrettyRelationshipDefinitions.MANY
let originalFromColumnName = toRelationship.name,
originalToColumnName = fromRelationship.name
diff --git a/packages/builder/src/components/design/settings/componentSettings.js b/packages/builder/src/components/design/settings/componentSettings.js
index 232b4bef31..c2bd08760a 100644
--- a/packages/builder/src/components/design/settings/componentSettings.js
+++ b/packages/builder/src/components/design/settings/componentSettings.js
@@ -1,5 +1,5 @@
import { Checkbox, Select, RadioGroup, Stepper, Input } from "@budibase/bbui"
-import DataSourceSelect from "./controls/DataSourceSelect.svelte"
+import DataSourceSelect from "./controls/DataSourceSelect/DataSourceSelect.svelte"
import S3DataSourceSelect from "./controls/S3DataSourceSelect.svelte"
import DataProviderSelect from "./controls/DataProviderSelect.svelte"
import ButtonActionEditor from "./controls/ButtonActionEditor/ButtonActionEditor.svelte"
diff --git a/packages/builder/src/components/design/settings/controls/DataSourceSelect/DataSourceCategory.svelte b/packages/builder/src/components/design/settings/controls/DataSourceSelect/DataSourceCategory.svelte
new file mode 100644
index 0000000000..f7c79b3862
--- /dev/null
+++ b/packages/builder/src/components/design/settings/controls/DataSourceSelect/DataSourceCategory.svelte
@@ -0,0 +1,55 @@
+
+
+{#if dividerState}
+