From a650577181790abf68697327900bd89637116401 Mon Sep 17 00:00:00 2001 From: Jacopo Scazzosi Date: Fri, 3 Oct 2025 17:06:27 +0200 Subject: [PATCH 1/2] chore: uses docker image from ghcr.io for e2e tests --- .github/workflows/tests-end-to-end.yml | 18 ++-------------- docker/bacnet-stack-server/Dockerfile | 12 ----------- docker/bacnet-stack-server/server.js | 30 -------------------------- e2e-tests-clean.sh | 2 +- e2e-tests-prep.sh | 2 +- src/tests/bacnet-stack-client.ts | 2 +- 6 files changed, 5 insertions(+), 61 deletions(-) delete mode 100644 docker/bacnet-stack-server/Dockerfile delete mode 100644 docker/bacnet-stack-server/server.js diff --git a/.github/workflows/tests-end-to-end.yml b/.github/workflows/tests-end-to-end.yml index ed3088f..fbcde69 100644 --- a/.github/workflows/tests-end-to-end.yml +++ b/.github/workflows/tests-end-to-end.yml @@ -31,22 +31,8 @@ jobs: with: node-version: ${{ matrix.node-version }} - - name: Cache bacnet-stack-server image - uses: actions/cache@v4 - id: cache-bacnet-stack-server-docker-image - with: - path: bacnet-stack-server.tar - key: ${{ runner.os }}-${{ hashFiles('docker/bacnet-stack-server/*') }} - - - name: Load cached bacnet-stack-server image - if: ${{ steps.cache-bacnet-stack-server-docker-image.outputs.cache-hit == 'true' }} - continue-on-error: false - run: docker load -i bacnet-stack-server.tar - - - name: Build bacnet-stack-server image - if: ${{ steps.cache-bacnet-stack-server-docker-image.outputs.cache-hit != 'true' }} - continue-on-error: false - run: docker build -t bacnet-stack-server --platform linux/amd64 docker/bacnet-stack-server && docker save -o bacnet-stack-server.tar bacnet-stack-server + - name: Log in to GHCR.io + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin - name: Install dependencies run: npm ci diff --git a/docker/bacnet-stack-server/Dockerfile b/docker/bacnet-stack-server/Dockerfile deleted file mode 100644 index f2c42d6..0000000 --- a/docker/bacnet-stack-server/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ - -FROM node:20-alpine AS build-env -RUN apk add --no-cache build-base curl git linux-headers -WORKDIR / -RUN git clone https://github.com/bacnet-stack/bacnet-stack.git --depth 1 --branch bacnet-stack-1.4.1 -RUN cd bacnet-stack && make clean all - -FROM node:20-alpine -COPY --from=build-env /bacnet-stack /bacnet-stack -WORKDIR /bacnet-stack -COPY ./server.js /server.js -CMD ["node", "/server.js"] diff --git a/docker/bacnet-stack-server/server.js b/docker/bacnet-stack-server/server.js deleted file mode 100644 index 56ac967..0000000 --- a/docker/bacnet-stack-server/server.js +++ /dev/null @@ -1,30 +0,0 @@ - -import { createServer } from 'node:http'; -import { exec } from 'node:child_process'; - -const server = createServer((req, res) => { - let buf = Buffer.alloc(0); - req.on('data', (chunk) => { - buf = Buffer.concat([buf, chunk]); - }); - req.on('end', () => { - let cmd = buf.toString(); - if (cmd.length === 0 || !cmd.startsWith('bac')) { - res.statusCode = 400; - res.end('Invalid command'); - return; - } - cmd = `/bacnet-stack/bin/${cmd}`; - exec(cmd, (err, stdout, stderr) => { - if (err) { - res.statusCode = 500; - res.end(err.stack ?? err); - } else { - res.statusCode = 200; - res.end(stdout.trim()); - } - }); - }); -}); - -server.listen(3000, '0.0.0.0'); diff --git a/e2e-tests-clean.sh b/e2e-tests-clean.sh index 7dea138..c39e1d3 100644 --- a/e2e-tests-clean.sh +++ b/e2e-tests-clean.sh @@ -1,3 +1,3 @@ -docker stop bacnet-stack-server && docker rm bacnet-stack-server +docker stop bacnet-stack-runner && docker rm bacnet-stack-runner docker network rm bacnet-js diff --git a/e2e-tests-prep.sh b/e2e-tests-prep.sh index 2f65417..d24c3bd 100644 --- a/e2e-tests-prep.sh +++ b/e2e-tests-prep.sh @@ -2,4 +2,4 @@ docker network create bacnet-js -docker run -d --platform linux/amd64 --network bacnet-js --name bacnet-stack-server bacnet-stack-server +docker run -d --platform linux/amd64 --network bacnet-js --name bacnet-stack-runner ghcr.io/bacnet-js/bacnet-stack-runner:f2894b2a0ede095e1fe19200c0f1cc137c5e0e48 diff --git a/src/tests/bacnet-stack-client.ts b/src/tests/bacnet-stack-client.ts index 0af1308..cd90090 100644 --- a/src/tests/bacnet-stack-client.ts +++ b/src/tests/bacnet-stack-client.ts @@ -2,7 +2,7 @@ import { ObjectType, PropertyIdentifier } from '@bacnet-js/client'; const bsExec = async (bin: string, args: string[]) => { - const res = await fetch('http://bacnet-stack-server:3000', { + const res = await fetch('http://bacnet-stack-runner:3000', { method: 'POST', body: `${bin} ${args.map(a => `"${a}"`).join(' ')}`, }); From ab5479684e31f75f62648760773df386e77e8291 Mon Sep 17 00:00:00 2001 From: Jacopo Scazzosi Date: Fri, 3 Oct 2025 17:12:32 +0200 Subject: [PATCH 2/2] chore: adds missing block to github workflow --- .github/workflows/tests-end-to-end.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/tests-end-to-end.yml b/.github/workflows/tests-end-to-end.yml index fbcde69..f922087 100644 --- a/.github/workflows/tests-end-to-end.yml +++ b/.github/workflows/tests-end-to-end.yml @@ -21,6 +21,10 @@ jobs: runs-on: ${{ matrix.os }} name: ${{ matrix.os }} / Node ${{ matrix.node-version }} ${{ matrix.arch }} + permissions: + contents: read + packages: read + steps: - name: Checkout code