Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New image for single images #11954

Merged
merged 82 commits into from
Oct 17, 2023
Merged
Show file tree
Hide file tree
Changes from 71 commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
29ebf60
Build on push
adrinr Oct 2, 2023
b67df4e
Do not push
adrinr Oct 2, 2023
f7bc73e
Rename
adrinr Oct 2, 2023
6bdd572
Build only required packages
adrinr Oct 2, 2023
c382ce8
Clean predocker steps
adrinr Oct 2, 2023
51fc3e3
Pull image first
adrinr Oct 2, 2023
862992c
Use script
adrinr Oct 2, 2023
6c145eb
Rely on script
adrinr Oct 2, 2023
99dd02d
Use cache
adrinr Oct 2, 2023
4d99435
Unify dependencies
adrinr Oct 2, 2023
68d76c4
Fix prescript
adrinr Oct 2, 2023
8bda961
Build azure docker image
adrinr Oct 2, 2023
995f53d
Test pushing to another repo
adrinr Oct 2, 2023
4c9118f
Use existing repo
adrinr Oct 2, 2023
7d24f66
Update node to 18
adrinr Oct 2, 2023
43df850
Fix runner
adrinr Oct 2, 2023
84f9391
Fix image
adrinr Oct 2, 2023
eddecb6
Add login back
adrinr Oct 2, 2023
d247c5a
Tags
adrinr Oct 2, 2023
6f7e8f7
Install production
adrinr Oct 2, 2023
0233d90
Remove husky reference
adrinr Oct 2, 2023
7357a5d
Update actions
adrinr Oct 2, 2023
4ecb73a
Fix installs
adrinr Oct 3, 2023
28c7658
Copy
adrinr Oct 3, 2023
ac08fa3
Clean build flags
adrinr Oct 3, 2023
d608260
nx cache dependant on build script
adrinr Oct 3, 2023
385b7da
Bundle pino
adrinr Oct 3, 2023
494fede
Use local string-templates
adrinr Oct 3, 2023
b652433
Use local string-templates
adrinr Oct 3, 2023
76aa822
Remove easimon/maximize-build-space@master
adrinr Oct 3, 2023
0b235fc
Increase timeout
adrinr Oct 3, 2023
983f0c0
Add easimon/maximize-build-space@master back
adrinr Oct 3, 2023
07b58d6
Remove tag check
adrinr Oct 3, 2023
e0a5378
Clean dependencies
adrinr Oct 3, 2023
5c492dc
More cleanups
adrinr Oct 3, 2023
df96689
Don't clean cache on the multistage
adrinr Oct 3, 2023
c8aecde
More cleanups
adrinr Oct 3, 2023
f804114
Update @google-cloud/firestore (yarn audit)
adrinr Oct 3, 2023
8ec7123
yarn audit fix
adrinr Oct 3, 2023
fc19ffa
Fix vulnerabilities
adrinr Oct 3, 2023
7b6638e
Yarn cache
adrinr Oct 3, 2023
b67e759
Merge branch 'master' into BUDI-7573/use_existing_image_cache
adrinr Oct 3, 2023
0a44f56
Merge branch 'master' into BUDI-7573/use_existing_image_cache
adrinr Oct 4, 2023
1c491b4
Update dockerignore
adrinr Oct 4, 2023
63fef96
Update action
adrinr Oct 4, 2023
5356ca9
Remove easimon/maximize-build-space
adrinr Oct 4, 2023
0bc414b
Build aas image
adrinr Oct 4, 2023
7451326
.dockerignore
adrinr Oct 4, 2023
be6b461
Add builder and pm2 config
adrinr Oct 4, 2023
64a7291
Clean unnecessary platform build
adrinr Oct 5, 2023
fe501e7
Fix devdependency type
adrinr Oct 5, 2023
91693ff
Cache yarn
adrinr Oct 6, 2023
117211b
Remove docker buildx
adrinr Oct 6, 2023
594d77c
Remove unnecessary rm
adrinr Oct 6, 2023
0bc3b2f
Update vite dependencies
adrinr Oct 6, 2023
31471f1
Update rollup
adrinr Oct 6, 2023
2cb24d2
Explicit NX_CLOUD_ACCESS_TOKEN
adrinr Oct 6, 2023
a0bf17c
Cache output files
adrinr Oct 6, 2023
0e7d280
Merge branch 'master' into BUDI-7573/use_existing_image_cache
adrinr Oct 6, 2023
2c940b9
More nx cache
adrinr Oct 6, 2023
09376ae
Merge branch 'master' of github.com:Budibase/budibase into BUDI-7573/…
mike12345567 Oct 12, 2023
393af76
Fixing conflict.
mike12345567 Oct 12, 2023
fdcd595
Merge branch 'master' into BUDI-7573/use_existing_image_cache
adrinr Oct 13, 2023
856a3d2
Fix import
adrinr Oct 13, 2023
8357f23
Update featurebranch deployment branch
adrinr Oct 13, 2023
1db868c
Fix
adrinr Oct 13, 2023
4fea8fa
Fix
adrinr Oct 13, 2023
229109d
Undo changes
adrinr Oct 13, 2023
a8dc7f8
Add single vs dockerfile in order to allow testing it
adrinr Oct 13, 2023
1744f79
Remove packageNames file usages
adrinr Oct 13, 2023
aba429e
Build other versions
adrinr Oct 13, 2023
1ed7f6d
Fix multiple build platform
adrinr Oct 13, 2023
55698d9
Run on push
adrinr Oct 13, 2023
54daf2f
Fix
adrinr Oct 13, 2023
ab83c92
Merge branch 'master' into BUDI-7573/use_existing_image_cache
adrinr Oct 16, 2023
7c924f4
workflow_dispatch
adrinr Oct 16, 2023
9cc9b96
Merge branch 'master' into BUDI-7573/use_existing_image_cache
adrinr Oct 16, 2023
c07fb34
Replace localhost for 127.0.0.1
adrinr Oct 16, 2023
19bd27c
Merge branch 'master' into BUDI-7573/use_existing_image_cache
adrinr Oct 16, 2023
8afa773
Remove test action trigger
adrinr Oct 16, 2023
e453b7e
Merge branch 'master' into BUDI-7573/use_existing_image_cache
adrinr Oct 16, 2023
8fc29f8
Fix sentry import
adrinr Oct 17, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 14 additions & 9 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
packages/server/node_modules
packages/builder
packages/frontend-core
packages/backend-core
packages/worker/node_modules
packages/cli
packages/client
packages/bbui
packages/string-templates
*
!/packages/
!/scripts/
/packages/*/node_modules
packages/server/scripts/
!packages/server/scripts/integrations/oracle
!nx.json
!/hosting/single/
!/hosting/letsencrypt /

!package.json
!yarn.lock
!lerna.json
!.yarnrc
66 changes: 66 additions & 0 deletions .github/workflows/release-singleimage-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Test

on:
push:

env:
CI: true
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
REGISTRY_URL: registry.hub.docker.com
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
jobs:
build:
name: "build"
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x]
steps:
- name: "Checkout"
uses: actions/checkout@v4
with:
submodules: true
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Setup QEMU
uses: docker/setup-qemu-action@v3
- name: Run Yarn
run: yarn
- name: Run Yarn Build
run: yarn build --scope @budibase/server --scope @budibase/worker
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_API_KEY }}
- name: Get the latest release version
id: version
run: |
release_version=$(cat lerna.json | jq -r '.version')
echo $release_version
echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV
- name: Tag and release Budibase service docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
pull: true
platforms: linux/amd64,linux/arm64
tags: budibase/budibase-test:test
file: ./hosting/single/Dockerfile.v2
cache-from: type=registry,ref=budibase/budibase-test:test
cache-to: type=inline
- 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
tags: budibase/budibase-test:aas
file: ./hosting/single/Dockerfile.v2
2 changes: 1 addition & 1 deletion .yarnrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
network-timeout 100000
network-timeout 1000000
126 changes: 126 additions & 0 deletions hosting/single/Dockerfile.v2
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
FROM node:18-slim as build

# install node-gyp dependencies
RUN apt-get update && apt-get install -y --no-install-recommends g++ make python3 jq


# copy and install dependencies
WORKDIR /app
COPY package.json .
COPY yarn.lock .
COPY lerna.json .
COPY .yarnrc .

COPY packages/server/package.json packages/server/package.json
COPY packages/worker/package.json packages/worker/package.json
# string-templates does not get bundled during the esbuild process, so we want to use the local version
COPY packages/string-templates/package.json packages/string-templates/package.json


COPY scripts/removeWorkspaceDependencies.sh scripts/removeWorkspaceDependencies.sh
RUN chmod +x ./scripts/removeWorkspaceDependencies.sh
RUN ./scripts/removeWorkspaceDependencies.sh


# We will never want to sync pro, but the script is still required
RUN echo '' > scripts/syncProPackage.js
RUN jq 'del(.scripts.postinstall)' package.json > temp.json && mv temp.json package.json
RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn install --production

# copy the actual code
COPY packages/server/dist packages/server/dist
COPY packages/server/pm2.config.js packages/server/pm2.config.js
COPY packages/server/client packages/server/client
COPY packages/server/builder packages/server/builder
COPY packages/worker/dist packages/worker/dist
COPY packages/worker/pm2.config.js packages/worker/pm2.config.js
COPY packages/string-templates packages/string-templates


FROM budibase/couchdb as runner
ARG TARGETARCH
ENV TARGETARCH $TARGETARCH
#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
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

# Install postgres client for pg_dump utils
RUN apt install software-properties-common apt-transport-https gpg -y \
&& 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 \
&& apt install postgresql-client-15 -y \
&& apt remove 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

# setup nginx
COPY hosting/single/nginx/nginx.conf /etc/nginx
COPY hosting/single/nginx/nginx-default-site.conf /etc/nginx/sites-enabled/default
RUN mkdir -p /var/log/nginx && \
touch /var/log/nginx/error.log && \
touch /var/run/nginx.pid && \
usermod -a -G tty www-data

WORKDIR /
RUN mkdir -p scripts/integrations/oracle
COPY packages/server/scripts/integrations/oracle scripts/integrations/oracle
RUN /bin/bash -e ./scripts/integrations/oracle/instantclient/linux/install.sh

# setup minio
WORKDIR /minio
COPY scripts/install-minio.sh ./install.sh
RUN chmod +x install.sh && ./install.sh

# setup runner file
WORKDIR /
COPY hosting/single/runner.sh .
RUN chmod +x ./runner.sh
COPY hosting/single/healthcheck.sh .
RUN chmod +x ./healthcheck.sh

# Script below sets the path for storing data based on $DATA_DIR
# For Azure App Service install SSH & point data locations to /home
COPY hosting/single/ssh/sshd_config /etc/
COPY hosting/single/ssh/ssh_setup.sh /tmp
RUN /build-target-paths.sh


# setup letsencrypt certificate
RUN apt-get install -y certbot python3-certbot-nginx
COPY hosting/letsencrypt /app/letsencrypt
RUN chmod +x /app/letsencrypt/certificate-request.sh /app/letsencrypt/certificate-renew.sh

COPY --from=build /app/node_modules /node_modules
COPY --from=build /app/package.json /package.json
COPY --from=build /app/packages/server /app
COPY --from=build /app/packages/worker /worker
COPY --from=build /app/packages/string-templates /string-templates

RUN cd /string-templates && yarn link && cd ../app && yarn link @budibase/string-templates && cd ../worker && yarn link @budibase/string-templates


EXPOSE 80
EXPOSE 443
# Expose port 2222 for SSH on Azure App Service build
EXPOSE 2222
VOLUME /data


HEALTHCHECK --interval=15s --timeout=15s --start-period=45s CMD "/healthcheck.sh"

# must set this just before running
ENV NODE_ENV=production
WORKDIR /

CMD ["./runner.sh"]
6 changes: 5 additions & 1 deletion nx.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,9 @@
}
}
},
"targetDefaults": {}
"targetDefaults": {
"build": {
"inputs": ["{workspaceRoot}/scripts/build.js"]
}
}
}
11 changes: 2 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,11 @@
"private": true,
"devDependencies": {
"@esbuild-plugins/tsconfig-paths": "^0.1.2",
"@nx/js": "16.4.3",
"@rollup/plugin-json": "^4.0.2",
"@typescript-eslint/parser": "6.7.2",
"esbuild": "^0.18.17",
"esbuild-node-externals": "^1.8.0",
"eslint": "^8.44.0",
"husky": "^8.0.3",
"js-yaml": "^4.1.0",
"kill-port": "^1.6.1",
"lerna": "7.1.1",
"madge": "^6.0.0",
Expand All @@ -19,8 +16,6 @@
"nx-cloud": "16.0.5",
"prettier": "2.8.8",
"prettier-plugin-svelte": "^2.3.0",
"rimraf": "^3.0.2",
"rollup-plugin-replace": "^2.2.0",
"svelte": "3.49.0",
"typescript": "5.2.2",
"@babel/core": "^7.22.5",
Expand Down Expand Up @@ -51,7 +46,7 @@
"dev:noserver": "yarn run kill-builder && lerna run --stream dev:stack:up && lerna run --stream dev:builder --ignore @budibase/backend-core --ignore @budibase/server --ignore @budibase/worker",
"dev:server": "yarn run kill-server && lerna run --stream dev:builder --scope @budibase/worker --scope @budibase/server",
"dev:built": "yarn run kill-all && cd packages/server && yarn dev:stack:up && cd ../../ && lerna run --stream dev:built",
"dev:docker": "yarn build:docker:pre && docker-compose -f hosting/docker-compose.build.yaml -f hosting/docker-compose.dev.yaml --env-file hosting/.env up --build --scale proxy-service=0",
"dev:docker": "yarn build && docker-compose -f hosting/docker-compose.build.yaml -f hosting/docker-compose.dev.yaml --env-file hosting/.env up --build --scale proxy-service=0",
"test": "lerna run --stream test --stream",
"lint:eslint": "eslint packages qa-core --max-warnings=0",
"lint:prettier": "prettier --check \"packages/**/*.{js,ts,svelte}\" && prettier --write \"examples/**/*.{js,ts,svelte}\" && prettier --check \"qa-core/**/*.{js,ts,svelte}\"",
Expand All @@ -61,16 +56,14 @@
"lint:fix": "yarn run lint:fix:prettier && yarn run lint:fix:eslint",
"build:specs": "lerna run --stream specs",
"build:docker": "lerna run --stream build:docker && yarn build:docker:proxy && cd hosting/scripts/linux/ && ./release-to-docker-hub.sh $BUDIBASE_RELEASE_VERSION && cd -",
"build:docker:pre": "yarn build && lerna run --stream predocker",
"build:docker:proxy": "docker build hosting/proxy -t proxy-service",
"build:docker:selfhost": "lerna run --stream build:docker && cd hosting/scripts/linux/ && ./release-to-docker-hub.sh latest && cd -",
"build:docker:develop": "node scripts/pinVersions && lerna run --stream build:docker && yarn build:docker:proxy && cd hosting/scripts/linux/ && ./release-to-docker-hub.sh develop && cd -",
"build:docker:airgap": "node hosting/scripts/airgapped/airgappedDockerBuild",
"build:docker:airgap:single": "SINGLE_IMAGE=1 node hosting/scripts/airgapped/airgappedDockerBuild",
"build:digitalocean": "cd hosting/digitalocean && ./build.sh && cd -",
"build:docker:single:multiarch": "docker buildx build --platform linux/arm64,linux/amd64 -f hosting/single/Dockerfile -t budibase:latest .",
"build:docker:single:image": "docker build -f hosting/single/Dockerfile -t budibase:latest .",
"build:docker:single": "yarn build && lerna run --concurrency 1 predocker && yarn build:docker:single:image",
"build:docker:single": "./scripts/build-single-image.sh",
"build:docker:dependencies": "docker build -f hosting/dependencies/Dockerfile -t budibase/dependencies:latest ./hosting",
"publish:docker:couch": "docker buildx build --platform linux/arm64,linux/amd64 -f hosting/couchdb/Dockerfile -t budibase/couchdb:latest -t budibase/couchdb:v3.2.1 --push ./hosting/couchdb",
"publish:docker:dependencies": "docker buildx build --platform linux/arm64,linux/amd64 -f hosting/dependencies/Dockerfile -t budibase/dependencies:latest -t budibase/dependencies:v3.2.1 --push ./hosting",
Expand Down
2 changes: 1 addition & 1 deletion packages/backend-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"@budibase/shared-core": "0.0.0",
"@budibase/types": "0.0.0",
"@techpass/passport-openidconnect": "0.3.2",
"aws-cloudfront-sign": "2.2.0",
"aws-cloudfront-sign": "3.0.2",
"aws-sdk": "2.1030.0",
"bcrypt": "5.1.0",
"bcryptjs": "2.4.3",
Expand Down
4 changes: 2 additions & 2 deletions packages/backend-core/src/objectStore/cloudfront.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import env from "../environment"
const cfsign = require("aws-cloudfront-sign")
import * as cfsign from "aws-cloudfront-sign"

let PRIVATE_KEY: string | undefined

Expand All @@ -21,7 +21,7 @@ function getPrivateKey() {

const getCloudfrontSignParams = () => {
return {
keypairId: env.CLOUDFRONT_PUBLIC_KEY_ID,
keypairId: env.CLOUDFRONT_PUBLIC_KEY_ID!,
privateKeyString: getPrivateKey(),
expireTime: new Date().getTime() + 1000 * 60 * 60, // 1 hour
}
Expand Down
4 changes: 2 additions & 2 deletions packages/bbui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,9 @@
"@spectrum-css/vars": "3.0.1",
"dayjs": "^1.10.8",
"easymde": "^2.16.1",
"svelte-dnd-action": "^0.9.8",
"svelte-flatpickr": "3.2.3",
"svelte-portal": "^1.0.0",
"svelte-dnd-action": "^0.9.8"
"svelte-portal": "^1.0.0"
},
"resolutions": {
"loader-utils": "1.4.1"
Expand Down
8 changes: 0 additions & 8 deletions packages/builder/build/copy.js

This file was deleted.

12 changes: 7 additions & 5 deletions packages/builder/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,8 @@
"@babel/core": "^7.12.14",
"@babel/plugin-transform-runtime": "^7.13.10",
"@babel/preset-env": "^7.13.12",
"@rollup/plugin-replace": "^2.4.2",
"@roxi/routify": "2.18.5",
"@rollup/plugin-replace": "^5.0.3",
"@roxi/routify": "2.18.12",
"@sveltejs/vite-plugin-svelte": "1.0.1",
"@testing-library/jest-dom": "5.17.0",
"@testing-library/svelte": "^3.2.2",
Expand All @@ -95,16 +95,18 @@
"jest": "29.6.2",
"jsdom": "^21.1.1",
"ncp": "^2.0.0",
"rollup": "^2.44.0",
"svelte": "^3.48.0",
"svelte-jester": "^1.3.2",
"vite": "^3.0.8",
"vite-plugin-static-copy": "^0.16.0",
"vite": "^4.4.11",
"vite-plugin-static-copy": "^0.17.0",
"vitest": "^0.29.2"
},
"nx": {
"targets": {
"build": {
"outputs": [
"{workspaceRoot}/packages/server/builder"
],
"dependsOn": [
{
"projects": [
Expand Down
Loading
Loading