Docker on GitHub Actions
Docker images are useful for reproducibility and ease of setup and for software binary distribution on platforms not natively available on GitHub Actions runner images. While one can setup a custom Docker image, it’s often possible to simply use an existing official image from Docker Hub.
This example GitHub Actions workflow uses the Alpine Linux image with the MUSL C library to build a statically-linked binary.
name: alpine-musl
on: [push]
jobs:
musl:
container: alpine
steps:
- uses: actions/checkout@v4
- name: install build tools
run: apk add --no-cache ninja-build cmake gfortran openmpi-dev
- name: print MUSL version
continue-on-error: true
run: ldd --version
- name: CMake configure
run: cmake -B build
- name: CMake build
run: cmake --build build
# Good idea to ensure self-tests pass before packaging
- name: CMake test
run: ctest --test-dir build
(Optional) If a CPack archive is desired add step:
- name: CMake package
if: success()
run: cpack --config build/CPackConfig.cmake
The binary artifact or CPack archive can be uploaded by step upload-artifact:
- name: .exe for release
uses: actions/upload-artifact@v4
if: success()
with:
name: my.exe
path: build/my.exe