Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 27 additions & 8 deletions .github/workflows/build-publish.yml
Original file line number Diff line number Diff line change
@@ -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 }}
69 changes: 43 additions & 26 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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"]
16 changes: 11 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -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 .
```