Skip to content

Commit 28ce645

Browse files
ci: GHCR multi-arch Docker publish, README badges and PQ description (#9)
Co-authored-by: Larsen Close <lclose@quovis.io>
1 parent 2227d9c commit 28ce645

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

.github/workflows/ghcr-publish.yml

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
name: Docker GHCR Publish
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v[0-9]+.[0-9]+.[0-9]*'
7+
8+
permissions:
9+
packages: write
10+
contents: read
11+
12+
env:
13+
REGISTRY: ghcr.io
14+
IMAGE_NAME: disentangle-network/nebula-pq
15+
16+
jobs:
17+
build-binaries:
18+
runs-on: ubuntu-latest
19+
strategy:
20+
matrix:
21+
include:
22+
- goos: linux
23+
goarch: amd64
24+
- goos: linux
25+
goarch: arm64
26+
steps:
27+
- uses: actions/checkout@v4
28+
- uses: actions/setup-go@v5
29+
with:
30+
go-version: '1.23'
31+
- name: Build
32+
env:
33+
GOOS: ${{ matrix.goos }}
34+
GOARCH: ${{ matrix.goarch }}
35+
run: |
36+
make BUILD_NUMBER="${GITHUB_REF#refs/tags/v}" \
37+
build/${{ matrix.goos }}-${{ matrix.goarch }}/nebula \
38+
build/${{ matrix.goos }}-${{ matrix.goarch }}/nebula-cert
39+
- name: Upload artifacts
40+
uses: actions/upload-artifact@v4
41+
with:
42+
name: build-${{ matrix.goos }}-${{ matrix.goarch }}
43+
path: build/${{ matrix.goos }}-${{ matrix.goarch }}/
44+
45+
push-image:
46+
needs: build-binaries
47+
runs-on: ubuntu-latest
48+
steps:
49+
- uses: actions/checkout@v4
50+
51+
- name: Download amd64 artifacts
52+
uses: actions/download-artifact@v4
53+
with:
54+
name: build-linux-amd64
55+
path: build/linux-amd64/
56+
57+
- name: Download arm64 artifacts
58+
uses: actions/download-artifact@v4
59+
with:
60+
name: build-linux-arm64
61+
path: build/linux-arm64/
62+
63+
- name: Set up QEMU
64+
uses: docker/setup-qemu-action@v3
65+
66+
- name: Set up Docker Buildx
67+
uses: docker/setup-buildx-action@v3
68+
69+
- name: Login to GHCR
70+
uses: docker/login-action@v3
71+
with:
72+
registry: ${{ env.REGISTRY }}
73+
username: ${{ github.actor }}
74+
password: ${{ secrets.GITHUB_TOKEN }}
75+
76+
- name: Extract version
77+
id: version
78+
run: echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
79+
80+
- name: Build and push multi-arch
81+
uses: docker/build-push-action@v6
82+
with:
83+
context: .
84+
file: docker/Dockerfile
85+
push: true
86+
platforms: linux/amd64,linux/arm64
87+
tags: |
88+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.version }}
89+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest

README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
# Nebula-PQ
2+
3+
[![Build and test](https://github.com/disentangle-network/nebula-pq/actions/workflows/test.yml/badge.svg)](https://github.com/disentangle-network/nebula-pq/actions/workflows/test.yml)
4+
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
5+
6+
**Post-quantum fork of [Nebula](https://github.com/slackhq/nebula)** with hybrid X25519 + ML-KEM-1024 key exchange and ML-DSA-87 certificate support. Drop-in replacement — all existing Nebula configurations work unchanged; PQ curves activate only when explicitly configured.
7+
8+
### PQ Additions
9+
- Hybrid handshake: X25519 classical + ML-KEM-1024 post-quantum key encapsulation
10+
- ML-DSA-87 certificate authority and node certificates via `nebula-cert`
11+
- Backward-compatible: classical and PQ nodes can coexist on the same mesh
12+
- Multi-arch Docker image: `ghcr.io/disentangle-network/nebula-pq`
13+
14+
---
15+
116
## What is Nebula?
217
Nebula is a scalable overlay networking tool with a focus on performance, simplicity and security.
318
It lets you seamlessly connect computers anywhere in the world. Nebula is portable, and runs on Linux, OSX, Windows, iOS, and Android.

0 commit comments

Comments
 (0)