From c671f4ea57f0ed50f5739adaca3245d2311908b6 Mon Sep 17 00:00:00 2001 From: Bhaswati Dey Date: Mon, 20 Jul 2026 16:20:22 +0100 Subject: [PATCH 1/4] new workflow to generate a new image tag which will be used to test uop connection with shared rabbitmq instance --- .github/workflows/build-test-image.yaml | 67 +++++++++++++++++++ apps/backend/package-lock.json | 88 ++++++++++++------------- apps/backend/package.json | 2 +- 3 files changed, 109 insertions(+), 48 deletions(-) create mode 100644 .github/workflows/build-test-image.yaml diff --git a/.github/workflows/build-test-image.yaml b/.github/workflows/build-test-image.yaml new file mode 100644 index 0000000000..e9b78a4921 --- /dev/null +++ b/.github/workflows/build-test-image.yaml @@ -0,0 +1,67 @@ +name: Build and Push Test Image + +on: + workflow_dispatch: + inputs: + tag: + description: "Image tag" + required: true + default: "test" + +env: + NODE_VERSION: 22.x + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v4 + + - name: Login to GHCR + uses: docker/login-action@v4 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Node.js + uses: actions/setup-node@v6 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install dependencies + run: npm ci + + - name: Set environment variables + run: cp apps/frontend/example.development.env apps/frontend/.env + + - name: Generate SDK + run: npm run generate:sdk + + - name: Build and push backend + uses: docker/build-push-action@v7 + with: + context: . + file: ./apps/backend/Dockerfile + platforms: linux/amd64,linux/arm64/v8 + push: true + tags: | + ghcr.io/userofficeproject/user-office-backend:${{ github.event.inputs.tag }} + + - name: Build and push frontend + uses: docker/build-push-action@v7 + with: + context: . + file: ./apps/frontend/Dockerfile + platforms: linux/amd64,linux/arm64/v8 + push: true + tags: | + ghcr.io/userofficeproject/user-office-frontend:${{ github.event.inputs.tag }} \ No newline at end of file diff --git a/apps/backend/package-lock.json b/apps/backend/package-lock.json index a78ed249a1..06ce5badde 100644 --- a/apps/backend/package-lock.json +++ b/apps/backend/package-lock.json @@ -28,7 +28,7 @@ "@opentelemetry/winston-transport": "^0.26.0", "@user-office-software/duo-localisation": "^1.2.0", "@user-office-software/duo-logger": "^2.3.2", - "@user-office-software/duo-message-broker": "^1.8.0", + "@user-office-software/duo-message-broker": "^1.9.1", "@user-office-software/duo-validation": "file:../../validation", "@user-office-software/openid": "^1.4.0", "await-to-js": "^2.1.1", @@ -161,6 +161,7 @@ "version": "7.29.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -1246,6 +1247,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -2020,6 +2022,7 @@ "version": "29.7.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -3619,22 +3622,6 @@ "node": ">=0.10.0" } }, - "node_modules/@acuminous/bitsyntax": { - "version": "0.1.2", - "license": "MIT", - "dependencies": { - "buffer-more-ints": "~1.0.0", - "debug": "^4.3.4", - "safe-buffer": "~5.1.2" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/@acuminous/bitsyntax/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "devOptional": true, @@ -4246,6 +4233,7 @@ "version": "7.23.2", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.13", @@ -5958,6 +5946,7 @@ "node_modules/@opentelemetry/api": { "version": "1.9.0", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=8.0.0" } @@ -7463,6 +7452,7 @@ "version": "8.56.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.56.1", @@ -7498,6 +7488,7 @@ "version": "8.56.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.56.1", "@typescript-eslint/types": "8.56.1", @@ -7824,12 +7815,14 @@ } }, "node_modules/@user-office-software/duo-message-broker": { - "version": "1.8.0", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@user-office-software/duo-message-broker/-/duo-message-broker-1.9.1.tgz", + "integrity": "sha512-qMe3LBvORNBurs32ZI/xrLvkpxIxQ1TpA2BUaMbwpvbtQFqK9YFSA2KaLr5pJq/JO0wCGP9pJ/+ik+TOKAlkKQ==", "license": "ISC", "dependencies": { "@types/amqplib": "^0.10.1", "@user-office-software/duo-logger": "^2.1.1", - "amqplib": "^0.10.3" + "amqplib": "^0.10.9" }, "engines": { "node": ">=16.14.0", @@ -7958,6 +7951,7 @@ "node_modules/acorn": { "version": "8.16.0", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -8026,12 +8020,12 @@ } }, "node_modules/amqplib": { - "version": "0.10.3", + "version": "0.10.9", + "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.10.9.tgz", + "integrity": "sha512-jwSftI4QjS3mizvnSnOrPGYiUnm1vI2OP1iXeOUz5pb74Ua0nbf6nPyyTzuiCLEE3fMpaJORXh2K/TQ08H5xGA==", "license": "MIT", "dependencies": { - "@acuminous/bitsyntax": "^0.1.2", "buffer-more-ints": "~1.0.0", - "readable-stream": "1.x >=1.1.9", "url-parse": "~1.5.10" }, "engines": { @@ -8309,6 +8303,7 @@ "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", @@ -8570,6 +8565,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001541", "electron-to-chromium": "^1.4.535", @@ -8612,6 +8608,8 @@ }, "node_modules/buffer-more-ints": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", + "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==", "license": "MIT" }, "node_modules/busboy": { @@ -8950,6 +8948,7 @@ "node_modules/class-validator": { "version": "0.14.0", "license": "MIT", + "peer": true, "dependencies": { "@types/validator": "^13.7.10", "libphonenumber-js": "^1.10.14", @@ -10035,6 +10034,7 @@ "version": "9.39.3", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -10093,6 +10093,7 @@ "version": "9.1.0", "dev": true, "license": "MIT", + "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -10541,6 +10542,7 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz", "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==", "license": "MIT", + "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -11152,6 +11154,7 @@ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.13.2.tgz", "integrity": "sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==", "license": "MIT", + "peer": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -11206,6 +11209,7 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", "license": "MIT", + "peer": true, "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -12122,6 +12126,7 @@ "version": "29.7.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -13136,7 +13141,8 @@ }, "node_modules/lodash": { "version": "4.17.23", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -13449,19 +13455,6 @@ "url": "https://github.com/sponsors/KillyMXI" } }, - "node_modules/mailparser/node_modules/selderee": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.12.0.tgz", - "integrity": "sha512-b1YMh3+DHZp59DLna3qVwQ5iOla/nrI6mLBNW02XxU77M3046Df6VLkoaJyFz20VsGIG5kkp+FK0kg4K4HnUFw==", - "license": "MIT", - "optional": true, - "dependencies": { - "parseley": "~0.13.1" - }, - "funding": { - "url": "https://github.com/sponsors/KillyMXI" - } - }, "node_modules/make-dir": { "version": "4.0.0", "dev": true, @@ -13925,6 +13918,7 @@ "node_modules/mustache": { "version": "4.2.0", "license": "MIT", + "peer": true, "bin": { "mustache": "bin/mustache" } @@ -14769,6 +14763,7 @@ "version": "3.2.4", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -14934,6 +14929,7 @@ "node_modules/pug": { "version": "3.0.3", "license": "MIT", + "peer": true, "dependencies": { "pug-code-gen": "^3.0.3", "pug-filters": "^4.0.0", @@ -15080,6 +15076,8 @@ }, "node_modules/querystringify": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "license": "MIT" }, "node_modules/range-parser": { @@ -15160,16 +15158,6 @@ "dev": true, "license": "MIT" }, - "node_modules/readable-stream": { - "version": "1.1.14", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, "node_modules/readdirp": { "version": "3.6.0", "dev": true, @@ -15280,6 +15268,8 @@ }, "node_modules/requires-port": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "license": "MIT" }, "node_modules/resolve": { @@ -16340,6 +16330,7 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -16879,7 +16870,8 @@ }, "node_modules/underscore": { "version": "1.13.6", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/underscore.deep": { "version": "0.5.3", @@ -16958,6 +16950,8 @@ }, "node_modules/url-parse": { "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "license": "MIT", "dependencies": { "querystringify": "^2.1.1", diff --git a/apps/backend/package.json b/apps/backend/package.json index 8f131bfc3f..225643fe9a 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -51,7 +51,7 @@ "@opentelemetry/winston-transport": "^0.26.0", "@user-office-software/duo-localisation": "^1.2.0", "@user-office-software/duo-logger": "^2.3.2", - "@user-office-software/duo-message-broker": "^1.8.0", + "@user-office-software/duo-message-broker": "^1.9.1", "@user-office-software/duo-validation": "file:../../validation", "@user-office-software/openid": "^1.4.0", "await-to-js": "^2.1.1", From 00db1f870c927691a772eb09e0b58e63d18b939d Mon Sep 17 00:00:00 2001 From: Bhaswati Dey Date: Mon, 20 Jul 2026 17:02:05 +0100 Subject: [PATCH 2/4] update workflow --- .github/workflows/build-test-image.yaml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-test-image.yaml b/.github/workflows/build-test-image.yaml index e9b78a4921..85c0f22324 100644 --- a/.github/workflows/build-test-image.yaml +++ b/.github/workflows/build-test-image.yaml @@ -1,12 +1,9 @@ name: Build and Push Test Image on: - workflow_dispatch: - inputs: - tag: - description: "Image tag" - required: true - default: "test" + push: + branch: + - update-duo-message-broker-version-to-make-it-compatible-with-rabbitmq4.x env: NODE_VERSION: 22.x @@ -54,7 +51,7 @@ jobs: platforms: linux/amd64,linux/arm64/v8 push: true tags: | - ghcr.io/userofficeproject/user-office-backend:${{ github.event.inputs.tag }} + ghcr.io/userofficeproject/user-office-backend:rmq-test - name: Build and push frontend uses: docker/build-push-action@v7 @@ -64,4 +61,4 @@ jobs: platforms: linux/amd64,linux/arm64/v8 push: true tags: | - ghcr.io/userofficeproject/user-office-frontend:${{ github.event.inputs.tag }} \ No newline at end of file + ghcr.io/userofficeproject/user-office-frontend:rmq-test \ No newline at end of file From dc538a4bd405e991370e16a0a065fb26a48c8d5b Mon Sep 17 00:00:00 2001 From: Bhaswati Dey Date: Mon, 20 Jul 2026 17:36:17 +0100 Subject: [PATCH 3/4] update lock.json --- apps/backend/package-lock.json | 40 +++++++++++++--------------------- 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/apps/backend/package-lock.json b/apps/backend/package-lock.json index 06ce5badde..beac5ed56c 100644 --- a/apps/backend/package-lock.json +++ b/apps/backend/package-lock.json @@ -161,7 +161,6 @@ "version": "7.29.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -1247,7 +1246,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -2022,7 +2020,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -4233,7 +4230,6 @@ "version": "7.23.2", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.13", @@ -5946,7 +5942,6 @@ "node_modules/@opentelemetry/api": { "version": "1.9.0", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=8.0.0" } @@ -7452,7 +7447,6 @@ "version": "8.56.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.56.1", @@ -7488,7 +7482,6 @@ "version": "8.56.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.56.1", "@typescript-eslint/types": "8.56.1", @@ -7951,7 +7944,6 @@ "node_modules/acorn": { "version": "8.16.0", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -8303,7 +8295,6 @@ "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", @@ -8565,7 +8556,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001541", "electron-to-chromium": "^1.4.535", @@ -8948,7 +8938,6 @@ "node_modules/class-validator": { "version": "0.14.0", "license": "MIT", - "peer": true, "dependencies": { "@types/validator": "^13.7.10", "libphonenumber-js": "^1.10.14", @@ -10034,7 +10023,6 @@ "version": "9.39.3", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -10093,7 +10081,6 @@ "version": "9.1.0", "dev": true, "license": "MIT", - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -10542,7 +10529,6 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz", "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==", "license": "MIT", - "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -11154,7 +11140,6 @@ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.13.2.tgz", "integrity": "sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==", "license": "MIT", - "peer": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -11209,7 +11194,6 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", "license": "MIT", - "peer": true, "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -12126,7 +12110,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -13141,8 +13124,7 @@ }, "node_modules/lodash": { "version": "4.17.23", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -13455,6 +13437,19 @@ "url": "https://github.com/sponsors/KillyMXI" } }, + "node_modules/mailparser/node_modules/selderee": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.12.0.tgz", + "integrity": "sha512-b1YMh3+DHZp59DLna3qVwQ5iOla/nrI6mLBNW02XxU77M3046Df6VLkoaJyFz20VsGIG5kkp+FK0kg4K4HnUFw==", + "license": "MIT", + "optional": true, + "dependencies": { + "parseley": "~0.13.1" + }, + "funding": { + "url": "https://github.com/sponsors/KillyMXI" + } + }, "node_modules/make-dir": { "version": "4.0.0", "dev": true, @@ -13918,7 +13913,6 @@ "node_modules/mustache": { "version": "4.2.0", "license": "MIT", - "peer": true, "bin": { "mustache": "bin/mustache" } @@ -14763,7 +14757,6 @@ "version": "3.2.4", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -14929,7 +14922,6 @@ "node_modules/pug": { "version": "3.0.3", "license": "MIT", - "peer": true, "dependencies": { "pug-code-gen": "^3.0.3", "pug-filters": "^4.0.0", @@ -16330,7 +16322,6 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -16870,8 +16861,7 @@ }, "node_modules/underscore": { "version": "1.13.6", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/underscore.deep": { "version": "0.5.3", From 8c97de35d94a0d44c9b351cb3017dde8527b6c97 Mon Sep 17 00:00:00 2001 From: Bhaswati Dey Date: Wed, 22 Jul 2026 13:05:14 +0100 Subject: [PATCH 4/4] revert the test workflow --- .github/workflows/build-test-image.yaml | 64 ------------------------- 1 file changed, 64 deletions(-) delete mode 100644 .github/workflows/build-test-image.yaml diff --git a/.github/workflows/build-test-image.yaml b/.github/workflows/build-test-image.yaml deleted file mode 100644 index 85c0f22324..0000000000 --- a/.github/workflows/build-test-image.yaml +++ /dev/null @@ -1,64 +0,0 @@ -name: Build and Push Test Image - -on: - push: - branch: - - update-duo-message-broker-version-to-make-it-compatible-with-rabbitmq4.x - -env: - NODE_VERSION: 22.x - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v4 - - - name: Login to GHCR - uses: docker/login-action@v4 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Set up Node.js - uses: actions/setup-node@v6 - with: - node-version: ${{ env.NODE_VERSION }} - - - name: Install dependencies - run: npm ci - - - name: Set environment variables - run: cp apps/frontend/example.development.env apps/frontend/.env - - - name: Generate SDK - run: npm run generate:sdk - - - name: Build and push backend - uses: docker/build-push-action@v7 - with: - context: . - file: ./apps/backend/Dockerfile - platforms: linux/amd64,linux/arm64/v8 - push: true - tags: | - ghcr.io/userofficeproject/user-office-backend:rmq-test - - - name: Build and push frontend - uses: docker/build-push-action@v7 - with: - context: . - file: ./apps/frontend/Dockerfile - platforms: linux/amd64,linux/arm64/v8 - push: true - tags: | - ghcr.io/userofficeproject/user-office-frontend:rmq-test \ No newline at end of file