diff --git a/.github/workflows/build-publish.yml b/.github/workflows/build-publish.yml index 2fc9c4d..ddd09cc 100644 --- a/.github/workflows/build-publish.yml +++ b/.github/workflows/build-publish.yml @@ -1,35 +1,54 @@ name: Build and Publish genmap on: + pull_request: push: branches: - main - tags: - - 'v*' - workflow_dispatch: jobs: - build-publish: + test: runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v5 + + - name: Build smoke-test image + uses: docker/build-push-action@v7 + with: + context: . + file: ./Dockerfile + load: true + tags: picotainers-local/genmap:smoke + - name: Smoke test + run: | + set -euo pipefail + docker run --rm picotainers-local/genmap:smoke --help > help.txt + grep -Eiq 'genmap|usage|version|options' help.txt + + publish: + needs: test + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Login to DockerHub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Build and push id: docker_build - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 with: context: . file: ./Dockerfile push: true - tags: picotainers/genmap:latest + tags: docker.io/picotainers/genmap:latest - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/Dockerfile b/Dockerfile index ad63c76..2050c45 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,44 @@ -FROM debian:bookworm AS builder - -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates \ - build-essential \ - cmake \ - git \ - zlib1g-dev \ - && rm -rf /var/lib/apt/lists/* - -ENV GIT_TERMINAL_PROMPT=0 -RUN git clone --depth 1 https://github.com/cpockrandt/genmap.git /src/genmap && \ - git -C /src/genmap submodule update --init --recursive && \ - cmake -S /src/genmap -B /src/genmap/build -DCMAKE_BUILD_TYPE=Release && \ - cmake --build /src/genmap/build -j"$(nproc)" && \ - install -m 0755 /src/genmap/build/bin/genmap /usr/local/bin/genmap - -FROM debian:bookworm-slim - -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates \ - && rm -rf /var/lib/apt/lists/* - -COPY --from=builder /usr/local/bin/genmap /usr/local/bin/genmap +# syntax=docker/dockerfile:1 + +FROM ubuntu:22.04 AS builder + +ENV DEBIAN_FRONTEND=noninteractive + +ARG GENMAP_REPO=https://github.com/cpockrandt/genmap.git +ARG GENMAP_REF=genmap-v1.3.0 + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + build-essential \ + ca-certificates \ + cmake \ + git \ + zlib1g-dev && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /src +RUN git clone --depth 1 --branch "${GENMAP_REF}" "${GENMAP_REPO}" /src/genmap && \ + cd /src/genmap && \ + git -c url."https://github.com/".insteadOf=git://github.com/ submodule update --init --recursive --depth 1 + +WORKDIR /src/genmap +RUN cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DGENMAP_NATIVE_BUILD=OFF && \ + cmake --build build --target genmap -j"$(nproc)" && \ + cmake --install build --prefix /opt/genmap + +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + ca-certificates \ + libgomp1 \ + libstdc++6 && \ + rm -rf /var/lib/apt/lists/* + +COPY --from=builder /opt/genmap /opt/genmap +ENV PATH="/opt/genmap/bin:${PATH}" + WORKDIR /data -ENTRYPOINT ["/usr/local/bin/genmap"] -CMD ["--help"] +ENTRYPOINT ["genmap"] diff --git a/README.md b/README.md index df2c648..f77220b 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,18 @@ # genmap -Small compatibility-focused container for `genmap`. +Container image for `genmap` built from upstream source. ## Quick Usage +```bash +docker run --rm docker.io/picotainers/genmap:latest --help +``` +## Usage ```bash -# Pull the image -docker pull docker.io/picotainers/genmap:latest +# Run in current directory +docker run --rm -v "$(pwd):/data" -w /data docker.io/picotainers/genmap:latest --help +``` -# Run the tool -docker run --rm -v "$(pwd):/data" docker.io/picotainers/genmap:latest --help +## Building +```bash +docker build -t docker.io/picotainers/genmap:latest . ```