Move CI to Forgejo Actions and drop the GitHub-only files #7
Labels
No labels
Agent
Ignore
Agent
In Progress
Agent
Planned
Agent
Planning
Agent
Ready
Agent
Triage
Compat
Breaking
Kind
Bug
Kind
Documentation
Kind
Enhancement
Kind
Feature
Kind
Security
Kind
Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
lucas/nanoKontroller2#7
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
CI lives in
.github/workflows/build.ymland is written for GitHub-hostedubuntu-latest: it usessudo,actions/upload-artifact, and publishes GitHubReleases with
softprops/action-gh-release. The repository is hosted on Forgejo(
lucas/nanoKontroller2), so this pipeline is dead weight there.The repository also still carries GitHub-specific community files —
.github/FUNDING.ymland
.github/ISSUE_TEMPLATE/{bug_report.md,feature_request.md}— which are to bedropped without Forgejo replacements.
End state:
.github/is gone entirely, and a single Forgejo workflow at.forgejo/workflows/build.ymlproves every pushed commit and every pull requestcompiles. The job runs on the stock
dockerrunner label (a Debian trixieimage with Node.js, as configured on this instance), builds nothing else: no
artifacts, no
.debpackaging, no release publishing.Decisions already made for the implementer (do not revisit):
runs-on: docker, nocontainer:override — the label's own image is used.actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98(bare form, no URL prefix).lukka/get-cmake, referenced by absolute URL and pinned to commitf86dd60acae0d132056913e248bdabf0e0580b7a(release v4.4.5), keeping the existingcmakeVersion: "~4.2.2"input.v9.1.0andv0.9.8.pushonbranches: ["**"]andpull_requestonbranches: ["**"]. No tag trigger.Plan
Approach
Step 1 — Delete the GitHub directory outright.
Remove all four tracked files and the directory:
.github/workflows/build.yml.github/FUNDING.yml.github/ISSUE_TEMPLATE/bug_report.md.github/ISSUE_TEMPLATE/feature_request.mdNo Forgejo issue templates (
.forgejo/issue_template/) and no funding file arecreated in their place — dropping them is the requested outcome.
README.mdcontains no CI badge and no reference to these files (checked), so nothing else
needs touching.
Step 2 — Create
.forgejo/workflows/build.ymlwith exactly this content.Why each deviation from the old workflow exists:
sudoanywhere: the job runs as root inside the runner's container, andsudois not installed in the Node base images.libwireplumber-0.5-dev0.5.8-2, whichprovides the
wireplumber-0.5pkg-config file required byCMakeLists.txt:17,and pulls in
libpipewire-0.3-devandlibglib2.0-devas dependencies. Thewhole meson clone/build/install block, and with it
meson,ninja-build,libspa-0.2-dev,libpipewire-0.3-dev,liblua5.4-devandlibsystemd-dev,are gone. The old
Verify Installationstep (pkg-config --modversion wireplumber-0.5) is dropped too: the configure step fails on the samecondition, one step later.
librtmidi-devis 6.0.0-2 — the exact version theold workflow compiled from source — and provides the
rtmidipkg-config moduleused at
CMakeLists.txt:21.libconcurrentqueue-dev1.0.4 installsheaders at
/usr/include/concurrentqueue/moodycamel/, matching the include insrc/main.cpp:8(<concurrentqueue/moodycamel/concurrentqueue.h>), plusconcurrentqueueConfig.cmakeforfind_package(concurrentqueue REQUIRED).they are header-only, so
cmake --installwithout a build step is sufficient(as today).
magic_enumis installed with no extra options, exactly as thecurrent workflow does.
Determine versionstep fed-DPROJECT_VERSION_STRINGonly for CPack. No source file references a version(verified: no
versionmatch undersrc/orincludes/), and packaging isgone, so configure uses the
1.0.0fallback atCMakeLists.txt:3-5.pass/fail verdict, which also removes any dependence on this instance's
artifact-storage support.
Critical files & anchors
.github/— all four files deleted; the directory must not survive..forgejo/workflows/build.yml— the only new file.CMakeLists.txt:1—cmake_minimum_required(VERSION 4.2); trixie's CMake is3.31, which is why the
get-cmakestep is mandatory and must run before theglaze/magic_enum install steps (they invoke
cmake).CMakeLists.txt:12-21— thefind_package/pkg_check_moduleslist that the aptpackage set must satisfy: glaze, cxxopts, concurrentqueue,
wireplumber-0.5,glib-2.0,gobject-2.0,alsa,rtmidi.Verification
Forgejo Actions cannot be exercised locally; verification is the run itself.
origin.proven is "a Forgejo runner builds this project from a clean container":
forgejo_read_commit_statuson the pushed head SHA → combined statesuccess,all checks finished.
forgejo_list_run_jobs→forgejo_read_job_logfor the build job, and checkin the log that:
Install system dependenciesstep installedlibwireplumber-0.5-devand
librtmidi-devwithout error (nosudo: command not found, noUnable to locate package),Configurestep printed noCould NOT find/None of the required 'wireplumber-0.5' foundlines and ended withGenerating done,Buildstep ended with a linkednanoKontroller2target and the jobexited 0.
.github/resolves to nothing on the branch(
git_statusshows the four deletions staged/committed;forgejo_read_file_at_refon
.github/workflows/build.ymlat the branch head returns not-found).If the run never starts, the cause is Actions not being enabled for this
repository or no runner carrying the
dockerlabel being online — that is aForgejo administration matter outside this change; report it rather than
reworking the workflow.
Assumptions & contingencies
dockerlabel's image is Debian trixie or newer, and contains Node.js(stated by the repository owner;
unverifiedfrom the repo). Ifapt-get installfails withUnable to locate package libwireplumber-0.5-devorgcc-14, the image is older: addcontainer: image: node:24-trixieunderruns-on: dockerin the job and re-run, changing nothing else.built. Same 0.5 series, but
unverifiedagainst this source tree. Ifconfigure or compilation fails on missing WirePlumber symbols/headers, drop
libwireplumber-0.5-devfrom the apt list, addmeson,ninja-build,libspa-0.2-dev,libpipewire-0.3-dev,liblua5.4-devandlibsystemd-dev,and restore the old from-source build before the
Configurestep:git clone https://gitlab.freedesktop.org/pipewire/wireplumber.git,git checkout 0.5.14,meson setup build --prefix=/usr --buildtype=release -Dsystem-lua=true -Dintrospection=disabled -Ddoc=disabled,meson compile -C build,meson install -C build(nosudo).uses: actions/checkout@0c366fd…resolves on this instance via the runner'sdefault actions URL. If the step fails to resolve the action, prefix it with the
mirror it should come from (e.g.
https://code.forgejo.org/actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98),keeping the same commit.
get-cmake, glaze andmagic_enum. If outbound access is blocked, that is an infrastructure
prerequisite, not a workflow defect — report it instead of substituting
dependency sources.
the newest v9.x tag that builds and record the tag in the workflow; do not
revert to tracking
main.