Domino on Linux/Unix, Troubleshooting, Best Practices, Tips and more ...

alt

Daniel Nashed

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 }}



Links

    Archives


    • [HCL Domino]
    • [Domino on Linux]
    • [Nash!Com]
    • [Daniel Nashed]