feat(ci): publish Docker image to Docker Hub and GHCR
Add dual-registry publishing to both Docker Hub (rootfr/jmap-webmail) and GitHub Container Registry. Multi-arch support for amd64/arm64.
This commit is contained in:
@@ -20,10 +20,6 @@ on:
|
|||||||
tags: ["v*.*.*"]
|
tags: ["v*.*.*"]
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
env:
|
|
||||||
REGISTRY: ghcr.io
|
|
||||||
IMAGE_NAME: ${{ github.repository }}
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-push:
|
build-and-push:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -41,10 +37,16 @@ jobs:
|
|||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Log in to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Log in to GHCR
|
- name: Log in to GHCR
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.REGISTRY }}
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
@@ -52,11 +54,14 @@ jobs:
|
|||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@v5
|
||||||
with:
|
with:
|
||||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
images: |
|
||||||
|
rootfr/jmap-webmail
|
||||||
|
ghcr.io/${{ github.repository }}
|
||||||
tags: |
|
tags: |
|
||||||
type=raw,value=latest,enable={{is_default_branch}}
|
type=raw,value=latest,enable={{is_default_branch}}
|
||||||
type=semver,pattern={{version}}
|
type=semver,pattern={{version}}
|
||||||
type=semver,pattern={{major}}.{{minor}}
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
|
type=sha,prefix=
|
||||||
|
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ This webmail client is designed to work seamlessly with [**Stalwart Mail Server*
|
|||||||
- Persistent language preference
|
- Persistent language preference
|
||||||
|
|
||||||
### Deployment
|
### Deployment
|
||||||
- Pre-built Docker image on [GitHub Container Registry](https://ghcr.io/root-fr/jmap-webmail) (amd64/arm64)
|
- Pre-built Docker image on [Docker Hub](https://hub.docker.com/r/rootfr/jmap-webmail) and [GHCR](https://ghcr.io/root-fr/jmap-webmail) (amd64/arm64)
|
||||||
- Docker support with multi-stage build and standalone output
|
- Docker support with multi-stage build and standalone output
|
||||||
- Runtime environment variables (no rebuild needed for config changes)
|
- Runtime environment variables (no rebuild needed for config changes)
|
||||||
- Health check endpoint for container orchestration
|
- Health check endpoint for container orchestration
|
||||||
@@ -233,6 +233,9 @@ npm start
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Using the pre-built image (recommended)
|
# Using the pre-built image (recommended)
|
||||||
|
docker run -p 3000:3000 -e JMAP_SERVER_URL=https://mail.example.com rootfr/jmap-webmail:latest
|
||||||
|
|
||||||
|
# Or from GHCR
|
||||||
docker run -p 3000:3000 -e JMAP_SERVER_URL=https://mail.example.com ghcr.io/root-fr/jmap-webmail:latest
|
docker run -p 3000:3000 -e JMAP_SERVER_URL=https://mail.example.com ghcr.io/root-fr/jmap-webmail:latest
|
||||||
|
|
||||||
# Or with docker compose
|
# Or with docker compose
|
||||||
|
|||||||
+1
-1
@@ -230,7 +230,7 @@ This document tracks the development status and planned features for JMAP Webmai
|
|||||||
- [x] Health check endpoint
|
- [x] Health check endpoint
|
||||||
- [x] Docker support (multi-stage build, docker-compose, standalone output)
|
- [x] Docker support (multi-stage build, docker-compose, standalone output)
|
||||||
- [x] Structured server-side logger (text/JSON format, configurable level)
|
- [x] Structured server-side logger (text/JSON format, configurable level)
|
||||||
- [x] Pre-built Docker image on GitHub Container Registry (ghcr.io) with multi-arch support (amd64/arm64)
|
- [x] Pre-built Docker image on [Docker Hub](https://hub.docker.com/r/rootfr/jmap-webmail) and [GHCR](https://ghcr.io/root-fr/jmap-webmail) with multi-arch support (amd64/arm64)
|
||||||
- [x] GitHub Actions CI/CD for automated image publishing on releases
|
- [x] GitHub Actions CI/CD for automated image publishing on releases
|
||||||
|
|
||||||
## Planned Features
|
## Planned Features
|
||||||
|
|||||||
Reference in New Issue
Block a user