diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..50dc3c4f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +.git/ +build/ \ No newline at end of file diff --git a/CMakePresets.json b/CMakePresets.json index 199dc022..8062aa50 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -208,18 +208,45 @@ "description": "Settings for all packages", "hidden": true, "generators": [ - "TGZ", + "TGZ" + ] + }, + { + "name": "debian-package", + "inherits": "default-package", + "description": "Settings building a Debian Package", + "hidden": true, + "generators": [ "DEB" ] }, { - "name": "release-gcc-linux-shared-package", + "name": "rpm-package", "inherits": "default-package", + "description": "Settings building an RPM Package", + "hidden": true, + "generators": [ + "RPM" + ] + }, + { + "name": "release-gcc-debian-shared-package", + "inherits": "debian-package", "configurePreset": "release-gcc-linux-shared-config" }, { - "name": "release-gcc-linux-static-package", - "inherits": "default-package", + "name": "release-gcc-debian-static-package", + "inherits": "debian-package", + "configurePreset": "release-gcc-linux-static-config" + }, + { + "name": "release-gcc-rpm-shared-package", + "inherits": "rpm-package", + "configurePreset": "release-gcc-linux-shared-config" + }, + { + "name": "release-gcc-rpm-static-package", + "inherits": "rpm-package", "configurePreset": "release-gcc-linux-static-config" } ], @@ -263,9 +290,47 @@ ] }, { - "name": "package-release-gcc-linux-shared-workflow", - "displayName": "Package Release Shared Library Workflow", - "description": "Packaging the release gcc shared library", + "name": "package-release-gcc-debian-shared-workflow", + "displayName": "Debian Package Release Shared Library Workflow", + "description": "Packaging the release gcc shared library with debian", + "steps": [ + { + "type": "configure", + "name": "release-gcc-linux-shared-config" + }, + { + "type": "build", + "name": "release-gcc-linux-shared-build" + }, + { + "type": "package", + "name": "release-gcc-debian-shared-package" + } + ] + }, + { + "name": "package-release-gcc-debian-static-workflow", + "displayName": "Debian Package Release Static Library Workflow", + "description": "Packaging the release gcc static library with debian", + "steps": [ + { + "type": "configure", + "name": "release-gcc-linux-static-config" + }, + { + "type": "build", + "name": "release-gcc-linux-static-build" + }, + { + "type": "package", + "name": "release-gcc-debian-static-package" + } + ] + }, + { + "name": "package-release-gcc-rpm-shared-workflow", + "displayName": "RPM Package Release Shared Library Workflow", + "description": "Packaging the release gcc shared library as an RPM", "steps": [ { "type": "configure", @@ -277,14 +342,14 @@ }, { "type": "package", - "name": "release-gcc-linux-shared-package" + "name": "release-gcc-rpm-shared-package" } ] }, { - "name": "package-release-gcc-linux-static-workflow", - "displayName": "Package Release Static Library Workflow", - "description": "Packaging the release gcc static library", + "name": "package-release-gcc-rpm-static-workflow", + "displayName": "RPM Package Release Static Library Workflow", + "description": "Packaging the release gcc static library as an RPM", "steps": [ { "type": "configure", @@ -296,7 +361,7 @@ }, { "type": "package", - "name": "release-gcc-linux-static-package" + "name": "release-gcc-rpm-static-package" } ] } diff --git a/compose.debug.yaml b/compose.debug.yaml new file mode 100644 index 00000000..7f329151 --- /dev/null +++ b/compose.debug.yaml @@ -0,0 +1,11 @@ +services: + debian_builder: + build: + context: . + dockerfile: ./docker/deb/Dockerfile + command: tail -f /dev/null + rpm_builder: + build: + context: . + dockerfile: ./docker/rpm/Dockerfile + command: tail -f /dev/null diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 00000000..7f329151 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,11 @@ +services: + debian_builder: + build: + context: . + dockerfile: ./docker/deb/Dockerfile + command: tail -f /dev/null + rpm_builder: + build: + context: . + dockerfile: ./docker/rpm/Dockerfile + command: tail -f /dev/null diff --git a/docker/deb/Dockerfile b/docker/deb/Dockerfile new file mode 100644 index 00000000..531e9a81 --- /dev/null +++ b/docker/deb/Dockerfile @@ -0,0 +1,15 @@ +FROM gcc:latest AS builder + +RUN apt-get update && \ + apt-get install -y cmake && \ + apt-get install -y ninja-build && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /respond +COPY . /respond + +RUN mkdir build && \ + cmake --workflow --preset package-release-gcc-debian-shared-workflow + +FROM debian:stable-slim +COPY --from=builder /respond/build/shared/*.deb . \ No newline at end of file diff --git a/docker/rpm/Dockerfile b/docker/rpm/Dockerfile new file mode 100644 index 00000000..1e3b8505 --- /dev/null +++ b/docker/rpm/Dockerfile @@ -0,0 +1,13 @@ +FROM fedora:latest AS builder + +RUN dnf update -y +RUN dnf install -y cmake gcc-c++ make ninja rpm-build git + +WORKDIR /respond +COPY . /respond + +RUN mkdir build && \ + cmake --workflow --preset package-release-gcc-rpm-shared-workflow + +FROM fedora:latest +COPY --from=builder /respond/build/shared/*.rpm . \ No newline at end of file