The slopsmith org was deleted in the DMCA relaunch; core + plugins now live under the private got-feedback org. Repoint the whole build: - core clone (nightly.yml, build-common.sh) -> got-feedback/feedback, authenticated via GH_CLONE_TOKEN (a PAT with read on the private org; threaded through build.yml/nightly.yml/release.yml). Local builds without it fall back to the git credential helper. - bundled-plugin list -> got-feedback/feedback-plugin-*, pruned to the set that exists in the org: drops the removed extraction plugins (profileimport, tones, sloppak-converter) and not-yet-rehomed ones (nam-rig-builder, tabimport); 34 plugins bundled. - dirname derivation strips the new feedback-plugin- prefix. - ghcr image -> ghcr.io/got-feedback/feedback; VERSION-sync dispatch -> got-feedback/feedback; soundfont + update FEED_URL + docs -> got-feedback/feedback-desktop. Two prerequisites remain (owner-only): set the GH_CLONE_TOKEN secret, and re-upload the soundfonts-v1 release assets to feedback-desktop. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| devcontainer.json | ||
| Dockerfile | ||
| README.md | ||
DevContainer build environment
Everything needed to build Slopsmith Desktop in a reproducible, CI-identical environment using Docker.
Why
Slopsmith Desktop compiles a native C++ audio engine (JUCE), bundles a
portable Python runtime, and packages via electron-builder — all of
which can produce subtly different artifacts on different distros
(glibc, system library versions, Node/Python provenance). This
container pins everything to what the GitHub Actions ubuntu-22.04
runner uses so local AppImage builds match CI.
Contents
| File | Purpose |
|---|---|
Dockerfile |
Ubuntu 22.04 base image; versions read from ../.build-config.json |
devcontainer.json |
VS Code Dev Containers configuration |
README.md |
This file |
The Docker-wrapped one-shot build lives at
../scripts/build-linux-release.sh.
Versions of Node, Python, .NET, Electron, CMake, and the Ubuntu base
are defined in ../.build-config.json. CI and
this container both read from it, so no version drift.
Prerequisites
- Docker installed and running
- The Slopsmith server
repository cloned adjacent to this one:
your-projects/ ├── slopsmith/ └── slopsmith-desktop/
Quick start
VS Code (recommended)
With the Dev Containers extension:
- Open the project in VS Code
- Run Dev Containers: Reopen in Container
- Wait for first-time image build +
npm install(viapostCreateCommand) - Build the release:
npm run dist:linux - Artifacts in
release/are visible on the host
Docker only
./scripts/build-linux-release.sh
Builds the image, runs the build inside a container, and emits
.AppImage + .deb into release/ on the host.
Build output
| File | Description |
|---|---|
release/*.AppImage |
Portable Linux executable (self-contained) |
release/*.deb |
Debian/Ubuntu package |
Both appear on your host filesystem — test them immediately without touching the container.
How it works
The image
The Dockerfile layers onto mcr.microsoft.com/devcontainers/base:ubuntu-22.04:
- Node.js from NodeSource, version per
.build-config.json - Python 3.12 from the deadsnakes PPA (Ubuntu 22.04's main repos only ship 3.10)
- .NET via the upstream
dot.netinstall script - System libraries from
.packages/apt.txt
Mounts
Two bind mounts:
slopsmith-desktop→/workspace— source code, node_modules, build output. Edits are reflected immediately on the host.../slopsmith→/workspaces/slopsmith— the Slopsmith server repo thatbundle-slopsmith.shcopies from at bundle time.
Container lifecycle
The one-shot build container is not auto-removed (--rm is
deliberately omitted from build-linux-release.sh). This lets you
attach a shell after a failed build to diagnose:
docker exec -it <container-name> /bin/bash
Clean up when done:
docker stop <container-name> && docker rm <container-name>
The script prints the container name on completion or failure.
Troubleshooting
"Slopsmith repository not found"
Clone the server repo adjacent:
cd ..
git clone https://github.com/got-feedback/feedback.git
cd slopsmith-desktop
Permission errors on release/
UID/GID mismatch between your host user and the container's vscode
user (UID 1000). If needed:
sudo chown -R "$(id -u):$(id -g)" release/
First build is slow
First build downloads Docker layers, installs apt packages, and bootstraps node_modules. Subsequent builds use layer caching.
Out of disk space
Electron builds are large (expect ~10 GB free). Clean old images:
docker system prune -a
CI vs local container
Intentional differences:
- No publishing secrets (
--publish never) - Host architecture (GitHub Actions also builds for macOS/Windows)
- No release-draft creation
Everything else — system deps, Node/Python/.NET versions, the bundle
pipeline — is driven by the same .build-config.json + .packages/
files the CI workflow reads.
Modifying the build environment
- System packages: edit
.packages/apt.txt(brew.txt/choco.txtfor the other platforms) - Tool versions: edit
.build-config.json - Image-level changes: edit
Dockerfile; rebuild with./scripts/build-linux-release.sh(or VS Code: Dev Containers: Rebuild Container)
See also
- GitHub Actions workflow — what this container replicates
- Build architecture — full script layout + conventions
../package.json— the npm scripts that drive the build