diff --git a/.github/workflows/tests-end-to-end.yml b/.github/workflows/tests-end-to-end.yml index ed3088f..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 @@ -31,22 +35,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(' ')}`, });