Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
96aee91
Add Apache-2.0 LICENSE
runleveldev Jun 14, 2026
7f8eaea
Make manager units packaging-friendly
runleveldev Jun 14, 2026
7c1a1f6
Add create-a-container packaging (opensource-server)
runleveldev Jun 14, 2026
c5aa71d
Add mie-opensource-landing packaging (opensource-docs)
runleveldev Jun 14, 2026
a5d66bd
Add pull-config packaging (opensource-agent)
runleveldev Jun 14, 2026
c6861dc
Replace top-level Makefile with component delegation
runleveldev Jun 14, 2026
1bb1cc3
Build images from nfpm packages + stage release apt source
runleveldev Jun 14, 2026
2d3775e
Use component make targets in compose dev services
runleveldev Jun 14, 2026
e04a67c
Add release workflow and expand image build triggers (Commit A)
runleveldev Jun 14, 2026
1b419f5
Tag images :latest only on non-prerelease releases (Commit B)
runleveldev Jun 14, 2026
58464de
Document the release pipeline; refresh stale docs
runleveldev Jun 14, 2026
a33967e
Refine opensource-server packaging; move DB init to manager image
runleveldev Jun 14, 2026
9c50c49
Stop make package from mutating build-root in docs and agent
runleveldev Jun 14, 2026
59653e4
Install package debs via RUN --mount; leave apt source in place
runleveldev Jun 14, 2026
3258885
Revert compose dev services to built-in tooling
runleveldev Jun 14, 2026
142ff57
Update release-pipeline docs for packaging refinements
runleveldev Jun 14, 2026
3829e6e
pull-config: drop config tagging; stage to DESTDIR, not hard-coded bu…
runleveldev Jun 14, 2026
5976293
Stage to DESTDIR instead of hard-coded build-root in docs and server
runleveldev Jun 14, 2026
023bcec
Make docs and agent nfpm.yaml DRY via expand:true; rename staging dir
runleveldev Jun 14, 2026
a9cc2ba
create-a-container: move systemd units and maintainer scripts to cont…
runleveldev Jun 14, 2026
9152ca0
Remove apt-get update guards; rely on flat-repo Packages on every rel…
runleveldev Jun 14, 2026
1945952
make clean: remove built packages
runleveldev Jun 14, 2026
d5806ca
Fix package version on tagless/shallow checkouts
runleveldev Jun 14, 2026
896a497
Trigger release workflow from a published release; upload assets to it
runleveldev Jun 14, 2026
b6c8994
Emit plain semver as VERSION; let nfpm render per-format
runleveldev Jun 14, 2026
a770732
Drop the v prefix from version handling
runleveldev Jun 14, 2026
a0e4411
docs: use unprefixed semver tags in release pipeline
runleveldev Jun 14, 2026
dd24d6d
Remove the 0.0.0 version fallback
runleveldev Jun 14, 2026
1772c3a
Stop auto-tagging :latest on prereleases
runleveldev Jun 14, 2026
cea0ce2
Parse version parts from git; compose per-format version for nfpm
runleveldev Jun 14, 2026
25c7957
Consolidate version construction into ./package-version
runleveldev Jun 14, 2026
b954b6d
Switch packaging from nfpm to classic fpm
runleveldev Jun 14, 2026
6804269
Simplify fpm invocation
runleveldev Jun 14, 2026
c7c22f7
Install fpm in the builder image instead of nfpm
runleveldev Jun 14, 2026
0b0f744
Document fpm packaging in the release pipeline
runleveldev Jun 14, 2026
f11560e
remove legacy pull-config installer
runleveldev Jun 14, 2026
e908ca9
Make help the default goal in every Makefile
runleveldev Jun 14, 2026
4329e32
cleanup
runleveldev Jun 14, 2026
a7f29c7
Ignore .pkg packaging staging dir in Docker context
runleveldev Jun 16, 2026
f0882e5
Build images on push to main and on PRs only
runleveldev Jun 16, 2026
67b06c9
Fix release-pipeline doc: help is the default goal; v prefix optional
runleveldev Jun 16, 2026
b9f1112
cleanup
runleveldev Jun 18, 2026
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
12 changes: 12 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,17 @@
/create-a-container/certs/*
!/create-a-container/certs/.gitignore
/create-a-container/.env
/create-a-container/client/dist
/mie-opensource-landing/build
/mie-opensource-landing/site
/mie-opensource-landing/.venv
/mie-opensource-landing/.cache
**/node_modules
**/__pycache__

# packaging build artifacts (rebuilt inside the builder image)
**/.pkg
/dist
**/*.deb
**/*.rpm
**/*.apk
37 changes: 20 additions & 17 deletions .github/workflows/build-images.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,21 @@
name: Build and Push Images

on:
# Build on pushes to the default branch (merges) and on every pull request
# update. Feature-branch pushes are covered by their PR, avoiding duplicate
# builds and registry churn. No paths filter, so doc-only changes still
# rebuild the images.
push:
branches:
- '**'
tags:
- '**'
paths:
- 'images/**'
- 'mie-opensource-landing/**'
- 'Makefile'
- main
pull_request:
types: [opened, synchronize, reopened, closed]
Comment thread
runleveldev marked this conversation as resolved.
paths:
- 'images/**'
- 'mie-opensource-landing/**'
- 'Makefile'
schedule:
# Run weekly on Sunday at 11:00 PM UTC (Sunday-Monday night depending on timezone)
- cron: '0 23 * * 0'
workflow_dispatch:
release:
types: [published]

env:
REGISTRY: ghcr.io
Expand All @@ -35,6 +31,7 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false

- name: Set up Docker Buildx
Expand All @@ -53,74 +50,80 @@ jobs:
with:
images: ${{ env.REGISTRY }}/${{ github.repository }}/base
bake-target: base
flavor: latest=false
tags: |
type=sha
type=ref,event=branch
type=ref,event=pr
type=ref,event=tag
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
type=raw,value=latest,enable=${{ github.event_name == 'release' && !github.event.release.prerelease }}

- name: Docker Meta (NodeJS)
id: meta-nodejs
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ github.repository }}/nodejs
bake-target: nodejs
flavor: latest=false
tags: |
type=sha
type=ref,event=branch
type=ref,event=pr
type=ref,event=tag
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
type=raw,value=latest,enable=${{ github.event_name == 'release' && !github.event.release.prerelease }}

- name: Docker Meta (Docs)
id: meta-docs
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ github.repository }}/docs
bake-target: docs
flavor: latest=false
tags: |
type=sha
type=ref,event=branch
type=ref,event=pr
type=ref,event=tag
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
type=raw,value=latest,enable=${{ github.event_name == 'release' && !github.event.release.prerelease }}

- name: Docker Meta (Agent)
id: meta-agent
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ github.repository }}/agent
bake-target: agent
flavor: latest=false
tags: |
type=sha
type=ref,event=branch
type=ref,event=tag
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
type=raw,value=latest,enable=${{ github.event_name == 'release' && !github.event.release.prerelease }}

- name: Docker Meta (Manager)
id: meta-manager
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ github.repository }}/manager
bake-target: manager
flavor: latest=false
tags: |
type=sha
type=ref,event=branch
type=ref,event=tag
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
type=raw,value=latest,enable=${{ github.event_name == 'release' && !github.event.release.prerelease }}

- name: Docker Meta (Proxmox VE)
id: meta-proxmox-ve
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ github.repository }}/proxmox-ve
bake-target: proxmox-ve
flavor: latest=false
tags: |
type=sha
type=ref,event=branch
type=ref,event=tag
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
type=raw,value=latest,enable=${{ github.event_name == 'release' && !github.event.release.prerelease }}

- name: Build and push
uses: docker/bake-action@v5
Expand Down
70 changes: 70 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Release Packages

# Triggered by publishing a GitHub release (full or prerelease). Builds the
# three Debian packages and uploads them to the release that triggered the
# workflow, together with flat APT repository metadata (Packages, Packages.gz)
# so the release can be used directly as an apt source:
#
# deb [trusted=yes] https://github.com/mieweb/opensource-server/releases/latest/download/ ./
#
# The release URLs (releases/latest/download/<file>) serve the flat repo; the
# images ship this source so `apt upgrade` tracks future releases. This
# workflow never creates or modifies the release itself — create the release
# (and choose full vs prerelease) in GitHub first, then this attaches assets.

on:
release:
types: [published]
workflow_dispatch:

jobs:
build-and-release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build packages
uses: docker/bake-action@v5
with:
workdir: ./images
targets: builder
files: |
./docker-bake.hcl
set: |
builder.output=type=local,dest=../dist

- name: Generate flat APT repository metadata
run: |
cd dist/dist
# Scan only the versioned packages so the apt index has no duplicates.
dpkg-scanpackages --multiversion . > Packages
gzip -k9f Packages
# Stable-name aliases for one-off downloads (the _latest URLs resolve
# via releases/latest/download for the newest non-prerelease release).
for pkg in opensource-server opensource-docs opensource-agent; do
f=$(ls ${pkg}_*.deb | head -1)
[ -n "$f" ] && cp -f "$f" "${pkg}_latest.deb"
done
ls -l

- name: Upload assets to the release
if: github.event_name == 'release'
env:
GH_TOKEN: ${{ github.token }}
TAG: ${{ github.event.release.tag_name }}
run: |
gh release upload "$TAG" \
dist/dist/*.deb \
dist/dist/Packages \
dist/dist/Packages.gz \
--repo "${{ github.repository }}" \
--clobber
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@ node_modules
.env
.tmp-verify/
.playwright-mcp/

# packaging build artifacts
/dist/
Loading
Loading