name: release on: push: tags: ["v*"] permissions: contents: read jobs: # builds the source tarball (configure included) and checks tag == configure.ac version dist: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 - name: install autotools run: sudo apt-get update && sudo apt-get install -y autoconf automake - run: autoreconf -fi - name: tag must match version in configure.ac run: | ver=$(./configure --version | head -1 | awk '{print $NF}') test "v$ver" = "$GITHUB_REF_NAME" - run: ./configure && make distcheck - uses: actions/upload-artifact@v7 with: name: dist path: mikusays-*.tar.gz # linux + macos binaries, built from the tarball (so it tests what packagers get) build: needs: dist strategy: fail-fast: false matrix: include: - { name: linux-x86_64, os: ubuntu-24.04, ldflags: "-static" } - { name: linux-aarch64, os: ubuntu-24.04-arm, ldflags: "-static" } - { name: macos-arm64, os: macos-15, ldflags: "" } - { name: macos-x86_64, os: macos-15-intel, ldflags: "" } runs-on: ${{ matrix.os }} env: MACOSX_DEPLOYMENT_TARGET: "11.0" steps: - uses: actions/download-artifact@v8 with: name: dist - name: build and package run: | VERSION=${GITHUB_REF_NAME#v} tar xf mikusays-$VERSION.tar.gz cd mikusays-$VERSION ./configure LDFLAGS="${{ matrix.ldflags }}" make strip mikusays ./mikusays -V ./mikusays "hi" > /dev/null out=mikusays-$VERSION-${{ matrix.name }} mkdir "$out" cp mikusays LICENSE README.md "$out"/ tar czf ../"$out".tar.gz "$out" - uses: actions/upload-artifact@v7 with: name: bin-${{ matrix.name }} path: mikusays-*-${{ matrix.name }}.tar.gz # windows exe via MSYS2/MinGW (configure needs a posix shell) windows: needs: dist runs-on: windows-2025 defaults: run: shell: msys2 {0} steps: - uses: msys2/setup-msys2@v2 with: msystem: UCRT64 install: mingw-w64-ucrt-x86_64-gcc make zip - uses: actions/download-artifact@v8 with: name: dist - name: build and package run: | VERSION=${GITHUB_REF_NAME#v} tar xf mikusays-$VERSION.tar.gz cd mikusays-$VERSION ./configure LDFLAGS="-static" make strip mikusays.exe ./mikusays.exe -V ./mikusays.exe "hi" > /dev/null out=mikusays-$VERSION-windows-x86_64 mkdir "$out" cp mikusays.exe LICENSE README.md "$out"/ zip -r ../"$out".zip "$out" - uses: actions/upload-artifact@v7 with: name: bin-windows-x86_64 path: mikusays-*-windows-x86_64.zip release: needs: [dist, build, windows] runs-on: ubuntu-24.04 permissions: contents: write steps: - uses: actions/download-artifact@v8 with: path: artifacts merge-multiple: true - name: checksums run: cd artifacts && sha256sum * > SHA256SUMS - uses: softprops/action-gh-release@v2 with: files: artifacts/* generate_release_notes: true