diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 50d6dab..54ad299 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -16,6 +16,18 @@ updates: prefix: chore prefix-development: chore +- package-ecosystem: docker + directory: "/docker" + schedule: + interval: weekly + open-pull-requests-limit: 10 + assignees: + - thenativeweb/internal_dev + labels: + - Dependencies + commit-message: + prefix: chore + - package-ecosystem: "github-actions" directory: "/" schedule: diff --git a/.npmignore b/.npmignore index dabf84b..2eae450 100644 --- a/.npmignore +++ b/.npmignore @@ -1,5 +1,7 @@ .github/ +docker/ src/ + .gitignore .npmignore biome.json diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..395f4f6 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1 @@ +FROM thenativeweb/eventsourcingdb:0.118.10 diff --git a/src/getImageVersionFromDockerfile.ts b/src/getImageVersionFromDockerfile.ts new file mode 100644 index 0000000..ae49db6 --- /dev/null +++ b/src/getImageVersionFromDockerfile.ts @@ -0,0 +1,19 @@ +import fs from 'node:fs'; +import path from 'node:path'; + +const versionRegex = /^FROM\sthenativeweb\/eventsourcingdb:(.+)$/m; + +const getImageVersionFromDockerfile = (): string => { + const dockerfile = path.join(__dirname, '..', 'docker', 'Dockerfile'); + const data = fs.readFileSync(dockerfile, 'utf-8'); + + const matches = data.match(versionRegex); + + if (!matches) { + throw new Error('Failed to find image version in Dockerfile'); + } + + return matches[1]; +}; + +export { getImageVersionFromDockerfile }; diff --git a/src/observeEvents.test.ts b/src/observeEvents.test.ts index 66debe5..1fcaf36 100644 --- a/src/observeEvents.test.ts +++ b/src/observeEvents.test.ts @@ -3,12 +3,14 @@ import { afterEach, beforeEach, suite, test } from 'node:test'; import type { Event } from './Event.js'; import type { EventCandidate } from './EventCandidate.js'; import { EventSourcingDbContainer } from './EventSourcingDbContainer.js'; +import { getImageVersionFromDockerfile } from './getImageVersionFromDockerfile.js'; suite('observeEvents', { timeout: 30_000 }, () => { let container: EventSourcingDbContainer; beforeEach(async () => { - container = new EventSourcingDbContainer(); + const imageVersion = getImageVersionFromDockerfile(); + container = new EventSourcingDbContainer().withImageTag(imageVersion); await container.start(); }); diff --git a/src/ping.test.ts b/src/ping.test.ts index d992579..45ef3dc 100644 --- a/src/ping.test.ts +++ b/src/ping.test.ts @@ -2,12 +2,14 @@ import assert from 'node:assert/strict'; import { afterEach, beforeEach, suite, test } from 'node:test'; import { Client } from './Client.js'; import { EventSourcingDbContainer } from './EventSourcingDbContainer.js'; +import { getImageVersionFromDockerfile } from './getImageVersionFromDockerfile.js'; suite('ping', { timeout: 30_000 }, () => { let container: EventSourcingDbContainer; beforeEach(async () => { - container = new EventSourcingDbContainer(); + const imageVersion = getImageVersionFromDockerfile(); + container = new EventSourcingDbContainer().withImageTag(imageVersion); await container.start(); }); diff --git a/src/readEventTypes.test.ts b/src/readEventTypes.test.ts index 0fc7175..d5601e5 100644 --- a/src/readEventTypes.test.ts +++ b/src/readEventTypes.test.ts @@ -3,12 +3,14 @@ import { afterEach, beforeEach, suite, test } from 'node:test'; import type { EventCandidate } from './EventCandidate.js'; import { EventSourcingDbContainer } from './EventSourcingDbContainer.js'; import type { EventType } from './EventType.js'; +import { getImageVersionFromDockerfile } from './getImageVersionFromDockerfile.js'; suite('readEventTypes', { timeout: 20_000 }, () => { let container: EventSourcingDbContainer; beforeEach(async () => { - container = new EventSourcingDbContainer(); + const imageVersion = getImageVersionFromDockerfile(); + container = new EventSourcingDbContainer().withImageTag(imageVersion); await container.start(); }); diff --git a/src/readEvents.test.ts b/src/readEvents.test.ts index 57e1a84..fcc3c29 100644 --- a/src/readEvents.test.ts +++ b/src/readEvents.test.ts @@ -3,12 +3,14 @@ import { afterEach, beforeEach, suite, test } from 'node:test'; import type { Event } from './Event.js'; import type { EventCandidate } from './EventCandidate.js'; import { EventSourcingDbContainer } from './EventSourcingDbContainer.js'; +import { getImageVersionFromDockerfile } from './getImageVersionFromDockerfile.js'; suite('readEvents', { timeout: 30_000 }, () => { let container: EventSourcingDbContainer; beforeEach(async () => { - container = new EventSourcingDbContainer(); + const imageVersion = getImageVersionFromDockerfile(); + container = new EventSourcingDbContainer().withImageTag(imageVersion); await container.start(); }); diff --git a/src/readSubjects.test.ts b/src/readSubjects.test.ts index f48f08c..3a7a384 100644 --- a/src/readSubjects.test.ts +++ b/src/readSubjects.test.ts @@ -2,12 +2,14 @@ import assert from 'node:assert/strict'; import { afterEach, beforeEach, suite, test } from 'node:test'; import type { EventCandidate } from './EventCandidate.js'; import { EventSourcingDbContainer } from './EventSourcingDbContainer.js'; +import { getImageVersionFromDockerfile } from './getImageVersionFromDockerfile.js'; suite('readSubjects', { timeout: 30_000 }, () => { let container: EventSourcingDbContainer; beforeEach(async () => { - container = new EventSourcingDbContainer(); + const imageVersion = getImageVersionFromDockerfile(); + container = new EventSourcingDbContainer().withImageTag(imageVersion); await container.start(); }); diff --git a/src/registerEventSchema.test.ts b/src/registerEventSchema.test.ts index d661a99..dff6a24 100644 --- a/src/registerEventSchema.test.ts +++ b/src/registerEventSchema.test.ts @@ -1,12 +1,14 @@ import assert from 'node:assert/strict'; import { afterEach, beforeEach, suite, test } from 'node:test'; import { EventSourcingDbContainer } from './EventSourcingDbContainer.js'; +import { getImageVersionFromDockerfile } from './getImageVersionFromDockerfile.js'; suite('registerEventSchema', { timeout: 30_000 }, () => { let container: EventSourcingDbContainer; beforeEach(async () => { - container = new EventSourcingDbContainer(); + const imageVersion = getImageVersionFromDockerfile(); + container = new EventSourcingDbContainer().withImageTag(imageVersion); await container.start(); }); diff --git a/src/runEventQlQuery.test.ts b/src/runEventQlQuery.test.ts index 6f510a1..a289557 100644 --- a/src/runEventQlQuery.test.ts +++ b/src/runEventQlQuery.test.ts @@ -2,12 +2,14 @@ import assert from 'node:assert/strict'; import { afterEach, beforeEach, suite, test } from 'node:test'; import type { EventCandidate } from './EventCandidate.js'; import { EventSourcingDbContainer } from './EventSourcingDbContainer.js'; +import { getImageVersionFromDockerfile } from './getImageVersionFromDockerfile.js'; suite('runEventQlQuery', { timeout: 30_000 }, () => { let container: EventSourcingDbContainer; beforeEach(async () => { - container = new EventSourcingDbContainer(); + const imageVersion = getImageVersionFromDockerfile(); + container = new EventSourcingDbContainer().withImageTag(imageVersion); await container.start(); }); diff --git a/src/verifyApiToken.test.ts b/src/verifyApiToken.test.ts index 39dc573..06989c4 100644 --- a/src/verifyApiToken.test.ts +++ b/src/verifyApiToken.test.ts @@ -2,12 +2,14 @@ import assert from 'node:assert/strict'; import { afterEach, beforeEach, suite, test } from 'node:test'; import { Client } from './Client.js'; import { EventSourcingDbContainer } from './EventSourcingDbContainer.js'; +import { getImageVersionFromDockerfile } from './getImageVersionFromDockerfile.js'; suite('verifyApiToken', { timeout: 30_000 }, () => { let container: EventSourcingDbContainer; beforeEach(async () => { - container = new EventSourcingDbContainer(); + const imageVersion = getImageVersionFromDockerfile(); + container = new EventSourcingDbContainer().withImageTag(imageVersion); await container.start(); }); diff --git a/src/writeEvents.test.ts b/src/writeEvents.test.ts index adb8535..b3f7f43 100644 --- a/src/writeEvents.test.ts +++ b/src/writeEvents.test.ts @@ -2,6 +2,7 @@ import assert from 'node:assert/strict'; import { afterEach, beforeEach, suite, test } from 'node:test'; import type { EventCandidate } from './EventCandidate.js'; import { EventSourcingDbContainer } from './EventSourcingDbContainer.js'; +import { getImageVersionFromDockerfile } from './getImageVersionFromDockerfile.js'; import { isSubjectOnEventId } from './isSubjectOnEventId.js'; import { isSubjectPristine } from './isSubjectPristine.js'; @@ -9,7 +10,8 @@ suite('writeEvents', { timeout: 30_000 }, () => { let container: EventSourcingDbContainer; beforeEach(async () => { - container = new EventSourcingDbContainer(); + const imageVersion = getImageVersionFromDockerfile(); + container = new EventSourcingDbContainer().withImageTag(imageVersion); await container.start(); });