summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordavid_eldios_ <[email protected]>2026-10-06 00:34:43 -0300
committerGitHub <[email protected]>2026-10-06 00:34:43 -0300
commite71ac91703992355f74d6e1a697c79cd5c368a68 (patch)
tree44a2199f095f99f482de5505b5004e0c6952ec73
parentdb2786bea963f6bc107375ec240075d72162b1ae (diff)
downloadmikusays-c-e71ac91703992355f74d6e1a697c79cd5c368a68.tar.gz
mikusays-c-e71ac91703992355f74d6e1a697c79cd5c368a68.zip
Add GitHub Actions workflow for release process
-rw-r--r--.github/workflows/release.yml115
1 files changed, 115 insertions, 0 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..2b330d1
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,115 @@
+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