Skip to content
Merged
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
6 changes: 3 additions & 3 deletions .docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1.7

# Builder: hardened Alpine + dev toolchain
FROM dhi.io/alpine-base:3.23-alpine3.23-dev AS builder
FROM dhi.io/alpine-base:3.24-alpine3.24-dev AS builder

USER root

Expand All @@ -24,7 +24,7 @@ RUN apk add --no-cache \
pkgconf \
ca-certificates

ARG RUST_VERSION=1.90.0
ARG RUST_VERSION=1.96.0
ARG TARGETARCH
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
Expand Down Expand Up @@ -99,7 +99,7 @@ EOF

# Runtime: minimal hardened Alpine. Ships only busybox + musl + ca-certs.
# DHI images run as the 'nonroot' user (uid/gid 65532) by default.
FROM dhi.io/alpine-base:3.23
FROM dhi.io/alpine-base:3.24

# Lay down the binary and pre-create mount-point directories with the
# correct ownership. Named volumes inherit this ownership on first use,
Expand Down
47 changes: 47 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: ci

on:
push:
branches:
- "**"

jobs:
build:
name: build (${{ matrix.platform }})
runs-on: ${{ matrix.runner }}
permissions:
contents: read
strategy:
fail-fast: false
matrix:
include:
- platform: linux/amd64
runner: ubuntu-latest
- platform: linux/arm64
runner: ubuntu-24.04-arm

steps:
- name: Checkout
uses: actions/checkout@v7.0.1

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4.2.0

# dhi.io is gated: the builder pulls dhi.io/alpine-base:*-dev and
# the runtime stage pulls dhi.io/alpine-base:3.23.
- name: Login to Docker Hub (for dhi.io)
uses: docker/login-action@v4.5.1
with:
registry: dhi.io
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build image (no push)
uses: docker/build-push-action@v7.3.0
with:
context: .
file: .docker/Dockerfile
platforms: ${{ matrix.platform }}
cache-from: type=gha,scope=${{ matrix.platform }}
cache-to: type=gha,scope=${{ matrix.platform }},mode=max
push: false
26 changes: 13 additions & 13 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v7.0.1

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
uses: docker/setup-buildx-action@v4.2.0

# dhi.io is gated: the builder pulls dhi.io/alpine-base:*-dev and
# the runtime stage pulls dhi.io/alpine-base:3.23.
- name: Login to Docker Hub (for dhi.io)
uses: docker/login-action@v4
uses: docker/login-action@v4.5.1
with:
registry: dhi.io
username: ${{ secrets.DOCKERHUB_USERNAME }}
Expand All @@ -45,21 +45,21 @@ jobs:
# Push login to docker.io (default registry). Same creds as dhi.io,
# but a separate registry endpoint so we can push the public image.
- name: Login to Docker Hub (push)
uses: docker/login-action@v4
uses: docker/login-action@v4.5.1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Login to GHCR
uses: docker/login-action@v4
uses: docker/login-action@v4.5.1
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract image metadata
id: meta
uses: docker/metadata-action@v6
uses: docker/metadata-action@v6.2.0
with:
images: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
Expand All @@ -69,7 +69,7 @@ jobs:
# job below stitches the digests into one multi-arch manifest.
- name: Build and push by digest
id: build
uses: docker/build-push-action@v7
uses: docker/build-push-action@v7.3.0
with:
context: .
file: .docker/Dockerfile
Expand All @@ -86,7 +86,7 @@ jobs:
touch "/tmp/digests/${digest#sha256:}"

- name: Upload digest
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v7.0.1
with:
name: digest-${{ strategy.job-index }}
path: /tmp/digests/*
Expand All @@ -103,31 +103,31 @@ jobs:

steps:
- name: Download digests
uses: actions/download-artifact@v8
uses: actions/download-artifact@v8.0.1
with:
path: /tmp/digests
pattern: digest-*
merge-multiple: true

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
uses: docker/setup-buildx-action@v4.2.0

- name: Login to GHCR
uses: docker/login-action@v4
uses: docker/login-action@v4.5.1
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Login to Docker Hub (push)
uses: docker/login-action@v4
uses: docker/login-action@v4.5.1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Extract image metadata
id: meta
uses: docker/metadata-action@v6
uses: docker/metadata-action@v6.2.0
with:
images: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@ target/
.env
.DS_Store
.certs/

# used to locally test with real email (acme don't allow fake email)
example/local.toml
Loading