From 68b79878a9547b0199d1f1f8458fba330ecd9e73 Mon Sep 17 00:00:00 2001 From: Faizan Hemotra <77664620+fzhem@users.noreply.github.com> Date: Sat, 31 May 2025 14:33:56 +0100 Subject: [PATCH 1/3] Create Dockerfile --- Dockerfile | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..25c9b11 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,59 @@ +FROM ubuntu:24.04@sha256:6015f66923d7afbc53558d7ccffd325d43b4e249f41a6e93eef074c9505d2233 + +# Install required dependencies +RUN apt-get update && apt-get upgrade -y && apt-get install -y \ + git \ + build-essential cmake \ + # liboctdata needs boost + libboost-iostreams-dev libboost-locale-dev libboost-log-dev libboost-numpy-dev libboost-program-options-dev libboost-python-dev libboost-serialization-dev \ + # opencv is a core lib for libe2e/liboctdata + libopencv-dev libopenjp2-7-dev \ + # liboctdata dicom support + libdcmtk-dev \ + # for auditwheels + patchelf \ + libnsl-dev && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +RUN groupadd -r appuser && useradd -r -g appuser appuser + +# Set the working directory +WORKDIR /home/appuser +RUN mkdir -p /home/appuser/oct + +WORKDIR /home/appuser/oct + +RUN git clone https://github.com/kaygdev/oct_cpp_framework.git +RUN git clone https://github.com/fzhem/LibE2E.git +RUN git clone https://github.com/fzhem/LibOctData.git +RUN git clone https://github.com/fzhem/octdata4python.git + +RUN echo "๐Ÿ›  Building oct_cpp_framework..." +RUN mkdir /home/appuser/oct/oct_cpp_framework/build +WORKDIR /home/appuser/oct/oct_cpp_framework/build +RUN cmake -DCMAKE_BUILD_TYPE=Release .. +RUN make -j$(nproc) + +RUN echo "๐Ÿ›  Building LibE2E..." +RUN mkdir /home/appuser/oct/LibE2E/build +WORKDIR /home/appuser/oct/LibE2E/build +RUN cmake -DCMAKE_BUILD_TYPE=Release .. +RUN make -j$(nproc) + +RUN echo "๐Ÿ›  Building LibOctData..." +RUN mkdir /home/appuser/oct/LibOctData/build +WORKDIR /home/appuser/oct/LibOctData/build +RUN cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_SUPPORT_DICOM=ON .. +RUN make -j$(nproc) +RUN make install + +RUN echo "๐Ÿ›  Building octdata4python..." +WORKDIR /home/appuser/oct/octdata4python +COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ +RUN for PYVER in 3.10 3.11 3.12; do \ + uv sync --python=$PYVER && \ + .venv/bin/python3 -m build --installer=uv && \ + CLEANVER=$(echo $PYVER | tr -d '.') && \ + .venv/bin/python3 -m auditwheel repair dist/octdata4python-*-cp${CLEANVER}*.whl --plat manylinux_2_39_x86_64; \ +done From 6799a21634c044722e0c8daef37f0673abcdec9f Mon Sep 17 00:00:00 2001 From: Faizan Hemotra <77664620+fzhem@users.noreply.github.com> Date: Sat, 31 May 2025 14:34:22 +0100 Subject: [PATCH 2/3] Create docker-compose.yaml --- docker-compose.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 docker-compose.yaml diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..80c3945 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,8 @@ +services: + octdata4python: + build: + context: . + dockerfile: Dockerfile + container_name: octdata4python + command: > + sh -c "tail -f /dev/null" From 8f0788cef295272beb8b066c0887dbbf575a9745 Mon Sep 17 00:00:00 2001 From: Faizan Hemotra <77664620+fzhem@users.noreply.github.com> Date: Sat, 31 May 2025 14:35:03 +0100 Subject: [PATCH 3/3] Create linux.yml --- .github/workflows/linux.yml | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/workflows/linux.yml diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml new file mode 100644 index 0000000..18e1702 --- /dev/null +++ b/.github/workflows/linux.yml @@ -0,0 +1,47 @@ +name: Linux + +on: + workflow_dispatch: + +jobs: + compose-job: + runs-on: ubuntu-24.04 + + steps: + - name: ๐Ÿ›ธ Checkout code + uses: actions/checkout@v4 + + - name: ๐Ÿš€ Set up Docker Buildx (optional, but helpful) + uses: docker/setup-buildx-action@v3 + + - name: ๐Ÿณ Set up Docker Compose + run: | + sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + + - name: ๐Ÿ”ฅ Build & start containers + run: docker-compose up --build -d + + - name: ๐Ÿ“ฅ Copy wheels to host + run: | + docker cp octdata4python:/home/appuser/oct/octdata4python/wheelhouse . + + - name: ๐Ÿงน Tear down containers + run: docker-compose down + + - name: Fetch latest commit hash + id: get_commit_hash + run: echo "hash=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + files: | + wheelhouse/octdata4python-0.1.0-cp310-cp310-manylinux_2_39_x86_64.whl + wheelhouse/octdata4python-0.1.0-cp311-cp311-manylinux_2_39_x86_64.whl + wheelhouse/octdata4python-0.1.0-cp312-cp312-manylinux_2_39_x86_64.whl + body: Release created automatically from workflow. + draft: true + tag_name: ${{ steps.get_commit_hash.outputs.hash }}