From e71ac91703992355f74d6e1a697c79cd5c368a68 Mon Sep 17 00:00:00 2001 From: david_eldios_ Date: Tue, 6 Oct 2026 00:34:43 -0300 Subject: Add GitHub Actions workflow for release process --- .github/workflows/release.yml | 115 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 .github/workflows/release.yml 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 -- cgit v1.3-2-g0d8e