GitHub flows to build releases
Daniel Nashed – 1 May 2025 22:37:03
There are are couple of OpenSource projects I am working on.
Some of them require to build Linux binaries. Those binaries would depend on glibc.
For all projects which don't require Domino C-API integration. an Alpine based build can help to build static binaries, which should run on all current Linux distributions.
But still those binaries would need to be build somewhere and published as a release.
The first addition I made is a build container I am currently testing with.
This build option is also available on GitHub in Action flows.
GitHub does not support a Apline native. But in a Ubuntu build environment you can run a docker based Alpine build environment.
This is pretty cool. You can build C++ applications and also Go applications (which I will need soon for another project).
I have created a test repository to play around with GitHub actions first --> https://github.com/nashcom/buil-test
Here is a sample release.yml.
This is pretty awesome and available with a free GitHub account!
I have started to add it to the first projects.
The Domino Start Script project uses it.
And also the Domino Borg Backup project uses it.
I also added it to the Domino container image to automatically install it when you select the build option.
There are more projects to update and there is more to come..
-- Daniel
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: Prepare
run: |
mkdir -p dist/linux-bin
- name: Build Go binary
run: |
go build -gccgoflags=-static -o dist/linux-bin/hello_go go/hello.go
- name: Build C++ binary (Alpine static)
run: |
docker run --rm \
-v "$PWD":/src \
-w /src/cpp \
alpine:latest \
sh -c "apk add --no-cache g++ musl-dev make && make"
cp cpp/hello dist/linux-bin/hello_cpp
- name: Create add-on package
run: |
TAR_NAME=hello-$(cat version.txt).taz
cd dist
tar -cvzf "../$TAR_NAME" *
cd ..
sha256sum "$TAR_NAME" | cut -f1 -d" " > checksum.txt
- name: Upload Release Assets
uses: softprops/action-gh-release@v1
with:
files: |
*.taz
checksum.txt
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- Comments [0]